diff options
Diffstat (limited to 'source4/libcli')
-rw-r--r-- | source4/libcli/cliconnect.c | 2 | ||||
-rw-r--r-- | source4/libcli/composite/connect.c | 9 | ||||
-rw-r--r-- | source4/libcli/raw/clisocket.c | 10 |
3 files changed, 14 insertions, 7 deletions
diff --git a/source4/libcli/cliconnect.c b/source4/libcli/cliconnect.c index aaed36eb05..4d9fb5ba1f 100644 --- a/source4/libcli/cliconnect.c +++ b/source4/libcli/cliconnect.c @@ -32,7 +32,7 @@ BOOL smbcli_socket_connect(struct smbcli_state *cli, const char *server) { struct smbcli_socket *sock; - sock = smbcli_sock_init(cli); + sock = smbcli_sock_init(cli, NULL); if (!sock) return False; if (!smbcli_sock_connect_byname(sock, server, 0)) { diff --git a/source4/libcli/composite/connect.c b/source4/libcli/composite/connect.c index 83f1dc4fa6..69b394310e 100644 --- a/source4/libcli/composite/connect.c +++ b/source4/libcli/composite/connect.c @@ -330,7 +330,8 @@ static void composite_handler(struct smbcli_composite *req) /* a function to establish a smbcli_tree from scratch */ -struct smbcli_composite *smb_composite_connect_send(struct smb_composite_connect *io) +struct smbcli_composite *smb_composite_connect_send(struct smb_composite_connect *io, + struct event_context *event_ctx) { struct smbcli_composite *c; struct connect_state *state; @@ -342,14 +343,14 @@ struct smbcli_composite *smb_composite_connect_send(struct smb_composite_connect state = talloc(c, struct connect_state); if (state == NULL) goto failed; - state->sock = smbcli_sock_init(state); + state->sock = smbcli_sock_init(state, event_ctx); if (state->sock == NULL) goto failed; state->io = io; state->stage = CONNECT_RESOLVE; c->state = SMBCLI_REQUEST_SEND; - c->event_ctx = state->sock->event.ctx; + c->event_ctx = talloc_reference(c, state->sock->event.ctx); c->private = state; name.name = io->in.dest_host; @@ -391,6 +392,6 @@ NTSTATUS smb_composite_connect_recv(struct smbcli_composite *c, TALLOC_CTX *mem_ */ NTSTATUS smb_composite_connect(struct smb_composite_connect *io, TALLOC_CTX *mem_ctx) { - struct smbcli_composite *c = smb_composite_connect_send(io); + struct smbcli_composite *c = smb_composite_connect_send(io, NULL); return smb_composite_connect_recv(c, mem_ctx); } diff --git a/source4/libcli/raw/clisocket.c b/source4/libcli/raw/clisocket.c index cbbd6490bd..9249f453e8 100644 --- a/source4/libcli/raw/clisocket.c +++ b/source4/libcli/raw/clisocket.c @@ -49,8 +49,10 @@ static int smbcli_sock_destructor(void *ptr) /* create a smbcli_socket context + The event_ctx is optional - if not supplied one will be created */ -struct smbcli_socket *smbcli_sock_init(TALLOC_CTX *mem_ctx) +struct smbcli_socket *smbcli_sock_init(TALLOC_CTX *mem_ctx, + struct event_context *event_ctx) { struct smbcli_socket *sock; @@ -59,7 +61,11 @@ struct smbcli_socket *smbcli_sock_init(TALLOC_CTX *mem_ctx) return NULL; } - sock->event.ctx = event_context_init(sock); + if (event_ctx) { + sock->event.ctx = talloc_reference(sock, event_ctx); + } else { + sock->event.ctx = event_context_init(sock); + } if (sock->event.ctx == NULL) { talloc_free(sock); return NULL; |