diff --git a/imapserver/protocol.go b/imapserver/protocol.go index 9541db0..26e9a90 100644 --- a/imapserver/protocol.go +++ b/imapserver/protocol.go @@ -63,7 +63,7 @@ func (ss numSet) containsUID(uid store.UID, uids []store.UID, searchResult []sto last = store.UID(r.last.number) if r.last.star { last = uids[len(uids)-1] - if last > first { + if first > last { first = last } } else if r.first.star && last < first { diff --git a/imapserver/protocol_test.go b/imapserver/protocol_test.go index 4870e5a..ff1caa8 100644 --- a/imapserver/protocol_test.go +++ b/imapserver/protocol_test.go @@ -48,6 +48,9 @@ func TestNumSetContains(t *testing.T) { check(!ss2.containsUID(2, []store.UID{4, 5}, nil)) check(!ss2.containsUID(2, []store.UID{1}, nil)) + check(ss2.containsUID(2, []store.UID{2, 6}, nil)) + check(ss2.containsUID(6, []store.UID{2, 6}, nil)) + // *:2 ss3 := numSet{false, []numRange{{*star, num(2)}}} check(ss3.containsSeq(1, []store.UID{2}, nil))