The branch, master has been updated
       via  c7fcab7 s3:smbXsrv: refactor duplicate code into 
smbXsrv_session_clear_and_logoff()
       via  a590ac6 libsmbconf:registry: Ignore keyless smb.conf regvalues
      from  57941aa s3: utils: Convert all uses of uint32/16/8 to _t.

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit c7fcab7999c763acbc0f9dadb7fe05b47a257c7a
Author: Michael Adam <[email protected]>
Date:   Wed May 6 17:20:55 2015 +0200

    s3:smbXsrv: refactor duplicate code into smbXsrv_session_clear_and_logoff()
    
    This replaces code in smbXsrv_session_logoff_all_callback()
    and smbXsrv_session_clear_and_logoff().
    
    Signed-off-by: Michael Adam <[email protected]>
    Reviewed-by: Stefan Metzmacher <[email protected]>
    
    Autobuild-User(master): Michael Adam <[email protected]>
    Autobuild-Date(master): Thu May  7 10:43:29 CEST 2015 on sn-devel-104

commit a590ac60ef54cb4644a7f9ebb609be4529c2f319
Author: Volker Lendecke <[email protected]>
Date:   Mon Apr 27 14:34:12 2015 +0000

    libsmbconf:registry: Ignore keyless smb.conf regvalues
    
    Signed-off-by: Volker Lendecke <[email protected]>
    Reviewed-by: Michael Adam <[email protected]>

-----------------------------------------------------------------------

Summary of changes:
 source3/lib/smbconf/smbconf_reg.c | 34 ----------------------------------
 source3/smbd/smbXsrv_session.c    | 34 ++++++++++------------------------
 2 files changed, 10 insertions(+), 58 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/lib/smbconf/smbconf_reg.c 
b/source3/lib/smbconf/smbconf_reg.c
index bc878cc..e756580 100644
--- a/source3/lib/smbconf/smbconf_reg.c
+++ b/source3/lib/smbconf/smbconf_reg.c
@@ -530,29 +530,6 @@ done:
        return err;
 }
 
-static bool smbconf_reg_key_has_values(struct registry_key *key)
-{
-       WERROR werr;
-       uint32_t num_subkeys;
-       uint32_t max_subkeylen;
-       uint32_t max_subkeysize;
-       uint32_t num_values;
-       uint32_t max_valnamelen;
-       uint32_t max_valbufsize;
-       uint32_t secdescsize;
-       NTTIME last_changed_time;
-
-       werr = reg_queryinfokey(key, &num_subkeys, &max_subkeylen,
-                               &max_subkeysize, &num_values, &max_valnamelen,
-                               &max_valbufsize, &secdescsize,
-                               &last_changed_time);
-       if (!W_ERROR_IS_OK(werr)) {
-               return false;
-       }
-
-       return (num_values != 0);
-}
-
 /**
  * delete all values from a key
  */
@@ -806,17 +783,6 @@ static sbcErr smbconf_reg_get_share_names(struct 
smbconf_ctx *ctx,
 
        tmp_ctx = talloc_stackframe();
 
-       /* if there are values in the base key, return NULL as share name */
-
-       if (smbconf_reg_key_has_values(rpd(ctx)->base_key)) {
-               err = smbconf_add_string_to_array(tmp_ctx, &tmp_share_names,
-                                                  0, NULL);
-               if (!SBC_ERROR_IS_OK(err)) {
-                       goto done;
-               }
-               added_count++;
-       }
-
        /* make sure "global" is always listed first */
        if (smbconf_share_exists(ctx, GLOBAL_NAME)) {
                err = smbconf_add_string_to_array(tmp_ctx, &tmp_share_names,
diff --git a/source3/smbd/smbXsrv_session.c b/source3/smbd/smbXsrv_session.c
index 2ccae0e..07375d8 100644
--- a/source3/smbd/smbXsrv_session.c
+++ b/source3/smbd/smbXsrv_session.c
@@ -1094,7 +1094,7 @@ NTSTATUS smb2srv_session_close_previous_recv(struct 
tevent_req *req)
        return NT_STATUS_OK;
 }
 
-static int smbXsrv_session_destructor(struct smbXsrv_session *session)
+static NTSTATUS smbXsrv_session_clear_and_logoff(struct smbXsrv_session 
*session)
 {
        NTSTATUS status;
        struct smbXsrv_connection *xconn = NULL;
@@ -1122,6 +1122,14 @@ static int smbXsrv_session_destructor(struct 
smbXsrv_session *session)
        }
 
        status = smbXsrv_session_logoff(session);
+       return status;
+}
+
+static int smbXsrv_session_destructor(struct smbXsrv_session *session)
+{
+       NTSTATUS status;
+
+       status = smbXsrv_session_clear_and_logoff(session);
        if (!NT_STATUS_IS_OK(status)) {
                DEBUG(0, ("smbXsrv_session_destructor: "
                          "smbXsrv_session_logoff() failed: %s\n",
@@ -1655,7 +1663,6 @@ static int smbXsrv_session_logoff_all_callback(struct 
db_record *local_rec,
        TDB_DATA val;
        void *ptr = NULL;
        struct smbXsrv_session *session = NULL;
-       struct smbXsrv_connection *xconn = NULL;
        NTSTATUS status;
 
        val = dbwrap_record_get_value(local_rec);
@@ -1673,28 +1680,7 @@ static int smbXsrv_session_logoff_all_callback(struct 
db_record *local_rec,
 
        session->db_rec = local_rec;
 
-       if (session->client != NULL) {
-               xconn = session->client->connections;
-       }
-       for (; xconn != NULL; xconn = xconn->next) {
-               struct smbd_smb2_request *preq;
-
-               for (preq = xconn->smb2.requests; preq != NULL; preq = 
preq->next) {
-                       if (preq->session != session) {
-                               continue;
-                       }
-
-                       preq->session = NULL;
-                       /*
-                        * If we no longer have a session we can't
-                        * sign or encrypt replies.
-                        */
-                       preq->do_signing = false;
-                       preq->do_encryption = false;
-               }
-       }
-
-       status = smbXsrv_session_logoff(session);
+       status = smbXsrv_session_clear_and_logoff(session);
        if (!NT_STATUS_IS_OK(status)) {
                if (NT_STATUS_IS_OK(state->first_status)) {
                        state->first_status = status;


-- 
Samba Shared Repository

Reply via email to