|
@@ -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 */
|