Optimize some kv.List requests to not list all children

This commit is contained in:
Alex 2020-02-12 15:14:58 +01:00
parent e52a1f74a3
commit 8ca2d39971
2 changed files with 8 additions and 3 deletions

View file

@ -371,7 +371,7 @@ func (server *Server) objectExists(dn string) (bool, error) {
return false, err return false, err
} }
data, _, err := server.kv.List(prefix+"/", nil) data, _, err := server.kv.List(prefix+"/attribute=", nil)
if err != nil { if err != nil {
return false, err return false, err
} }

View file

@ -103,8 +103,13 @@ func (server *Server) handleSearchInternal(state *State, w ldap.ResponseWriter,
if err != nil { if err != nil {
return ldap.LDAPResultInvalidDNSyntax, err return ldap.LDAPResultInvalidDNSyntax, err
} }
if r.Scope() == message.SearchRequestScopeBaseObject {
basePath += "/attribute="
} else {
basePath += "/"
}
data, _, err := server.kv.List(basePath+"/", nil) data, _, err := server.kv.List(basePath, nil)
if err != nil { if err != nil {
return ldap.LDAPResultOperationsError, err return ldap.LDAPResultOperationsError, err
} }
@ -114,7 +119,7 @@ func (server *Server) handleSearchInternal(state *State, w ldap.ResponseWriter,
return ldap.LDAPResultOperationsError, err return ldap.LDAPResultOperationsError, err
} }
server.logger.Tracef("in %s: %#v", basePath+"/", data) server.logger.Tracef("in %s: %#v", basePath, data)
server.logger.Tracef("%#v", entries) server.logger.Tracef("%#v", entries)
for dn, entry := range entries { for dn, entry := range entries {