summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2005-01-23 09:01:46 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:09:07 -0500
commit9d6e923aab2036d6ce72e31aa4633d55b5991558 (patch)
tree6ac43ee304d491dd676220bda20f086c885ba8bc
parent0e9c55e70f7720d1c424867bd8054859847e84fa (diff)
downloadsamba-9d6e923aab2036d6ce72e31aa4633d55b5991558.tar.gz
samba-9d6e923aab2036d6ce72e31aa4633d55b5991558.tar.bz2
samba-9d6e923aab2036d6ce72e31aa4633d55b5991558.zip
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)
-rw-r--r--source4/libcli/cliconnect.c2
-rw-r--r--source4/libcli/composite/connect.c9
-rw-r--r--source4/libcli/raw/clisocket.c10
-rw-r--r--source4/torture/rpc/xplogin.c2
4 files changed, 15 insertions, 8 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;
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;