winbindd: call reset_cm_connection_on_error() from reconnect_need_retry()
authorRalph Boehme <slow@samba.org>
Mon, 12 Mar 2018 11:20:04 +0000 (12:20 +0100)
committerRalph Boehme <slow@samba.org>
Thu, 15 Mar 2018 14:46:09 +0000 (15:46 +0100)
This ensures we use the same disconnect logic in the reconnect backend,
which calls reconnect_need_retry(), and in the dual_srv frontend which
calls reset_cm_connection_on_error.

Both reset_cm_connection_on_error() and reconnect_need_retry() are very
similar, both return a bool indicating whether a retry should be
attempted, unfortunately the functions have a different default return,
so I don't dare unifying them, but instead just call one from the other.

Bug: https://bugzilla.samba.org/show_bug.cgi?id=13332

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
source3/winbindd/winbindd_reconnect.c

index bbb5a37f390d0999f8d752dac37c9b0579abc92b..aa7cd12e8b4d7071a37b33a3e94bc54d954d20cd 100644 (file)
@@ -69,13 +69,7 @@ bool reconnect_need_retry(NTSTATUS status, struct winbindd_domain *domain)
                return false;
        }
 
-       if (NT_STATUS_EQUAL(status, NT_STATUS_IO_DEVICE_ERROR)) {
-               /*
-                * RPC call sent on expired session, needs
-                * reauthentication.
-                */
-               invalidate_cm_connection(domain);
-       }
+       reset_cm_connection_on_error(domain, status);
 
        return true;
 }