s4:librpc/rpc: allow a shortcut in dcerpc_pipe_connect_ncacn_np_smb[2]_send()
authorStefan Metzmacher <metze@samba.org>
Wed, 15 Jan 2014 12:06:20 +0000 (13:06 +0100)
committerAndrew Bartlett <abartlet@samba.org>
Mon, 26 May 2014 01:31:28 +0000 (03:31 +0200)
If the caller provided smbXcli * pointers of an existing connection,
we can use it.

This will be used later in order to allow multiple dcerpc connections
over the same smb connection.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
source4/librpc/rpc/dcerpc_connect.c

index f779d1a9d70ce983ff9d7c8cdd4efc86a1ebb131..ecb531503884b2c6a494be21161bbf4ebb20c82a 100644 (file)
@@ -146,6 +146,11 @@ static struct composite_context *dcerpc_pipe_connect_ncacn_np_smb_send(TALLOC_CT
        s->io  = *io;
        conn   = &s->conn;
 
+       if (smbXcli_conn_is_connected(s->io.smb.conn)) {
+               continue_smb_open(c);
+               return c;
+       }
+
        /* prepare smb connection parameters: we're connecting to IPC$ share on
           remote rpc server */
        conn->in.dest_host = dcerpc_binding_get_string_option(s->io.binding, "host");
@@ -253,6 +258,11 @@ static struct composite_context *dcerpc_pipe_connect_ncacn_np_smb2_send(
 
        s->io = *io;
 
+       if (smbXcli_conn_is_connected(s->io.smb.conn)) {
+               continue_smb_open(c);
+               return c;
+       }
+
        host = dcerpc_binding_get_string_option(s->io.binding, "host");
        flags = dcerpc_binding_get_flags(s->io.binding);