From c956cf285de9718d3379d44f05dd9ca73d629965 Mon Sep 17 00:00:00 2001 From: Zac Bergquist Date: Wed, 16 Aug 2023 09:20:01 -0600 Subject: [PATCH] Work around go-ldap's lack of errors.Is support This is hopefully a temporary change that can be removed when the upstream fix [1] is merged. [1] https://github.com/go-ldap/ldap/pull/461 --- lib/srv/desktop/windows_server.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/srv/desktop/windows_server.go b/lib/srv/desktop/windows_server.go index e79925fb00d00..e3e53a8e0ae68 100644 --- a/lib/srv/desktop/windows_server.go +++ b/lib/srv/desktop/windows_server.go @@ -526,8 +526,13 @@ func (s *WindowsService) initializeLDAP() error { s.ldapInitialized = false // failures due to timeouts might be transient, so retry more frequently + // + // TODO(zmb3): errors.Is does not work properly on ldap.Error + // (remove the extra errors.As() check when https://github.com/go-ldap/ldap/pull/461 merges) retryAfter := windowsDesktopServiceCertRetryInterval - if errors.Is(err, context.DeadlineExceeded) { + var ldapErr *ldap.Error + if errors.Is(err, context.DeadlineExceeded) || + (errors.As(err, &ldapErr) && errors.Is(ldapErr.Err, context.DeadlineExceeded)) { retryAfter = ldapTimeoutRetryInterval }