summaryrefslogtreecommitdiff
path: root/source3/smbd/smbXsrv_client.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/smbd/smbXsrv_client.c')
-rw-r--r--source3/smbd/smbXsrv_client.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/source3/smbd/smbXsrv_client.c b/source3/smbd/smbXsrv_client.c
index e0658d87969..fcfa225048a 100644
--- a/source3/smbd/smbXsrv_client.c
+++ b/source3/smbd/smbXsrv_client.c
@@ -568,6 +568,7 @@ NTSTATUS smbXsrv_client_create(TALLOC_CTX *mem_ctx,
return NT_STATUS_NO_MEMORY;
}
tevent_req_set_callback(subreq, smbXsrv_client_connection_pass_loop, client);
+ client->connection_pass_subreq = subreq;
*_client = client;
return NT_STATUS_OK;
@@ -607,6 +608,8 @@ static void smbXsrv_client_connection_pass_loop(struct tevent_req *subreq)
int sock_fd = -1;
uint64_t seq_low;
+ client->connection_pass_subreq = NULL;
+
ret = messaging_filtered_read_recv(subreq, talloc_tos(), &rec);
TALLOC_FREE(subreq);
if (ret != 0) {
@@ -731,6 +734,7 @@ next:
return;
}
tevent_req_set_callback(subreq, smbXsrv_client_connection_pass_loop, client);
+ client->connection_pass_subreq = subreq;
}
NTSTATUS smbXsrv_client_update(struct smbXsrv_client *client)
@@ -797,6 +801,8 @@ NTSTATUS smbXsrv_client_remove(struct smbXsrv_client *client)
return NT_STATUS_OK;
}
+ TALLOC_FREE(client->connection_pass_subreq);
+
client->global->db_rec = smbXsrv_client_global_fetch_locked(
table->global.db_ctx,
&client->global->client_guid,