]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Do not leak the DNS server port structure.
authorNick Mathewson <nickm@torproject.org>
Thu, 18 Dec 2008 15:00:18 +0000 (15:00 +0000)
committerNick Mathewson <nickm@torproject.org>
Thu, 18 Dec 2008 15:00:18 +0000 (15:00 +0000)
svn:r17680

src/or/eventdns.c

index 6a56b508bed08c9f9d480574d3b49d20eb0e2c5b..2b28b2bf9415905ab332d47bcc8c348aeaa231e4 100644 (file)
@@ -1598,9 +1598,9 @@ evdns_add_server_port(int socket, int is_tcp, evdns_request_callback_fn_type cb,
 void
 evdns_close_server_port(struct evdns_server_port *port)
 {
+       port->closing = 1;
        if (--port->refcnt == 0)
                server_port_free(port);
-       port->closing = 1;
 }
 
 /* exported function */
@@ -1943,7 +1943,8 @@ server_request_free(struct server_request *req)
        return (0);
 }
 
-/* Free all storage held by an evdns_server_port.  Only called when  */
+/* Free all storage held by an evdns_server_port.  Only called when the
+ * reference count is down to 0. */
 static void
 server_port_free(struct evdns_server_port *port)
 {
@@ -1956,8 +1957,8 @@ server_port_free(struct evdns_server_port *port)
        }
        (void) event_del(&port->event);
        CLEAR(&port->event);
-       /* XXXX021 actually free the port? -NM */
-       /* XXXX yes, and fix up evdns_close_server_port to dtrt. -NM */
+       CLEAR(port);
+       free(port);
 }
 
 /* exported function */