imapserver: When trying to replace a message in a non-existent mailbox, do still consume the message if it is a non-synchronized literal

Not likely to happen in the wild.
This commit is contained in:
Mechiel Lukkien 2025-03-19 22:00:34 +01:00
parent 5294a63c26
commit 9ca50ab207
No known key found for this signature in database
2 changed files with 4 additions and 1 deletions

View File

@ -77,7 +77,7 @@ func (c *conn) cmdxReplace(isUID bool, tag, cmd string, p *parser) {
return func() { xserverErrorf("finding mailbox: %v", err) }
}
if mb == nil {
xusercodeErrorf("TRYCREATE", "%w", store.ErrUnknownMailbox)
return func() { xusercodeErrorf("TRYCREATE", "%w", store.ErrUnknownMailbox) }
}
// Resolve "*" for UID or message sequence.

View File

@ -58,6 +58,9 @@ func TestReplace(t *testing.T) {
)
tc.xcodeArg(imapclient.CodeHighestModSeq(9))
// Non-existent mailbox with non-synchronizing literal should consume the literal.
tc.transactf("no", "replace 1 bogusbox {1+}\r\nx")
// Leftover data.
tc.transactf("bad", "replace 1 inbox () {6+}\r\ntest\r\n ")
}