Add new function smbXcli_session_copy(), to be used when creating compound SMB2 requests.
authorJeremy Allison <jra@samba.org>
Tue, 29 Jan 2013 00:51:25 +0000 (16:51 -0800)
committerRichard Sharpe <realrichardsharpe@gmail.com>
Thu, 31 Jan 2013 01:15:59 +0000 (17:15 -0800)
Copies the signing state needed to make client compound requests work
on signed connections.

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Richard Sharpe <realrichardsharpe@gmail.com>
libcli/smb/smbXcli_base.c
libcli/smb/smbXcli_base.h

index c547515d59715292bf01c867ab17fd7b1a37b7ac..421e884c907250a8d00cadf97fec85537a9a030d 100644 (file)
@@ -4482,6 +4482,33 @@ struct smbXcli_session *smbXcli_session_create(TALLOC_CTX *mem_ctx,
        return session;
 }
 
+struct smbXcli_session *smbXcli_session_copy(TALLOC_CTX *mem_ctx,
+                                               struct smbXcli_session *src)
+{
+       struct smbXcli_session *session;
+
+       session = talloc_zero(mem_ctx, struct smbXcli_session);
+       if (session == NULL) {
+               return NULL;
+       }
+       session->smb2 = talloc_zero(session, struct smb2cli_session);
+       if (session->smb2 == NULL) {
+               talloc_free(session);
+               return NULL;
+       }
+
+       session->conn = src->conn;
+       *session->smb2 = *src->smb2;
+       session->smb2_channel = src->smb2_channel;
+       session->disconnect_expired = src->disconnect_expired;
+
+       DLIST_ADD_END(src->conn->sessions, session, struct smbXcli_session *);
+       talloc_set_destructor(session, smbXcli_session_destructor);
+
+       return session;
+}
+
+
 NTSTATUS smbXcli_session_application_key(struct smbXcli_session *session,
                                         TALLOC_CTX *mem_ctx,
                                         DATA_BLOB *key)
index b720bc6e8c8f5ff7a2559147002e1220ddc8cb5f..f7b60d30bbf71a1ace279d1b438bf4198a7d4a53 100644 (file)
@@ -260,6 +260,8 @@ NTSTATUS smbXcli_negprot(struct smbXcli_conn *conn,
 
 struct smbXcli_session *smbXcli_session_create(TALLOC_CTX *mem_ctx,
                                               struct smbXcli_conn *conn);
+struct smbXcli_session *smbXcli_session_copy(TALLOC_CTX *mem_ctx,
+                                              struct smbXcli_session *src);
 NTSTATUS smbXcli_session_application_key(struct smbXcli_session *session,
                                         TALLOC_CTX *mem_ctx,
                                         DATA_BLOB *key);