From: Ralph Boehme Date: Mon, 12 Mar 2018 15:53:49 +0000 (+0100) Subject: winbindd: use reset_cm_connection_on_error() instead of dcerpc_binding_handle_is_conn... X-Git-Tag: talloc-2.1.12~173 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6244a2beb184de8d050389e304f087ef153d61dd;p=thirdparty%2Fsamba.git winbindd: use reset_cm_connection_on_error() instead of dcerpc_binding_handle_is_connected() This catches more errors and triggers retry as appropriate. Bug: https://bugzilla.samba.org/show_bug.cgi?id=13332 Signed-off-by: Ralph Boehme Reviewed-by: Volker Lendecke --- diff --git a/source3/winbindd/winbindd_dual_srv.c b/source3/winbindd/winbindd_dual_srv.c index e80f3dd8d45..f7f01431c91 100644 --- a/source3/winbindd/winbindd_dual_srv.c +++ b/source3/winbindd/winbindd_dual_srv.c @@ -822,15 +822,11 @@ reconnect: logon_server, NETLOGON_CONTROL_QUERY, 2, &info, &werr); - if (!dcerpc_binding_handle_is_connected(b) && !retry) { - DEBUG(10, ("Session might have expired. " - "Reconnect and retry once.\n")); - invalidate_cm_connection(domain); + if (!retry && reset_cm_connection_on_error(domain, b, status)) { retry = true; goto reconnect; } - reset_cm_connection_on_error(domain, NULL, status); if (!NT_STATUS_IS_OK(status)) { DEBUG(2, ("dcerpc_netr_LogonControl failed: %s\n", nt_errstr(status))); @@ -1327,8 +1323,9 @@ reconnect: status = NT_STATUS_OK; } if (!NT_STATUS_IS_OK(status)) { - if (!retry && !dcerpc_binding_handle_is_connected(b)) { - invalidate_cm_connection(domain); + if (!retry && + reset_cm_connection_on_error(domain, b, status)) + { retry = true; goto reconnect; } @@ -1393,8 +1390,7 @@ reconnect: goto verify_return; } if (!NT_STATUS_IS_OK(status)) { - if (!retry && !dcerpc_binding_handle_is_connected(b)) { - invalidate_cm_connection(domain); + if (!retry && reset_cm_connection_on_error(domain, b, status)) { retry = true; goto reconnect; } @@ -1547,8 +1543,7 @@ reconnect: domain->dcname, true); /* force */ if (!NT_STATUS_IS_OK(status)) { - if (!retry && !dcerpc_binding_handle_is_connected(b)) { - invalidate_cm_connection(domain); + if (!retry && reset_cm_connection_on_error(domain, b, status)) { retry = true; goto reconnect; } @@ -1744,8 +1739,7 @@ reconnect: b, p->mem_ctx, &new_fti); if (!NT_STATUS_IS_OK(status)) { - if (!retry && !dcerpc_binding_handle_is_connected(b)) { - invalidate_cm_connection(domain); + if (!retry && reset_cm_connection_on_error(domain, b, status)) { retry = true; goto reconnect; }