fix: check for nil ldap connection in reconnect

This commit is contained in:
Stavros
2026-06-08 15:43:40 +03:00
parent ab6a2b4c38
commit 9f73f79a37
2 changed files with 8 additions and 3 deletions
+1 -1
View File
@@ -8,7 +8,7 @@ import (
) )
func (app *BootstrapApp) setupServices() error { func (app *BootstrapApp) setupServices() error {
ldapService, err := service.NewLdapService(app.log, app.config, app.ding) ldapService, err := service.NewLdapService(app.log, app.config, app.ctx, app.ding)
if err != nil { if err != nil {
app.log.App.Warn().Err(err).Msg("Failed to initialize LDAP connection, will continue without it") app.log.App.Warn().Err(err).Msg("Failed to initialize LDAP connection, will continue without it")
+7 -2
View File
@@ -17,6 +17,7 @@ import (
type LdapService struct { type LdapService struct {
log *logger.Logger log *logger.Logger
config model.Config config model.Config
ctx context.Context
conn *ldapgo.Conn conn *ldapgo.Conn
mutex sync.RWMutex mutex sync.RWMutex
@@ -26,6 +27,7 @@ type LdapService struct {
func NewLdapService( func NewLdapService(
log *logger.Logger, log *logger.Logger,
config model.Config, config model.Config,
ctx context.Context,
dg *ding.Ding, dg *ding.Ding,
) (*LdapService, error) { ) (*LdapService, error) {
if config.LDAP.Address == "" { if config.LDAP.Address == "" {
@@ -35,6 +37,7 @@ func NewLdapService(
ldap := &LdapService{ ldap := &LdapService{
log: log, log: log,
config: config, config: config,
ctx: ctx,
} }
// Check whether authentication with client certificate is possible // Check whether authentication with client certificate is possible
@@ -259,7 +262,9 @@ func (ldap *LdapService) reconnect(interval time.Duration) error {
exp.Reset() exp.Reset()
operation := func() (*ldapgo.Conn, error) { operation := func() (*ldapgo.Conn, error) {
ldap.conn.Close() if ldap.conn != nil {
ldap.conn.Close()
}
conn, err := ldap.connect() conn, err := ldap.connect()
if err != nil { if err != nil {
return nil, err return nil, err
@@ -267,7 +272,7 @@ func (ldap *LdapService) reconnect(interval time.Duration) error {
return conn, nil return conn, nil
} }
_, err := backoff.Retry(context.TODO(), operation, backoff.WithBackOff(exp), backoff.WithMaxTries(3)) _, err := backoff.Retry(ldap.ctx, operation, backoff.WithBackOff(exp), backoff.WithMaxTries(3))
if err != nil { if err != nil {
return err return err