diff options
author | Stefan Metzmacher <metze@samba.org> | 2015-05-21 02:20:00 +0200 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2015-06-12 17:08:17 +0200 |
commit | 9ccf8e6d36618498c4952bb1d4b74152f75ab793 (patch) | |
tree | 0b620ac30baef23a1d562c902fa6cd5941ffd9c3 | |
parent | 058d84747e75a5f97a02e31bac9c8d0d147174bc (diff) | |
download | samba-9ccf8e6d36618498c4952bb1d4b74152f75ab793.tar.gz |
s3:libsmb: let nb_packet_server_destructor() explicitly destroy the tevent_fd
The need to destroy the tevent_fd before closing the socket fd.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=11316
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
-rw-r--r-- | source3/libsmb/unexpected.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/source3/libsmb/unexpected.c b/source3/libsmb/unexpected.c index ee1c3601cae..40c09c38d75 100644 --- a/source3/libsmb/unexpected.c +++ b/source3/libsmb/unexpected.c @@ -41,6 +41,7 @@ struct nb_packet_client; struct nb_packet_server { struct tevent_context *ev; int listen_sock; + struct tevent_fd *listen_fde; int max_clients; int num_clients; struct nb_packet_client *clients; @@ -71,7 +72,6 @@ NTSTATUS nb_packet_server_create(TALLOC_CTX *mem_ctx, struct nb_packet_server **presult) { struct nb_packet_server *result; - struct tevent_fd *fde; NTSTATUS status; int rc; @@ -96,9 +96,12 @@ NTSTATUS nb_packet_server_create(TALLOC_CTX *mem_ctx, } talloc_set_destructor(result, nb_packet_server_destructor); - fde = tevent_add_fd(ev, result, result->listen_sock, TEVENT_FD_READ, - nb_packet_server_listener, result); - if (fde == NULL) { + result->listen_fde = tevent_add_fd(ev, result, + result->listen_sock, + TEVENT_FD_READ, + nb_packet_server_listener, + result); + if (result->listen_fde == NULL) { status = NT_STATUS_NO_MEMORY; goto fail; } @@ -112,6 +115,8 @@ fail: static int nb_packet_server_destructor(struct nb_packet_server *s) { + TALLOC_FREE(s->listen_fde); + if (s->listen_sock != -1) { close(s->listen_sock); s->listen_sock = -1; |