summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2015-05-21 02:20:00 +0200
committerStefan Metzmacher <metze@samba.org>2015-06-12 17:08:17 +0200
commit9ccf8e6d36618498c4952bb1d4b74152f75ab793 (patch)
tree0b620ac30baef23a1d562c902fa6cd5941ffd9c3
parent058d84747e75a5f97a02e31bac9c8d0d147174bc (diff)
downloadsamba-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.c13
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;