diff options
-rw-r--r-- | main.go | 29 |
1 files changed, 19 insertions, 10 deletions
@@ -246,14 +246,23 @@ func (server *Server) addElements(dn string, attrs Entry) error { } for k, v := range attrs { - json, err := json.Marshal(v) - if err != nil { - return err - } - pair := &consul.KVPair{Key: prefix + "/attribute=" + k, Value: json} - _, err = server.kv.Put(pair, nil) - if err != nil { - return err + path := prefix + "/attribute=" + k + if len(v) == 0 { + // If we have zero values, delete associated k/v pair + _, err := server.kv.Delete(path, nil) + if err != nil { + return err + } + } else { + json, err := json.Marshal(v) + if err != nil { + return err + } + pair := &consul.KVPair{Key: path, Value: json} + _, err = server.kv.Put(pair, nil) + if err != nil { + return err + } } } return nil @@ -454,9 +463,9 @@ func applyFilter(entry Entry, filter message.Filter) (bool, error) { } else if fPresent, ok := filter.(message.FilterPresent); ok { what := string(fPresent) // Case insensitive search - for desc := range entry { + for desc, values := range entry { if strings.EqualFold(what, desc) { - return true, nil + return len(values) > 0, nil } } return false, nil |