summaryrefslogtreecommitdiff
path: root/source4/libcli/nbt/nbtsocket.c
diff options
context:
space:
mode:
Diffstat (limited to 'source4/libcli/nbt/nbtsocket.c')
-rw-r--r--source4/libcli/nbt/nbtsocket.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/source4/libcli/nbt/nbtsocket.c b/source4/libcli/nbt/nbtsocket.c
index c1e30fc245..0931de63c8 100644
--- a/source4/libcli/nbt/nbtsocket.c
+++ b/source4/libcli/nbt/nbtsocket.c
@@ -45,6 +45,7 @@ static int nbt_name_request_destructor(struct nbt_name_request *req)
req->name_trn_id = 0;
}
if (req->te) {
+ talloc_free(req->te);
req->te = NULL;
}
if (req->nbtsock->send_queue == NULL) {
@@ -102,6 +103,8 @@ failed:
talloc_free(tmp_ctx);
if (req->async.fn) {
req->async.fn(req);
+ } else if (req->is_reply) {
+ talloc_free(req);
}
return;
}
@@ -140,6 +143,8 @@ static void nbt_name_socket_timeout(struct event_context *ev, struct timed_event
}
if (req->async.fn) {
req->async.fn(req);
+ } else if (req->is_reply) {
+ talloc_free(req);
}
}
@@ -462,9 +467,7 @@ NTSTATUS nbt_name_request_recv(struct nbt_name_request *req)
if (event_loop_once(req->nbtsock->event_ctx) != 0) {
req->state = NBT_REQUEST_ERROR;
req->status = NT_STATUS_UNEXPECTED_NETWORK_ERROR;
- if (req->async.fn) {
- req->async.fn(req);
- }
+ break;
}
}
return req->status;