r4811: now that the event context is at the socket level, the event cleanup
authorAndrew Tridgell <tridge@samba.org>
Mon, 17 Jan 2005 22:53:37 +0000 (22:53 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:08:58 +0000 (13:08 -0500)
should be there too
(This used to be commit 058ae5527e3daeb50eeea9e0ecee858c84e7e17d)

source4/libcli/raw/clisocket.c
source4/libcli/raw/clitransport.c

index 66555695d304a2caf27f2621522f406a5571a0de..0edb95e1a135fcbd95308bcdbfad0f1505768d7c 100644 (file)
@@ -35,6 +35,17 @@ struct clisocket_connect {
        const char *dest_host;
 };
 
+
+static int smbcli_sock_destructor(void *ptr)
+{
+       struct smbcli_socket *sock = talloc_get_type(ptr, struct smbcli_socket);
+
+       if (sock->event.fde && sock->event.ctx) {
+               event_remove_fd(sock->event.ctx, sock->event.fde);
+       }
+       return 0;
+}
+
 /*
   create a smbcli_socket context
 */
@@ -53,6 +64,8 @@ struct smbcli_socket *smbcli_sock_init(TALLOC_CTX *mem_ctx)
                return NULL;
        }
 
+       talloc_set_destructor(sock, smbcli_sock_destructor);
+
        return sock;
 }
 
index 55a7e25f723d538dd5225146e76c58fe9c41ca42..eb9d2dde782ff742f9f6ce9a5a724ea6c5e8bf15 100644 (file)
@@ -54,7 +54,6 @@ static int transport_destructor(void *ptr)
        struct smbcli_transport *transport = ptr;
 
        smbcli_transport_dead(transport);
-       event_remove_fd(transport->socket->event.ctx, transport->socket->event.fde);
        event_remove_timed(transport->socket->event.ctx, transport->socket->event.te);
        return 0;
 }