[SCM] Samba Shared Repository - branch v3-6-test updated

Karolin Seeger kseeger at samba.org
Sun Apr 7 13:43:57 MDT 2013


The branch, v3-6-test has been updated
       via  1df6178 Fix bug #9733 - smbcontrol close-share is not working.
      from  57db335 Final fix for bug #9130 - Certain xattrs cause Windows error 0x800700FF

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-6-test


- Log -----------------------------------------------------------------
commit 1df61789ca466923a7a252244888bd1b7cfbc79e
Author: Jeremy Allison <jra at samba.org>
Date:   Thu Mar 21 13:59:20 2013 -0700

    Fix bug #9733 - smbcontrol close-share is not working.
    
    As part of forcibly disconnecting a client from a share,
    smbd must atomically call reload_services() to ensure that
    the entry in the ServicePtrs[] array corresponding to
    that share is removed if the share was removed from
    the smb.conf or registry entries.
    
    Otherwise the ServicePtrs[] array entry for the share
    remains active and the client races to auto-reconnect to
    the share before a second message to reload the smb.conf
    file can be sent.
    
    This has to be done as part of the close-share message
    processing, as removing the share from the smb.conf file
    first, then telling the smbd to reload followed by the
    forcible disconnect message doesn't work as in this
    sequence of events when the reload message is received
    the client is still connected to the share, so the
    ServicePtrs[] entry is still left active.
    
    The forcible-disconnect + service reload has to be done
    together as an atomic operation in order for this to work.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>

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

Summary of changes:
 source3/smbd/conn.c |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/smbd/conn.c b/source3/smbd/conn.c
index 8a96e88..05e692f 100644
--- a/source3/smbd/conn.c
+++ b/source3/smbd/conn.c
@@ -481,7 +481,7 @@ void msg_force_tdis(struct messaging_context *msg,
 	if (strcmp(sharename, "*") == 0) {
 		DEBUG(1,("Forcing close of all shares\n"));
 		conn_close_all(sconn);
-		return;
+		goto done;
 	}
 
 	if (sconn->using_smb2) {
@@ -512,4 +512,9 @@ void msg_force_tdis(struct messaging_context *msg,
 			}
 		}
 	}
+
+ done:
+
+	change_to_root_user();
+	reload_services(msg, -1, true);
 }


-- 
Samba Shared Repository


More information about the samba-cvs mailing list