mirror of
https://github.com/mjl-/mox.git
synced 2025-06-28 01:48:15 +03:00
queue: before removing files from the queue, close them, so removing doesn't fail on windows
Mostly relevant for localserve, since full operation doesn't work on windows.
This commit is contained in:
parent
5f9f45983d
commit
75bb1bfa2f
@ -82,8 +82,10 @@ func deliverLocalserve(ctx context.Context, log mlog.Log, msgs []*Msg, backoff t
|
|||||||
}
|
}
|
||||||
msgr = store.FileMsgReader(m0.MsgPrefix, f)
|
msgr = store.FileMsgReader(m0.MsgPrefix, f)
|
||||||
defer func() {
|
defer func() {
|
||||||
err := msgr.Close()
|
if msgr != nil {
|
||||||
log.Check(err, "closing message after delivery attempt")
|
err := msgr.Close()
|
||||||
|
log.Check(err, "closing message after delivery attempt")
|
||||||
|
}
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -99,5 +101,12 @@ func deliverLocalserve(ctx context.Context, log mlog.Log, msgs []*Msg, backoff t
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Infox("smtp transaction for delivery failed", err)
|
log.Infox("smtp transaction for delivery failed", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Must close before processing, because that may try to remove the message file,
|
||||||
|
// and on Windows we can't have it open when we remove it.
|
||||||
|
cerr := msgr.Close()
|
||||||
|
log.Check(cerr, "closing message after delivery attempt")
|
||||||
|
msgr = nil
|
||||||
|
|
||||||
processDeliveries(log, m0, msgs, addr, "localhost", backoff, rcptErrs, err)
|
processDeliveries(log, m0, msgs, addr, "localhost", backoff, rcptErrs, err)
|
||||||
}
|
}
|
||||||
|
@ -215,8 +215,10 @@ func deliverSubmit(qlog mlog.Log, resolver dns.Resolver, dialer smtpclient.Diale
|
|||||||
}
|
}
|
||||||
msgr = store.FileMsgReader(m0.MsgPrefix, f)
|
msgr = store.FileMsgReader(m0.MsgPrefix, f)
|
||||||
defer func() {
|
defer func() {
|
||||||
err := msgr.Close()
|
if msgr != nil {
|
||||||
qlog.Check(err, "closing message after delivery attempt")
|
err := msgr.Close()
|
||||||
|
qlog.Check(err, "closing message after delivery attempt")
|
||||||
|
}
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -230,6 +232,13 @@ func deliverSubmit(qlog mlog.Log, resolver dns.Resolver, dialer smtpclient.Diale
|
|||||||
if submiterr != nil {
|
if submiterr != nil {
|
||||||
qlog.Infox("smtp transaction for delivery failed", submiterr)
|
qlog.Infox("smtp transaction for delivery failed", submiterr)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Must close before processing, because that may try to remove the message file,
|
||||||
|
// and on Windows we can't have it open when we remove it.
|
||||||
|
cerr := msgr.Close()
|
||||||
|
qlog.Check(cerr, "closing message after delivery attempt")
|
||||||
|
msgr = nil
|
||||||
|
|
||||||
failed, delivered = processDeliveries(qlog, m0, msgs, addr, transport.Host, backoff, rcptErrs, submiterr)
|
failed, delivered = processDeliveries(qlog, m0, msgs, addr, transport.Host, backoff, rcptErrs, submiterr)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user