[SCM] Samba Shared Repository - branch v4-2-test updated

Karolin Seeger kseeger at samba.org
Tue Jan 13 15:18:07 MST 2015


The branch, v4-2-test has been updated
       via  d196b54 winbind: Retry after SESSION_EXPIRED error in ping-dc
       via  ec07387 winbind: Retry LogonControl RPC in ping-dc after session expiration
      from  4701d74 tdb_wrap: Make mutexes easier to use

https://git.samba.org/?p=samba.git;a=shortlog;h=v4-2-test


- Log -----------------------------------------------------------------
commit d196b54b941fdef76660c5683d4619b7a51ff779
Author: Christof Schmitt <cs at samba.org>
Date:   Fri Dec 19 12:24:53 2014 -0700

    winbind: Retry after SESSION_EXPIRED error in ping-dc
    
    Trying to establish a netlogon connection when the service ticket
    expires might fail with NT_STATUS_NETWORK_SESSION_EXPIRED. The
    underlying client code already marks the session as invalid, so retry
    the netlogon connect in this case.
    
    Signed-off-by: Christof Schmit <cs at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>
    
    Autobuild-User(master): Jeremy Allison <jra at samba.org>
    Autobuild-Date(master): Tue Jan  6 02:58:57 CET 2015 on sn-devel-104
    (cherry picked from commit a2670f15dea27c10e3827216adf572f9c3894f85)
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11034
    
    Autobuild-User(v4-2-test): Karolin Seeger <kseeger at samba.org>
    Autobuild-Date(v4-2-test): Tue Jan 13 23:17:05 CET 2015 on sn-devel-104

commit ec07387d242b851b16821725edc858ed114e5461
Author: Christof Schmitt <cs at samba.org>
Date:   Mon Dec 22 15:19:47 2014 -0800

    winbind: Retry LogonControl RPC in ping-dc after session expiration
    
    When the underlying session expires, the LogonControl RPC call used in
    ping-dc returns NT_STATUS_IO_DEVICE_ERROR. Retry once in this case,
    instead of returning the error to the caller.
    
    Signed-off-by: Christof Schmitt <cs at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>
    
    Autobuild-User(master): Jeremy Allison <jra at samba.org>
    Autobuild-Date(master): Tue Dec 23 02:46:34 CET 2014 on sn-devel-104
    (cherry picked from commit 2fdc55160309cec89aeb88243cb18d058c67e918)
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11034

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

Summary of changes:
 source3/winbindd/winbindd_dual_srv.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)


Changeset truncated at 500 lines:

diff --git a/source3/winbindd/winbindd_dual_srv.c b/source3/winbindd/winbindd_dual_srv.c
index 5e33787..c19179d 100644
--- a/source3/winbindd/winbindd_dual_srv.c
+++ b/source3/winbindd/winbindd_dual_srv.c
@@ -668,13 +668,23 @@ NTSTATUS _wbint_PingDc(struct pipes_struct *p, struct wbint_PingDc *r)
 	WERROR werr;
 	fstring logon_server;
 	struct dcerpc_binding_handle *b;
+	bool retry = false;
 
 	domain = wb_child_domain();
 	if (domain == NULL) {
 		return NT_STATUS_REQUEST_NOT_ACCEPTED;
 	}
 
+reconnect:
 	status = cm_connect_netlogon(domain, &netlogon_pipe);
+	if (NT_STATUS_EQUAL(status, NT_STATUS_NETWORK_SESSION_EXPIRED)) {
+		/*
+		 * Retry to open new connection with new kerberos ticket.
+		 */
+		invalidate_cm_connection(&domain->conn);
+		status = cm_connect_netlogon(domain, &netlogon_pipe);
+	}
+
 	reset_cm_connection_on_error(domain, status);
         if (!NT_STATUS_IS_OK(status)) {
 		DEBUG(3, ("could not open handle to NETLOGON pipe: %s\n",
@@ -701,6 +711,14 @@ NTSTATUS _wbint_PingDc(struct pipes_struct *p, struct wbint_PingDc *r)
 					  logon_server, NETLOGON_CONTROL_QUERY,
 					  2, &info, &werr);
 
+	if (NT_STATUS_EQUAL(status, NT_STATUS_IO_DEVICE_ERROR) && !retry) {
+		DEBUG(10, ("Session might have expired. "
+			   "Reconnect and retry once.\n"));
+		invalidate_cm_connection(&domain->conn);
+		retry = true;
+		goto reconnect;
+	}
+
 	reset_cm_connection_on_error(domain, status);
 	if (!NT_STATUS_IS_OK(status)) {
 		DEBUG(2, ("dcerpc_netr_LogonControl failed: %s\n",


-- 
Samba Shared Repository


More information about the samba-cvs mailing list