winbindd: Retry on expired session in cm_connect_netlogon
[obnox/samba/samba-obnox.git] / source3 / winbindd / winbindd_cm.c
index c0891ce83036a88382e984666f658718cbd63347..f593d24619b7d999aeb44ddbdec11181fad6a459 100644 (file)
@@ -3406,6 +3406,14 @@ NTSTATUS cm_connect_netlogon(struct winbindd_domain *domain,
        }
 
        status = cm_connect_netlogon_transport(domain, NCACN_NP, cli);
+       if (NT_STATUS_EQUAL(status, NT_STATUS_NETWORK_SESSION_EXPIRED)) {
+               /*
+                * SMB2 session expired, needs reauthentication. Drop
+                * connection and retry.
+                */
+               invalidate_cm_connection(domain);
+               status = cm_connect_netlogon_transport(domain, NCACN_NP, cli);
+       }
 
        return status;
 }