The branch, master has been updated
       via  efbe160 s3:loadparm: fix the reload of the configuration: also 
reload activated registry shares
       via  ec113a5 s3:loadparm: add reload_registry_shares() - reload only 
those shares already loaded
       via  2b4bb9b s3:smbclient: print nt status code when smb echo fails
       via  d67a91b s3:smbclient: add a "tdis" command to view and change the 
tree id (tid).
       via  7327bde s3:smbclient: add a "tdis" command to do a tree disconnect 
(close a connection to a share)
       via  88d0e44 s3:smbclient: add a "tcon" command to do a tree connect 
(connect to a share)
       via  281c6d0 s3:smbclient: add "logoff" command to close the session
      from  a11cc88 s3:libsmb: move cli_state->outgoing to 
cli_state->conn.outgoing

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


- Log -----------------------------------------------------------------
commit efbe1602bd014eada4811f336bdccbf4692d3807
Author: Michael Adam <[email protected]>
Date:   Fri Jul 22 10:11:52 2011 +0200

    s3:loadparm: fix the reload of the configuration: also reload activated 
registry shares
    
    Autobuild-User: Michael Adam <[email protected]>
    Autobuild-Date: Fri Jul 22 16:53:49 CEST 2011 on sn-devel-104

commit ec113a58a4dc4e4f3ea03f7818eb312325f69482
Author: Michael Adam <[email protected]>
Date:   Fri Jul 22 10:10:43 2011 +0200

    s3:loadparm: add reload_registry_shares() - reload only those shares 
already loaded

commit 2b4bb9b7a127dbaae9af8b1d48e56986ef70b974
Author: Michael Adam <[email protected]>
Date:   Fri Jul 22 15:38:38 2011 +0200

    s3:smbclient: print nt status code when smb echo fails

commit d67a91b9556a81318fd36d7f17ce327e5f6d44e0
Author: Michael Adam <[email protected]>
Date:   Fri Jul 22 14:12:13 2011 +0200

    s3:smbclient: add a "tdis" command to view and change the tree id (tid).
    
    This low level command can be used to switch between tree connects in one
    session.

commit 7327bde81acecf4ae0c09f80cebe21a1312aeb3a
Author: Michael Adam <[email protected]>
Date:   Fri Jul 22 14:11:34 2011 +0200

    s3:smbclient: add a "tdis" command to do a tree disconnect (close a 
connection to a share)

commit 88d0e44df340e5954b2f57c779c2a49a5fac0b11
Author: Michael Adam <[email protected]>
Date:   Fri Jul 22 14:10:38 2011 +0200

    s3:smbclient: add a "tcon" command to do a tree connect (connect to a share)

commit 281c6d02bdcc9988c0f1660a3c77ba4b3db3dc6d
Author: Michael Adam <[email protected]>
Date:   Fri Jul 22 14:08:03 2011 +0200

    s3:smbclient: add "logoff" command to close the session

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

Summary of changes:
 source3/client/client.c  |  101 +++++++++++++++++++++++++++++++++++++++++++++-
 source3/param/loadparm.c |   37 ++++++++++++++++-
 2 files changed, 134 insertions(+), 4 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/client/client.c b/source3/client/client.c
index 1cf4410..8c797e5 100644
--- a/source3/client/client.c
+++ b/source3/client/client.c
@@ -4308,6 +4308,99 @@ static int cmd_logon(void)
        return 0;
 }
 
+/**
+ * close the session
+ */
+
+static int cmd_logoff(void)
+{
+       NTSTATUS status;
+
+       status = cli_ulogoff(cli);
+       if (!NT_STATUS_IS_OK(status)) {
+               d_printf("logoff failed: %s\n", nt_errstr(status));
+               return -1;
+       }
+
+       d_printf("logoff successful\n");
+       return 0;
+}
+
+
+/**
+ * tree connect (connect to a share)
+ */
+
+static int cmd_tcon(void)
+{
+       TALLOC_CTX *ctx = talloc_tos();
+       char *sharename;
+       NTSTATUS status;
+
+       if (!next_token_talloc(ctx, &cmd_ptr, &sharename, NULL)) {
+               d_printf("tcon <sharename>\n");
+               return 0;
+       }
+
+       if (!sharename) {
+               return 1;
+       }
+
+       status = cli_tcon_andx(cli, sharename, "?????", "", 0);
+       if (!NT_STATUS_IS_OK(status)) {
+               d_printf("tcon failed: %s\n", nt_errstr(status));
+               return -1;
+       }
+
+       talloc_free(sharename);
+
+       d_printf("tcon to %s successful, tid: %u\n", sharename,
+                cli_state_get_tid(cli));
+       return 0;
+}
+
+/**
+ * tree disconnect (disconnect from a share)
+ */
+
+static int cmd_tdis(void)
+{
+       NTSTATUS status;
+
+       status = cli_tdis(cli);
+       if (!NT_STATUS_IS_OK(status)) {
+               d_printf("tdis failed: %s\n", nt_errstr(status));
+               return -1;
+       }
+
+       d_printf("tdis successful\n");
+       return 0;
+}
+
+
+/**
+ * get or set tid
+ */
+
+static int cmd_tid(void)
+{
+       TALLOC_CTX *ctx = talloc_tos();
+       char *tid_str;
+
+       if (!next_token_talloc(ctx, &cmd_ptr, &tid_str, NULL)) {
+               if (cli_state_has_tcon(cli)) {
+                       d_printf("current tid is %d\n", cli_state_get_tid(cli));
+               } else {
+                       d_printf("no tcon currently\n");
+               }
+       } else {
+               uint16_t tid = atoi(tid_str);
+               cli_state_set_tid(cli, tid);
+       }
+
+       return 0;
+}
+
 
 /****************************************************************************
  list active connections
@@ -4497,6 +4590,10 @@ static struct {
   {"logon",cmd_logon,"establish new logon",{COMPL_NONE,COMPL_NONE}},
   {"listconnect",cmd_list_connect,"list open 
connections",{COMPL_NONE,COMPL_NONE}},
   {"showconnect",cmd_show_connect,"display the current active 
connection",{COMPL_NONE,COMPL_NONE}},
+  {"tcon",cmd_tcon,"connect to a share" ,{COMPL_NONE,COMPL_NONE}},
+  {"tdis",cmd_tdis,"disconnect from a share",{COMPL_NONE,COMPL_NONE}},
+  {"tid",cmd_tid,"show or set the current tid 
(tree-id)",{COMPL_NONE,COMPL_NONE}},
+  {"logoff",cmd_logoff,"log off (close the session)",{COMPL_NONE,COMPL_NONE}},
   {"..",cmd_cd_oneup,"change the remote directory (up one 
level)",{COMPL_REMOTE,COMPL_NONE}},
 
   /* Yes, this must be here, see crh's comment above. */
@@ -4927,8 +5024,8 @@ static void readline_callback(void)
        memset(garbage, 0xf0, sizeof(garbage));
        status = cli_echo(cli, 1, data_blob_const(garbage, sizeof(garbage)));
        if (!NT_STATUS_IS_OK(status)) {
-               DEBUG(0, ("SMBecho failed. Maybe server has closed "
-                       "the connection\n"));
+               DEBUG(0, ("SMBecho failed (%s). Maybe server has closed "
+                       "the connection\n", nt_errstr(status)));
                finished = true;
                smb_readline_done();
        }
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index 16eb719..6cab934 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -6743,6 +6743,35 @@ done:
        return ret;
 }
 
+/**
+ * reload those shares from registry that are already
+ * activated in the services array.
+ */
+static bool reload_registry_shares(void)
+{
+       int i;
+       bool ret = true;
+
+       for (i = 0; i < iNumServices; i++) {
+               if (!VALID(i)) {
+                       continue;
+               }
+
+               if (ServicePtrs[i]->usershare == USERSHARE_VALID) {
+                       continue;
+               }
+
+               ret = process_registry_service(ServicePtrs[i]->szService);
+               if (!ret) {
+                       goto done;
+               }
+       }
+
+done:
+       return ret;
+}
+
+
 #define MAX_INCLUDE_DEPTH 100
 
 static uint8_t include_depth;
@@ -9013,8 +9042,12 @@ static bool lp_load_ex(const char *pszFname,
                bRetval = false;
        }
 
-       if (bRetval && lp_registry_shares() && allow_registry_shares) {
-               bRetval = process_registry_shares();
+       if (bRetval && lp_registry_shares()) {
+               if (allow_registry_shares) {
+                       bRetval = process_registry_shares();
+               } else {
+                       bRetval = reload_registry_shares();
+               }
        }
 
        lp_add_auto_services(lp_auto_services());


-- 
Samba Shared Repository

Reply via email to