From 9d6e923aab2036d6ce72e31aa4633d55b5991558 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sun, 23 Jan 2005 09:01:46 +0000 Subject: r4938: allow the caller to supply an existing event_context if they want to in smb_composite_connect_send(). This makes doing parallel calls much easier. (This used to be commit 442308970c123b9fb25615673049e1c1c234a0b9) --- source4/libcli/cliconnect.c | 2 +- source4/libcli/composite/connect.c | 9 +++++---- source4/libcli/raw/clisocket.c | 10 ++++++++-- source4/torture/rpc/xplogin.c | 2 +- 4 files changed, 15 insertions(+), 8 deletions(-) (limited to 'source4') 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; diff --git a/source4/torture/rpc/xplogin.c b/source4/torture/rpc/xplogin.c index 8acf3c4eb7..25bda40da9 100644 --- a/source4/torture/rpc/xplogin.c +++ b/source4/torture/rpc/xplogin.c @@ -43,7 +43,7 @@ static NTSTATUS after_negprot(struct smbcli_transport **dst_transport, struct smbcli_transport *transport; NTSTATUS status; - sock = smbcli_sock_init(NULL); + sock = smbcli_sock_init(NULL, NULL); if (sock == NULL) return NT_STATUS_NO_MEMORY; -- cgit