mirror of
https://github.com/mjl-/mox.git
synced 2025-06-28 09:38:15 +03:00
Add missing wlocks around message delivery to account, mostly for tests.
This commit is contained in:
parent
2da280f2bb
commit
684c716e4d
@ -450,8 +450,11 @@ func TestCtl(t *testing.T) {
|
|||||||
defer msgf.Close()
|
defer msgf.Close()
|
||||||
_, err = msgf.Write(content)
|
_, err = msgf.Write(content)
|
||||||
tcheck(t, err, "write message file")
|
tcheck(t, err, "write message file")
|
||||||
err = acc.DeliverMailbox(ctl.log, "Inbox", m, msgf)
|
|
||||||
tcheck(t, err, "deliver message")
|
acc.WithWLock(func() {
|
||||||
|
err = acc.DeliverMailbox(ctl.log, "Inbox", m, msgf)
|
||||||
|
tcheck(t, err, "deliver message")
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
var msgBadSize store.Message
|
var msgBadSize store.Message
|
||||||
|
@ -293,6 +293,8 @@ func TestAuthenticateTLSClientCert(t *testing.T) {
|
|||||||
tcheck(t, err, "open account")
|
tcheck(t, err, "open account")
|
||||||
err = acc.SetPassword(pkglog, "test1234")
|
err = acc.SetPassword(pkglog, "test1234")
|
||||||
tcheck(t, err, "set password")
|
tcheck(t, err, "set password")
|
||||||
|
err = acc.Close()
|
||||||
|
tcheck(t, err, "close account")
|
||||||
tc = startArgsMore(t, true, true, nil, &clientConfig, false, true, true, "mjl", addClientCert)
|
tc = startArgsMore(t, true, true, nil, &clientConfig, false, true, true, "mjl", addClientCert)
|
||||||
tc.transactf("no", "authenticate plain %s", base64.StdEncoding.EncodeToString([]byte("\u0000other@mox.example\u0000test1234")))
|
tc.transactf("no", "authenticate plain %s", base64.StdEncoding.EncodeToString([]byte("\u0000other@mox.example\u0000test1234")))
|
||||||
tc.close()
|
tc.close()
|
||||||
|
@ -646,10 +646,11 @@ func tinsertmsg(t *testing.T, acc *store.Account, mailbox string, m *store.Messa
|
|||||||
defer mf.Close()
|
defer mf.Close()
|
||||||
_, err = mf.Write([]byte(msg))
|
_, err = mf.Write([]byte(msg))
|
||||||
tcheck(t, err, "write message")
|
tcheck(t, err, "write message")
|
||||||
err = acc.DeliverMailbox(pkglog, mailbox, m, mf)
|
|
||||||
tcheck(t, err, "deliver message")
|
acc.WithWLock(func() {
|
||||||
err = mf.Close()
|
err = acc.DeliverMailbox(pkglog, mailbox, m, mf)
|
||||||
tcheck(t, err, "close message")
|
tcheck(t, err, "deliver message")
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func tretrain(t *testing.T, acc *store.Account) {
|
func tretrain(t *testing.T, acc *store.Account) {
|
||||||
|
@ -41,13 +41,15 @@ func TestExport(t *testing.T) {
|
|||||||
_, err = msgFile.Write([]byte(msg))
|
_, err = msgFile.Write([]byte(msg))
|
||||||
tcheck(t, err, "write message")
|
tcheck(t, err, "write message")
|
||||||
|
|
||||||
m := Message{Received: time.Now(), Size: int64(len(msg))}
|
acc.WithWLock(func() {
|
||||||
err = acc.DeliverMailbox(pkglog, "Inbox", &m, msgFile)
|
m := Message{Received: time.Now(), Size: int64(len(msg))}
|
||||||
tcheck(t, err, "deliver")
|
err = acc.DeliverMailbox(pkglog, "Inbox", &m, msgFile)
|
||||||
|
tcheck(t, err, "deliver")
|
||||||
|
|
||||||
m = Message{Received: time.Now(), Size: int64(len(msg))}
|
m = Message{Received: time.Now(), Size: int64(len(msg))}
|
||||||
err = acc.DeliverMailbox(pkglog, "Trash", &m, msgFile)
|
err = acc.DeliverMailbox(pkglog, "Trash", &m, msgFile)
|
||||||
tcheck(t, err, "deliver")
|
tcheck(t, err, "deliver")
|
||||||
|
})
|
||||||
|
|
||||||
var maildirZip, maildirTar, mboxZip, mboxTar bytes.Buffer
|
var maildirZip, maildirTar, mboxZip, mboxTar bytes.Buffer
|
||||||
|
|
||||||
|
@ -42,8 +42,11 @@ func TestThreadingUpgrade(t *testing.T) {
|
|||||||
MsgPrefix: []byte(s),
|
MsgPrefix: []byte(s),
|
||||||
Received: recv,
|
Received: recv,
|
||||||
}
|
}
|
||||||
err = acc.DeliverMailbox(log, "Inbox", &m, f)
|
acc.WithWLock(func() {
|
||||||
tcheck(t, err, "deliver")
|
err = acc.DeliverMailbox(log, "Inbox", &m, f)
|
||||||
|
tcheck(t, err, "deliver")
|
||||||
|
})
|
||||||
|
|
||||||
if expThreadID == 0 {
|
if expThreadID == 0 {
|
||||||
expThreadID = m.ID
|
expThreadID = m.ID
|
||||||
}
|
}
|
||||||
|
@ -264,28 +264,30 @@ type testmsg struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func tdeliver(t *testing.T, acc *store.Account, tm *testmsg) {
|
func tdeliver(t *testing.T, acc *store.Account, tm *testmsg) {
|
||||||
msgFile, err := store.CreateMessageTemp(pkglog, "webmail-test")
|
acc.WithWLock(func() {
|
||||||
tcheck(t, err, "create message temp")
|
msgFile, err := store.CreateMessageTemp(pkglog, "webmail-test")
|
||||||
defer os.Remove(msgFile.Name())
|
tcheck(t, err, "create message temp")
|
||||||
defer msgFile.Close()
|
defer os.Remove(msgFile.Name())
|
||||||
size, err := msgFile.Write(tm.msg.Marshal(t))
|
defer msgFile.Close()
|
||||||
tcheck(t, err, "write message temp")
|
size, err := msgFile.Write(tm.msg.Marshal(t))
|
||||||
m := store.Message{
|
tcheck(t, err, "write message temp")
|
||||||
Flags: tm.Flags,
|
m := store.Message{
|
||||||
RcptToLocalpart: "mox",
|
Flags: tm.Flags,
|
||||||
RcptToDomain: "other.example",
|
RcptToLocalpart: "mox",
|
||||||
MsgFromLocalpart: "mjl",
|
RcptToDomain: "other.example",
|
||||||
MsgFromDomain: "mox.example",
|
MsgFromLocalpart: "mjl",
|
||||||
DKIMDomains: []string{"mox.example"},
|
MsgFromDomain: "mox.example",
|
||||||
Keywords: tm.Keywords,
|
DKIMDomains: []string{"mox.example"},
|
||||||
Size: int64(size),
|
Keywords: tm.Keywords,
|
||||||
}
|
Size: int64(size),
|
||||||
err = acc.DeliverMailbox(pkglog, tm.Mailbox, &m, msgFile)
|
}
|
||||||
tcheck(t, err, "deliver test message")
|
err = acc.DeliverMailbox(pkglog, tm.Mailbox, &m, msgFile)
|
||||||
err = msgFile.Close()
|
tcheck(t, err, "deliver test message")
|
||||||
tcheck(t, err, "closing test message")
|
err = msgFile.Close()
|
||||||
tm.m = m
|
tcheck(t, err, "closing test message")
|
||||||
tm.ID = m.ID
|
tm.m = m
|
||||||
|
tm.ID = m.ID
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func readBody(r io.Reader) string {
|
func readBody(r io.Reader) string {
|
||||||
|
@ -358,7 +358,7 @@ func (x XOps) MailboxesMarkRead(ctx context.Context, log mlog.Log, acc *store.Ac
|
|||||||
|
|
||||||
// MessageMove moves messages to the mailbox represented by mailboxName, or to mailboxID if mailboxName is empty.
|
// MessageMove moves messages to the mailbox represented by mailboxName, or to mailboxID if mailboxName is empty.
|
||||||
func (x XOps) MessageMove(ctx context.Context, log mlog.Log, acc *store.Account, messageIDs []int64, mailboxName string, mailboxID int64) {
|
func (x XOps) MessageMove(ctx context.Context, log mlog.Log, acc *store.Account, messageIDs []int64, mailboxName string, mailboxID int64) {
|
||||||
acc.WithRLock(func() {
|
acc.WithWLock(func() {
|
||||||
var changes []store.Change
|
var changes []store.Change
|
||||||
|
|
||||||
x.DBWrite(ctx, acc, func(tx *bstore.Tx) {
|
x.DBWrite(ctx, acc, func(tx *bstore.Tx) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user