aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Auvolat <alex@adnab.me>2020-02-12 15:14:58 +0100
committerAlex Auvolat <alex@adnab.me>2020-02-12 15:14:58 +0100
commit8ca2d399710195c5045c4a7db02e3c867bd4e87e (patch)
treedad8507b37608f753f459f4fe55dc634dc38426f
parente52a1f74a38cad3df083885aa8860a870a131cdb (diff)
downloadbottin-8ca2d399710195c5045c4a7db02e3c867bd4e87e.tar.gz
bottin-8ca2d399710195c5045c4a7db02e3c867bd4e87e.zip
Optimize some kv.List requests to not list all children
-rw-r--r--main.go2
-rw-r--r--read.go9
2 files changed, 8 insertions, 3 deletions
diff --git a/main.go b/main.go
index 9267175..381c3b5 100644
--- a/main.go
+++ b/main.go
@@ -371,7 +371,7 @@ func (server *Server) objectExists(dn string) (bool, error) {
return false, err
}
- data, _, err := server.kv.List(prefix+"/", nil)
+ data, _, err := server.kv.List(prefix+"/attribute=", nil)
if err != nil {
return false, err
}
diff --git a/read.go b/read.go
index 43833e8..9af9dbd 100644
--- a/read.go
+++ b/read.go
@@ -103,8 +103,13 @@ func (server *Server) handleSearchInternal(state *State, w ldap.ResponseWriter,
if err != nil {
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 {
return ldap.LDAPResultOperationsError, err
}
@@ -114,7 +119,7 @@ func (server *Server) handleSearchInternal(state *State, w ldap.ResponseWriter,
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)
for dn, entry := range entries {