summaryrefslogtreecommitdiff
path: root/source4/libcli/raw/clitransport.c
diff options
context:
space:
mode:
Diffstat (limited to 'source4/libcli/raw/clitransport.c')
-rw-r--r--source4/libcli/raw/clitransport.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/source4/libcli/raw/clitransport.c b/source4/libcli/raw/clitransport.c
index e3a8281f3f..c993fd7e60 100644
--- a/source4/libcli/raw/clitransport.c
+++ b/source4/libcli/raw/clitransport.c
@@ -61,16 +61,19 @@ static int transport_destructor(void *ptr)
/*
create a transport structure based on an established socket
*/
-struct smbcli_transport *smbcli_transport_init(struct smbcli_socket *sock)
+struct smbcli_transport *smbcli_transport_init(struct smbcli_socket *sock,
+ TALLOC_CTX *parent_ctx, BOOL primary)
{
struct smbcli_transport *transport;
- transport = talloc_p(sock, struct smbcli_transport);
+ transport = talloc_zero(parent_ctx, struct smbcli_transport);
if (!transport) return NULL;
- ZERO_STRUCTP(transport);
-
- transport->socket = talloc_reference(transport, sock);
+ if (primary) {
+ transport->socket = talloc_steal(transport, sock);
+ } else {
+ transport->socket = talloc_reference(transport, sock);
+ }
transport->negotiate.protocol = PROTOCOL_NT1;
transport->options.use_spnego = lp_use_spnego();
transport->options.max_xmit = lp_max_xmit();