sq dcerpc_binding_get_smbXcli_pointers s4:librpc/rpc: try to get the smbXcli_* pointe...
authorStefan Metzmacher <metze@samba.org>
Thu, 2 Oct 2014 08:38:55 +0000 (10:38 +0200)
committerStefan Metzmacher <metze@samba.org>
Tue, 4 Jun 2019 10:43:20 +0000 (12:43 +0200)
source4/librpc/rpc/dcerpc_connect.c

index 064e012ac283a7b7070bfdaa23dbbf0ddda336b7..c5d6a570f26e249af838e4f60aa03e27fb8f4e7a 100644 (file)
@@ -1028,20 +1028,17 @@ static void continue_connect(struct composite_context *c, struct pipe_connect_st
                endpoint = dcerpc_binding_get_string_option(pc.binding,
                                                            "endpoint");
                if (endpoint != NULL) {
-                       pc.smb.conn = dcerpc_binding_get_pointer_option(pc.binding,
-                                                       "connection",
-                                                       struct smbXcli_conn);
-                       pc.smb.session = dcerpc_binding_get_pointer_option(pc.binding,
-                                                       "connection",
-                                                       struct smbXcli_session);
-                       pc.smb.tcon = dcerpc_binding_get_pointer_option(pc.binding,
-                                                       "connection",
-                                                       struct smbXcli_tcon);
+                       NTSTATUS status;
+
                        pc.smb.pipe_name = endpoint;
-               }
 
-               if (!smbXcli_conn_is_connected(pc.smb.conn)) {
-                       ZERO_STRUCT(pc.smb);
+                       status = dcerpc_binding_get_smbXcli_pointers(pc.binding,
+                                                               &pc.smb.conn,
+                                                               &pc.smb.session,
+                                                               &pc.smb.tcon);
+                       if (!NT_STATUS_IS_OK(status)) {
+                               ZERO_STRUCT(pc.smb);
+                       }
                }
 
                ncacn_np_smb_req = dcerpc_pipe_connect_ncacn_np_smb_send(c, &pc, s->lp_ctx);