summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2008-09-09 17:50:30 +0200
committerStefan Metzmacher <metze@samba.org>2008-09-23 11:30:02 +0200
commit781d7c4c1cbd34413450f251d4078a9cb8055831 (patch)
tree3500e0a3bd16845a1791227dc2a2540f1e00cd69
parent588af6901b019d414f4319ea9a1f40cb3d0e140e (diff)
downloadsamba-781d7c4c1cbd34413450f251d4078a9cb8055831.tar.gz
samba-781d7c4c1cbd34413450f251d4078a9cb8055831.tar.bz2
samba-781d7c4c1cbd34413450f251d4078a9cb8055831.zip
libcli/raw: give the caller the chance to prevent the talloc_free(req) in the _recv functions
metze
-rw-r--r--source4/libcli/raw/libcliraw.h3
-rw-r--r--source4/libcli/raw/rawrequest.c6
2 files changed, 8 insertions, 1 deletions
diff --git a/source4/libcli/raw/libcliraw.h b/source4/libcli/raw/libcliraw.h
index d55b4cc42c..c9cafedd4c 100644
--- a/source4/libcli/raw/libcliraw.h
+++ b/source4/libcli/raw/libcliraw.h
@@ -261,6 +261,9 @@ struct smbcli_request {
counter by one */
uint_t sign_single_increment:1;
+ /* give the caller a chance to prevent the talloc_free() in the _recv() function */
+ bool do_not_free;
+
/* the mid of this packet - used to match replies */
uint16_t mid;
diff --git a/source4/libcli/raw/rawrequest.c b/source4/libcli/raw/rawrequest.c
index a0e6452748..dd9b1f3e96 100644
--- a/source4/libcli/raw/rawrequest.c
+++ b/source4/libcli/raw/rawrequest.c
@@ -72,7 +72,11 @@ _PUBLIC_ NTSTATUS smbcli_request_destroy(struct smbcli_request *req)
}
status = req->status;
- talloc_free(req);
+
+ if (!req->do_not_free) {
+ talloc_free(req);
+ }
+
return status;
}