summaryrefslogtreecommitdiff
path: root/source3/smbd/smb2_server.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/smbd/smb2_server.c')
-rw-r--r--source3/smbd/smb2_server.c40
1 files changed, 4 insertions, 36 deletions
diff --git a/source3/smbd/smb2_server.c b/source3/smbd/smb2_server.c
index 653a038da5..979a179c1d 100644
--- a/source3/smbd/smb2_server.c
+++ b/source3/smbd/smb2_server.c
@@ -151,30 +151,9 @@ static void smb2_setup_nbt_length(struct iovec *vector, int count)
_smb2_setlen(vector[0].iov_base, len);
}
-static int smbd_smb2_request_parent_destructor(struct smbd_smb2_request **req)
-{
- if (*req) {
- (*req)->parent = NULL;
- (*req)->mem_pool = NULL;
- }
-
- return 0;
-}
-
-static int smbd_smb2_request_destructor(struct smbd_smb2_request *req)
-{
- if (req->parent) {
- *req->parent = NULL;
- talloc_free(req->mem_pool);
- }
-
- return 0;
-}
-
static struct smbd_smb2_request *smbd_smb2_request_allocate(TALLOC_CTX *mem_ctx)
{
TALLOC_CTX *mem_pool;
- struct smbd_smb2_request **parent;
struct smbd_smb2_request *req;
#if 0
@@ -187,27 +166,17 @@ static struct smbd_smb2_request *smbd_smb2_request_allocate(TALLOC_CTX *mem_ctx)
return NULL;
}
- parent = talloc(mem_pool, struct smbd_smb2_request *);
- if (parent == NULL) {
- talloc_free(mem_pool);
- return NULL;
- }
-
- req = talloc_zero(parent, struct smbd_smb2_request);
+ req = talloc_zero(mem_pool, struct smbd_smb2_request);
if (req == NULL) {
talloc_free(mem_pool);
return NULL;
}
- *parent = req;
- req->mem_pool = mem_pool;
- req->parent = parent;
+ talloc_reparent(mem_pool, mem_ctx, req);
+ TALLOC_FREE(mem_pool);
req->last_session_id = UINT64_MAX;
req->last_tid = UINT32_MAX;
- talloc_set_destructor(parent, smbd_smb2_request_parent_destructor);
- talloc_set_destructor(req, smbd_smb2_request_destructor);
-
return req;
}
@@ -2800,8 +2769,7 @@ static NTSTATUS smbd_smb2_request_read_recv(struct tevent_req *req,
return status;
}
- talloc_steal(mem_ctx, state->smb2_req->mem_pool);
- *_smb2_req = state->smb2_req;
+ *_smb2_req = talloc_move(mem_ctx, &state->smb2_req);
tevent_req_received(req);
return NT_STATUS_OK;
}