The branch, master has been updated
       via  6f3656c Revert "winbind: Retry after SESSION_EXPIRED error in 
ping-dc"
       via  aa3883e winbindd: Retry on expired session in cm_connect_netlogon
       via  276d604 winbindd: Retry on expired session in cm_connect_sam
       via  3b6b545 winbindd: Retry on expired session in cm_connect_lsa
       via  4c6804e winbindd: Remove double retry from some ADS methods
       via  e4adf55 winbindd: Add retry also for ADS method calls
       via  fb5b0ce winbindd: Reset connection for expired session before 
reconnecting
      from  3ac2d4b ctdb-tests: Fix some incorrect memory allocations

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


- Log -----------------------------------------------------------------
commit 6f3656c47d8ae6a3ac10591ffd7a60797775b469
Author: Christof Schmitt <[email protected]>
Date:   Thu Jan 7 13:27:49 2016 -0700

    Revert "winbind: Retry after SESSION_EXPIRED error in ping-dc"
    
    This reverts commit a2670f15dea27c10e3827216adf572f9c3894f85.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11670
    
    cm_connect_netlogon now handles the retry for an expired session.
    
    Signed-off-by: Christof Schmitt <[email protected]>
    Reviewed-by: Jeremy Allison <[email protected]>
    
    Autobuild-User(master): Jeremy Allison <[email protected]>
    Autobuild-Date(master): Wed Jan 13 03:35:57 CET 2016 on sn-devel-144

commit aa3883eae6e7891efb1e6f9ec74e6073bee43250
Author: Christof Schmitt <[email protected]>
Date:   Tue Jan 5 15:10:45 2016 -0700

    winbindd: Retry on expired session in cm_connect_netlogon
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11670
    
    Signed-off-by: Christof Schmitt <[email protected]>
    Reviewed-by: Jeremy Allison <[email protected]>

commit 276d604aa5ccc32d18b69c04ae13e2dc7c21f3ee
Author: Christof Schmitt <[email protected]>
Date:   Thu Jan 7 15:03:22 2016 -0700

    winbindd: Retry on expired session in cm_connect_sam
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11670
    
    Signed-off-by: Christof Schmitt <[email protected]>
    Reviewed-by: Jeremy Allison <[email protected]>

commit 3b6b5456424be6997b32c23b7c149c8060c3102d
Author: Christof Schmitt <[email protected]>
Date:   Wed Jan 6 14:15:30 2016 -0700

    winbindd: Retry on expired session in cm_connect_lsa
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11670
    
    Signed-off-by: Christof Schmitt <[email protected]>
    Reviewed-by: Jeremy Allison <[email protected]>

commit 4c6804e414087fb61e66133cefbe5590d1d9b283
Author: Christof Schmitt <[email protected]>
Date:   Tue Jan 5 14:42:09 2016 -0700

    winbindd: Remove double retry from some ADS methods
    
    The retry through the new reconnect_ads layer is enough. This structure
    also makes the distinction between retry layer and actual methods call a
    bit clearer.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11670
    
    Signed-off-by: Christof Schmitt <[email protected]>
    Reviewed-by: Jeremy Allison <[email protected]>

commit e4adf55e242aa5f000570bf554fcd15d7e86c126
Author: Christof Schmitt <[email protected]>
Date:   Tue Jan 5 14:37:30 2016 -0700

    winbindd: Add retry also for ADS method calls
    
    RPC calls can return IO_DEVICE_ERROR on expired SMB2 sessions. Retrying
    on a new connection avoids surfacing this error to winbindd clients.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11670
    
    Signed-off-by: Christof Schmitt <[email protected]>
    Reviewed-by: Jeremy Allison <[email protected]>

commit fb5b0cec3c0c2e0cf9cb04f8b52ee910ac245aeb
Author: Christof Schmitt <[email protected]>
Date:   Tue Jan 5 13:39:25 2016 -0700

    winbindd: Reset connection for expired session before reconnecting
    
    A RPC call on a expired SMB2 session returns IO_DEVICE_ERROR. In this
    case, reset the connection before issuing the same call
    again.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11670
    
    Signed-off-by: Christof Schmitt <[email protected]>
    Reviewed-by: Jeremy Allison <[email protected]>

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

Summary of changes:
 source3/winbindd/winbindd_ads.c                    |  26 +--
 source3/winbindd/winbindd_cache.c                  |   4 +-
 source3/winbindd/winbindd_cm.c                     | 104 +++++++++
 source3/winbindd/winbindd_dual_srv.c               |   8 -
 source3/winbindd/winbindd_ndr.c                    |   3 +
 source3/winbindd/winbindd_proto.h                  |   4 +
 source3/winbindd/winbindd_reconnect.c              |  38 ++--
 ...nbindd_reconnect.c => winbindd_reconnect_ads.c} | 249 +++++++++------------
 source3/wscript_build                              |   1 +
 9 files changed, 257 insertions(+), 180 deletions(-)
 copy source3/winbindd/{winbindd_reconnect.c => winbindd_reconnect_ads.c} (50%)


Changeset truncated at 500 lines:

diff --git a/source3/winbindd/winbindd_ads.c b/source3/winbindd/winbindd_ads.c
index b373be5..a9a23db 100644
--- a/source3/winbindd/winbindd_ads.c
+++ b/source3/winbindd/winbindd_ads.c
@@ -38,6 +38,7 @@
 #define DBGC_CLASS DBGC_WINBIND
 
 extern struct winbindd_methods reconnect_methods;
+extern struct winbindd_methods msrpc_methods;
 
 #define WINBIND_CCACHE_NAME "MEMORY:winbind_ccache"
 
@@ -563,9 +564,8 @@ static NTSTATUS name_to_sid(struct winbindd_domain *domain,
                            struct dom_sid *sid,
                            enum lsa_SidType *type)
 {
-       return reconnect_methods.name_to_sid(domain, mem_ctx,
-                                            domain_name, name, flags,
-                                            sid, type);
+       return msrpc_methods.name_to_sid(domain, mem_ctx, domain_name, name,
+                                        flags, sid, type);
 }
 
 /* convert a domain SID to a user or group name - use rpc methods */
@@ -576,8 +576,8 @@ static NTSTATUS sid_to_name(struct winbindd_domain *domain,
                            char **name,
                            enum lsa_SidType *type)
 {
-       return reconnect_methods.sid_to_name(domain, mem_ctx, sid,
-                                            domain_name, name, type);
+       return msrpc_methods.sid_to_name(domain, mem_ctx, sid,
+                                        domain_name, name, type);
 }
 
 /* convert a list of rids to names - use rpc methods */
@@ -590,9 +590,9 @@ static NTSTATUS rids_to_names(struct winbindd_domain 
*domain,
                              char ***names,
                              enum lsa_SidType **types)
 {
-       return reconnect_methods.rids_to_names(domain, mem_ctx, sid,
-                                              rids, num_rids,
-                                              domain_name, names, types);
+       return msrpc_methods.rids_to_names(domain, mem_ctx, sid,
+                                          rids, num_rids,
+                                          domain_name, names, types);
 }
 
 /* If you are looking for "dn_lookup": Yes, it used to be here!
@@ -1142,10 +1142,8 @@ static NTSTATUS lookup_useraliases(struct 
winbindd_domain *domain,
                                   uint32_t num_sids, const struct dom_sid 
*sids,
                                   uint32_t *num_aliases, uint32_t **alias_rids)
 {
-       return reconnect_methods.lookup_useraliases(domain, mem_ctx,
-                                                   num_sids, sids,
-                                                   num_aliases,
-                                                   alias_rids);
+       return msrpc_methods.lookup_useraliases(domain, mem_ctx, num_sids, sids,
+                                               num_aliases, alias_rids);
 }
 
 static NTSTATUS add_primary_group_members(
@@ -1527,7 +1525,7 @@ static NTSTATUS lockout_policy(struct winbindd_domain 
*domain,
                               TALLOC_CTX *mem_ctx,
                               struct samr_DomInfo12 *policy)
 {
-       return reconnect_methods.lockout_policy(domain, mem_ctx, policy);
+       return msrpc_methods.lockout_policy(domain, mem_ctx, policy);
 }
 
 /* find the password policy of a domain - use rpc methods */
@@ -1535,7 +1533,7 @@ static NTSTATUS password_policy(struct winbindd_domain 
*domain,
                                TALLOC_CTX *mem_ctx,
                                struct samr_DomInfo1 *policy)
 {
-       return reconnect_methods.password_policy(domain, mem_ctx, policy);
+       return msrpc_methods.password_policy(domain, mem_ctx, policy);
 }
 
 /* get a list of trusted domains */
diff --git a/source3/winbindd/winbindd_cache.c 
b/source3/winbindd/winbindd_cache.c
index ae9d11f..cf3ed71 100644
--- a/source3/winbindd/winbindd_cache.c
+++ b/source3/winbindd/winbindd_cache.c
@@ -46,7 +46,7 @@
 
 extern struct winbindd_methods reconnect_methods;
 #ifdef HAVE_ADS
-extern struct winbindd_methods ads_methods;
+extern struct winbindd_methods reconnect_ads_methods;
 #endif
 extern struct winbindd_methods builtin_passdb_methods;
 extern struct winbindd_methods sam_passdb_methods;
@@ -168,7 +168,7 @@ static struct winbind_cache *get_cache(struct 
winbindd_domain *domain)
                    && domain->active_directory
                    && !lp_winbind_rpc_only()) {
                        DEBUG(5,("get_cache: Setting ADS methods for domain 
%s\n", domain->name));
-                       domain->backend = &ads_methods;
+                       domain->backend = &reconnect_ads_methods;
                } else {
 #endif /* HAVE_ADS */
                        DEBUG(5,("get_cache: Setting MS-RPC methods for domain 
%s\n", domain->name));
diff --git a/source3/winbindd/winbindd_cm.c b/source3/winbindd/winbindd_cm.c
index 93a2dde..f593d24 100644
--- a/source3/winbindd/winbindd_cm.c
+++ b/source3/winbindd/winbindd_cm.c
@@ -2683,6 +2683,7 @@ NTSTATUS cm_connect_sam(struct winbindd_domain *domain, 
TALLOC_CTX *mem_ctx,
        NTSTATUS status, result;
        struct netlogon_creds_cli_context *p_creds;
        struct cli_credentials *creds = NULL;
+       bool retry = false; /* allow one retry attempt for expired session */
 
        if (sid_check_is_our_sam(&domain->sid)) {
                if (domain->rodc == false || need_rw_dc == false) {
@@ -2690,6 +2691,7 @@ NTSTATUS cm_connect_sam(struct winbindd_domain *domain, 
TALLOC_CTX *mem_ctx,
                }
        }
 
+retry:
        status = init_dc_connection_rpc(domain, need_rw_dc);
        if (!NT_STATUS_IS_OK(status)) {
                return status;
@@ -2733,6 +2735,14 @@ NTSTATUS cm_connect_sam(struct winbindd_domain *domain, 
TALLOC_CTX *mem_ctx,
                                              
smbXcli_conn_remote_name(conn->cli->conn),
                                              creds,
                                              &conn->samr_pipe);
+
+       if (NT_STATUS_EQUAL(status, NT_STATUS_NETWORK_SESSION_EXPIRED)
+           && !retry) {
+               invalidate_cm_connection(domain);
+               retry = true;
+               goto retry;
+       }
+
        if (!NT_STATUS_IS_OK(status)) {
                DEBUG(10,("cm_connect_sam: failed to connect to SAMR "
                          "pipe for domain %s using NTLMSSP "
@@ -2753,6 +2763,14 @@ NTSTATUS cm_connect_sam(struct winbindd_domain *domain, 
TALLOC_CTX *mem_ctx,
                                      SEC_FLAG_MAXIMUM_ALLOWED,
                                      &conn->sam_connect_handle,
                                      &result);
+
+       if (NT_STATUS_EQUAL(status, NT_STATUS_IO_DEVICE_ERROR) && !retry) {
+               invalidate_cm_connection(domain);
+               TALLOC_FREE(conn->samr_pipe);
+               retry = true;
+               goto retry;
+       }
+
        if (NT_STATUS_IS_OK(status) && NT_STATUS_IS_OK(result)) {
                goto open_domain;
        }
@@ -2790,6 +2808,13 @@ NTSTATUS cm_connect_sam(struct winbindd_domain *domain, 
TALLOC_CTX *mem_ctx,
                (conn->cli, &ndr_table_samr, NCACN_NP,
                 creds, p_creds, &conn->samr_pipe);
 
+       if (NT_STATUS_EQUAL(status, NT_STATUS_NETWORK_SESSION_EXPIRED)
+           && !retry) {
+               invalidate_cm_connection(domain);
+               retry = true;
+               goto retry;
+       }
+
        if (!NT_STATUS_IS_OK(status)) {
                DEBUG(10,("cm_connect_sam: failed to connect to SAMR pipe for "
                          "domain %s using schannel. Error was %s\n",
@@ -2804,6 +2829,14 @@ NTSTATUS cm_connect_sam(struct winbindd_domain *domain, 
TALLOC_CTX *mem_ctx,
                                      SEC_FLAG_MAXIMUM_ALLOWED,
                                      &conn->sam_connect_handle,
                                      &result);
+
+       if (NT_STATUS_EQUAL(status, NT_STATUS_IO_DEVICE_ERROR) && !retry) {
+               invalidate_cm_connection(domain);
+               TALLOC_FREE(conn->samr_pipe);
+               retry = true;
+               goto retry;
+       }
+
        if (NT_STATUS_IS_OK(status) && NT_STATUS_IS_OK(result)) {
                goto open_domain;
        }
@@ -2830,6 +2863,13 @@ NTSTATUS cm_connect_sam(struct winbindd_domain *domain, 
TALLOC_CTX *mem_ctx,
        status = cli_rpc_pipe_open_noauth(conn->cli, &ndr_table_samr,
                                          &conn->samr_pipe);
 
+       if (NT_STATUS_EQUAL(status, NT_STATUS_NETWORK_SESSION_EXPIRED)
+           && !retry) {
+               invalidate_cm_connection(domain);
+               retry = true;
+               goto retry;
+       }
+
        if (!NT_STATUS_IS_OK(status)) {
                goto done;
        }
@@ -2839,6 +2879,14 @@ NTSTATUS cm_connect_sam(struct winbindd_domain *domain, 
TALLOC_CTX *mem_ctx,
                                      SEC_FLAG_MAXIMUM_ALLOWED,
                                      &conn->sam_connect_handle,
                                      &result);
+
+       if (NT_STATUS_EQUAL(status, NT_STATUS_IO_DEVICE_ERROR) && !retry) {
+               invalidate_cm_connection(domain);
+               TALLOC_FREE(conn->samr_pipe);
+               retry = true;
+               goto retry;
+       }
+
        if (!NT_STATUS_IS_OK(status)) {
                DEBUG(10,("cm_connect_sam: rpccli_samr_Connect2 failed "
                          "for domain %s Error was %s\n",
@@ -2960,7 +3008,9 @@ NTSTATUS cm_connect_lsa(struct winbindd_domain *domain, 
TALLOC_CTX *mem_ctx,
        NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
        struct netlogon_creds_cli_context *p_creds;
        struct cli_credentials *creds = NULL;
+       bool retry = false; /* allow one retry attempt for expired session */
 
+retry:
        result = init_dc_connection_rpc(domain, false);
        if (!NT_STATUS_IS_OK(result))
                return result;
@@ -2995,6 +3045,14 @@ NTSTATUS cm_connect_lsa(struct winbindd_domain *domain, 
TALLOC_CTX *mem_ctx,
                 smbXcli_conn_remote_name(conn->cli->conn),
                 creds,
                 &conn->lsa_pipe);
+
+       if (NT_STATUS_EQUAL(result, NT_STATUS_NETWORK_SESSION_EXPIRED)
+           && !retry) {
+               invalidate_cm_connection(domain);
+               retry = true;
+               goto retry;
+       }
+
        if (!NT_STATUS_IS_OK(result)) {
                DEBUG(10,("cm_connect_lsa: failed to connect to LSA pipe for "
                          "domain %s using NTLMSSP authenticated pipe: user "
@@ -3012,6 +3070,13 @@ NTSTATUS cm_connect_lsa(struct winbindd_domain *domain, 
TALLOC_CTX *mem_ctx,
        result = rpccli_lsa_open_policy(conn->lsa_pipe, mem_ctx, True,
                                        SEC_FLAG_MAXIMUM_ALLOWED,
                                        &conn->lsa_policy);
+       if (NT_STATUS_EQUAL(result, NT_STATUS_IO_DEVICE_ERROR) && !retry) {
+               invalidate_cm_connection(domain);
+               TALLOC_FREE(conn->lsa_pipe);
+               retry = true;
+               goto retry;
+       }
+
        if (NT_STATUS_IS_OK(result)) {
                goto done;
        }
@@ -3047,6 +3112,13 @@ NTSTATUS cm_connect_lsa(struct winbindd_domain *domain, 
TALLOC_CTX *mem_ctx,
                (conn->cli, &ndr_table_lsarpc, NCACN_NP,
                 creds, p_creds, &conn->lsa_pipe);
 
+       if (NT_STATUS_EQUAL(result, NT_STATUS_NETWORK_SESSION_EXPIRED)
+           && !retry) {
+               invalidate_cm_connection(domain);
+               retry = true;
+               goto retry;
+       }
+
        if (!NT_STATUS_IS_OK(result)) {
                DEBUG(10,("cm_connect_lsa: failed to connect to LSA pipe for "
                          "domain %s using schannel. Error was %s\n",
@@ -3059,6 +3131,14 @@ NTSTATUS cm_connect_lsa(struct winbindd_domain *domain, 
TALLOC_CTX *mem_ctx,
        result = rpccli_lsa_open_policy(conn->lsa_pipe, mem_ctx, True,
                                        SEC_FLAG_MAXIMUM_ALLOWED,
                                        &conn->lsa_policy);
+
+       if (NT_STATUS_EQUAL(result, NT_STATUS_IO_DEVICE_ERROR) && !retry) {
+               invalidate_cm_connection(domain);
+               TALLOC_FREE(conn->lsa_pipe);
+               retry = true;
+               goto retry;
+       }
+
        if (NT_STATUS_IS_OK(result)) {
                goto done;
        }
@@ -3083,6 +3163,14 @@ NTSTATUS cm_connect_lsa(struct winbindd_domain *domain, 
TALLOC_CTX *mem_ctx,
        result = cli_rpc_pipe_open_noauth(conn->cli,
                                          &ndr_table_lsarpc,
                                          &conn->lsa_pipe);
+
+       if (NT_STATUS_EQUAL(result, NT_STATUS_NETWORK_SESSION_EXPIRED)
+           && !retry) {
+               invalidate_cm_connection(domain);
+               retry = true;
+               goto retry;
+       }
+
        if (!NT_STATUS_IS_OK(result)) {
                goto done;
        }
@@ -3090,6 +3178,14 @@ NTSTATUS cm_connect_lsa(struct winbindd_domain *domain, 
TALLOC_CTX *mem_ctx,
        result = rpccli_lsa_open_policy(conn->lsa_pipe, mem_ctx, True,
                                        SEC_FLAG_MAXIMUM_ALLOWED,
                                        &conn->lsa_policy);
+
+       if (NT_STATUS_EQUAL(result, NT_STATUS_IO_DEVICE_ERROR) && !retry) {
+               invalidate_cm_connection(domain);
+               TALLOC_FREE(conn->lsa_pipe);
+               retry = true;
+               goto retry;
+       }
+
  done:
        if (!NT_STATUS_IS_OK(result)) {
                invalidate_cm_connection(domain);
@@ -3310,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;
 }
diff --git a/source3/winbindd/winbindd_dual_srv.c 
b/source3/winbindd/winbindd_dual_srv.c
index 44e4842..cdd9bbd 100644
--- a/source3/winbindd/winbindd_dual_srv.c
+++ b/source3/winbindd/winbindd_dual_srv.c
@@ -741,14 +741,6 @@ NTSTATUS _wbint_PingDc(struct pipes_struct *p, struct 
wbint_PingDc *r)
 
 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);
-               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",
diff --git a/source3/winbindd/winbindd_ndr.c b/source3/winbindd/winbindd_ndr.c
index 37b7e02..029e883 100644
--- a/source3/winbindd/winbindd_ndr.c
+++ b/source3/winbindd/winbindd_ndr.c
@@ -75,6 +75,7 @@ void ndr_print_winbindd_cm_conn(struct ndr_print *ndr,
 
 #ifdef HAVE_ADS
 extern struct winbindd_methods ads_methods;
+extern struct winbindd_methods reconnect_ads_methods;
 #endif
 extern struct winbindd_methods msrpc_methods;
 extern struct winbindd_methods builtin_passdb_methods;
@@ -100,6 +101,8 @@ void ndr_print_winbindd_methods(struct ndr_print *ndr,
 #ifdef HAVE_ADS
        } else if (r == &ads_methods) {
                ndr_print_string(ndr, name, "ads_methods");
+       } else if (r == &reconnect_ads_methods) {
+               ndr_print_string(ndr, name, "reconnect_ads_methods");
 #endif
        } else if (r == &builtin_passdb_methods) {
                ndr_print_string(ndr, name, "builtin_passdb_methods");
diff --git a/source3/winbindd/winbindd_proto.h 
b/source3/winbindd/winbindd_proto.h
index 9920a3f..6e50718 100644
--- a/source3/winbindd/winbindd_proto.h
+++ b/source3/winbindd/winbindd_proto.h
@@ -933,4 +933,8 @@ ADS_STATUS ads_idmap_cached_connection(ADS_STRUCT **adsp, 
const char *dom_name);
 
 /* The following definitions come from winbindd/winbindd_irpc.c  */
 NTSTATUS wb_irpc_register(void);
+
+/* The following definitions come from winbindd/winbindd_reconnect.c  */
+bool reconnect_need_retry(NTSTATUS status, struct winbindd_domain *domain);
+
 #endif /*  _WINBINDD_PROTO_H_  */
diff --git a/source3/winbindd/winbindd_reconnect.c 
b/source3/winbindd/winbindd_reconnect.c
index e45f9b1..f7dd805 100644
--- a/source3/winbindd/winbindd_reconnect.c
+++ b/source3/winbindd/winbindd_reconnect.c
@@ -27,7 +27,7 @@
 
 extern struct winbindd_methods msrpc_methods;
 
-static bool reconnect_need_retry(NTSTATUS status)
+bool reconnect_need_retry(NTSTATUS status, struct winbindd_domain *domain)
 {
        if (NT_STATUS_IS_OK(status)) {
                return false;
@@ -69,6 +69,14 @@ static bool reconnect_need_retry(NTSTATUS status)
                return false;
        }
 
+       if (NT_STATUS_EQUAL(status, NT_STATUS_IO_DEVICE_ERROR)) {
+               /*
+                * RPC call sent on expired session, needs
+                * reauthentication.
+                */
+               invalidate_cm_connection(domain);
+       }
+
        return true;
 }
 
@@ -83,7 +91,7 @@ static NTSTATUS query_user_list(struct winbindd_domain 
*domain,
        result = msrpc_methods.query_user_list(domain, mem_ctx,
                                               num_entries, info);
 
-       if (reconnect_need_retry(result))
+       if (reconnect_need_retry(result, domain))
                result = msrpc_methods.query_user_list(domain, mem_ctx,
                                                       num_entries, info);
        return result;
@@ -100,7 +108,7 @@ static NTSTATUS enum_dom_groups(struct winbindd_domain 
*domain,
        result = msrpc_methods.enum_dom_groups(domain, mem_ctx,
                                               num_entries, info);
 
-       if (reconnect_need_retry(result))
+       if (reconnect_need_retry(result, domain))
                result = msrpc_methods.enum_dom_groups(domain, mem_ctx,
                                                       num_entries, info);
        return result;
@@ -118,7 +126,7 @@ static NTSTATUS enum_local_groups(struct winbindd_domain 
*domain,
        result = msrpc_methods.enum_local_groups(domain, mem_ctx,
                                                 num_entries, info);
 
-       if (reconnect_need_retry(result))
+       if (reconnect_need_retry(result, domain))
                result = msrpc_methods.enum_local_groups(domain, mem_ctx,
                                                         num_entries, info);
 
@@ -139,7 +147,7 @@ static NTSTATUS name_to_sid(struct winbindd_domain *domain,
        result = msrpc_methods.name_to_sid(domain, mem_ctx, domain_name, name,
                                           flags, sid, type);
 
-       if (reconnect_need_retry(result))
+       if (reconnect_need_retry(result, domain))
                result = msrpc_methods.name_to_sid(domain, mem_ctx,
                                                   domain_name, name, flags,
                                                   sid, type);
@@ -162,7 +170,7 @@ static NTSTATUS sid_to_name(struct winbindd_domain *domain,
        result = msrpc_methods.sid_to_name(domain, mem_ctx, sid,
                                           domain_name, name, type);
 
-       if (reconnect_need_retry(result))
+       if (reconnect_need_retry(result, domain))
                result = msrpc_methods.sid_to_name(domain, mem_ctx, sid,
                                                   domain_name, name, type);
 
@@ -183,7 +191,7 @@ static NTSTATUS rids_to_names(struct winbindd_domain 
*domain,
        result = msrpc_methods.rids_to_names(domain, mem_ctx, sid,
                                             rids, num_rids,
                                             domain_name, names, types);
-       if (reconnect_need_retry(result)) {
+       if (reconnect_need_retry(result, domain)) {
                result = msrpc_methods.rids_to_names(domain, mem_ctx, sid,
                                                     rids, num_rids,
                                                     domain_name, names,
@@ -204,7 +212,7 @@ static NTSTATUS query_user(struct winbindd_domain *domain,
        result = msrpc_methods.query_user(domain, mem_ctx, user_sid,
                                          user_info);
 
-       if (reconnect_need_retry(result))
+       if (reconnect_need_retry(result, domain))
                result = msrpc_methods.query_user(domain, mem_ctx, user_sid,
                                                  user_info);
 
@@ -223,7 +231,7 @@ static NTSTATUS lookup_usergroups(struct winbindd_domain 
*domain,
                                                 user_sid, num_groups,
                                                 user_gids);
 
-       if (reconnect_need_retry(result))
+       if (reconnect_need_retry(result, domain))
                result = msrpc_methods.lookup_usergroups(domain, mem_ctx,
                                                         user_sid, num_groups,
                                                         user_gids);
@@ -243,7 +251,7 @@ static NTSTATUS lookup_useraliases(struct winbindd_domain 
*domain,
                                                  num_aliases,
                                                  alias_rids);
 
-       if (reconnect_need_retry(result))
+       if (reconnect_need_retry(result, domain))
                result = msrpc_methods.lookup_useraliases(domain, mem_ctx,
                                                          num_sids, sids,
                                                          num_aliases,
@@ -268,7 +276,7 @@ static NTSTATUS lookup_groupmem(struct winbindd_domain 
*domain,
                                               sid_mem, names,
                                               name_types);
 
-       if (reconnect_need_retry(result))
+       if (reconnect_need_retry(result, domain))
                result = msrpc_methods.lookup_groupmem(domain, mem_ctx,
                                                       group_sid, type,
                                                       num_names,
@@ -285,7 +293,7 @@ static NTSTATUS sequence_number(struct winbindd_domain 
*domain, uint32_t *seq)
 
        result = msrpc_methods.sequence_number(domain, seq);
 
-       if (reconnect_need_retry(result))
+       if (reconnect_need_retry(result, domain))
                result = msrpc_methods.sequence_number(domain, seq);


-- 
Samba Shared Repository

Reply via email to