mirror of
https://github.com/mjl-/mox.git
synced 2025-07-12 12:24:38 +03:00
when a message contains a date that we cannon marhsal to json, adjust the date
found a message with a 24 hour time zone offset, which Go's json package cannot marshal. in that case, we adjust the date to utc.
This commit is contained in:
@ -356,6 +356,18 @@ func parseHeader(r io.Reader) (textproto.MIMEHeader, error) {
|
||||
|
||||
func parseEnvelope(h mail.Header) (*Envelope, error) {
|
||||
date, _ := h.Date()
|
||||
|
||||
// We currently marshal this field to JSON. But JSON cannot represent all
|
||||
// time.Time. Time zone of 24:00 was seen in the wild. We won't try for extreme
|
||||
// years, but we can readjust timezones.
|
||||
// todo: remove this once we no longer store using json.
|
||||
_, offset := date.Zone()
|
||||
if date.Year() > 9999 {
|
||||
date = time.Time{}
|
||||
} else if offset <= -24*3600 || offset >= 24*3600 {
|
||||
date = time.Unix(date.Unix(), 0).UTC()
|
||||
}
|
||||
|
||||
env := &Envelope{
|
||||
date,
|
||||
h.Get("Subject"),
|
||||
|
Reference in New Issue
Block a user