diff --git a/imapserver/replace.go b/imapserver/replace.go index f0cf831..52fa434 100644 --- a/imapserver/replace.go +++ b/imapserver/replace.go @@ -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. diff --git a/imapserver/replace_test.go b/imapserver/replace_test.go index 2b6a31d..39eb3c6 100644 --- a/imapserver/replace_test.go +++ b/imapserver/replace_test.go @@ -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 ") }