33 lines
549 B
Go
33 lines
549 B
Go
|
package ldap
|
||
|
|
||
|
import (
|
||
|
"net"
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
func (ls *LDAPServer) Close(boundDN string, conn net.Conn) error {
|
||
|
for _, p := range ls.providers {
|
||
|
p.delayDeleteUserInfo(boundDN)
|
||
|
}
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func (pi *ProviderInstance) delayDeleteUserInfo(dn string) {
|
||
|
ticker := time.NewTicker(30 * time.Second)
|
||
|
quit := make(chan struct{})
|
||
|
go func() {
|
||
|
for {
|
||
|
select {
|
||
|
case <-ticker.C:
|
||
|
pi.boundUsersMutex.Lock()
|
||
|
delete(pi.boundUsers, dn)
|
||
|
pi.boundUsersMutex.Unlock()
|
||
|
close(quit)
|
||
|
case <-quit:
|
||
|
ticker.Stop()
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
}()
|
||
|
}
|