forked from Silverfish/proton-bridge
fix: return error if parsing header fails GODT-502
This commit is contained in:
@ -2,12 +2,14 @@
|
|||||||
|
|
||||||
Changelog [format](http://keepachangelog.com/en/1.0.0/)
|
Changelog [format](http://keepachangelog.com/en/1.0.0/)
|
||||||
|
|
||||||
## [v1.2.8] Donghai-fix-append (2020-05-XXX)
|
## [v1.2.8] Donghai-fix-append (2020-06-XXX)
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
* GODT-396 reduce number of EXISTS calls
|
* GODT-396 reduce number of EXISTS calls
|
||||||
* GODT-143 Allow appending to Sent folder when sender matches account address
|
* GODT-143 Allow appending to Sent folder when sender matches account address
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
* Do not crash when `nil` message header is parsed, it fails instead.
|
||||||
|
|
||||||
## [v1.2.7] Donghai-fix-sync - (beta 2020-05-07 live 2020-04-20)
|
## [v1.2.7] Donghai-fix-sync - (beta 2020-05-07 live 2020-04-20)
|
||||||
|
|
||||||
|
|||||||
@ -80,7 +80,7 @@ func TestCreateOrUpdateMessageMetadata(t *testing.T) {
|
|||||||
a.Equal(t, []*pmapi.Attachment(nil), msg.Attachments)
|
a.Equal(t, []*pmapi.Attachment(nil), msg.Attachments)
|
||||||
a.Equal(t, int64(-1), msg.Size)
|
a.Equal(t, int64(-1), msg.Size)
|
||||||
a.Equal(t, "", msg.MIMEType)
|
a.Equal(t, "", msg.MIMEType)
|
||||||
a.Equal(t, mail.Header(nil), msg.Header)
|
a.Equal(t, make(mail.Header), msg.Header)
|
||||||
|
|
||||||
// Change the calculated data.
|
// Change the calculated data.
|
||||||
wantSize := int64(42)
|
wantSize := int64(42)
|
||||||
|
|||||||
@ -20,6 +20,7 @@ package pmapi
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"net/mail"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
@ -113,6 +114,7 @@ var (
|
|||||||
EventItem: EventItem{ID: "hdI7aIgUO1hFplCIcJHB0jShRVsAzS0AB75wGCaiNVeIHXLmaUnt4eJ8l7c7L6uk4g0ZdXhGWG5gfh6HHgAZnw==", Action: EventCreate},
|
EventItem: EventItem{ID: "hdI7aIgUO1hFplCIcJHB0jShRVsAzS0AB75wGCaiNVeIHXLmaUnt4eJ8l7c7L6uk4g0ZdXhGWG5gfh6HHgAZnw==", Action: EventCreate},
|
||||||
Created: &Message{
|
Created: &Message{
|
||||||
ID: "hdI7aIgUO1hFplCIcJHB0jShRVsAzS0AB75wGCaiNVeIHXLmaUnt4eJ8l7c7L6uk4g0ZdXhGWG5gfh6HHgAZnw==",
|
ID: "hdI7aIgUO1hFplCIcJHB0jShRVsAzS0AB75wGCaiNVeIHXLmaUnt4eJ8l7c7L6uk4g0ZdXhGWG5gfh6HHgAZnw==",
|
||||||
|
Header: make(mail.Header),
|
||||||
Subject: "Hey there",
|
Subject: "Hey there",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -153,6 +155,7 @@ var (
|
|||||||
EventItem: EventItem{ID: "msgID1", Action: EventCreate},
|
EventItem: EventItem{ID: "msgID1", Action: EventCreate},
|
||||||
Created: &Message{
|
Created: &Message{
|
||||||
ID: "id",
|
ID: "id",
|
||||||
|
Header: make(mail.Header),
|
||||||
Subject: "Hey there",
|
Subject: "Hey there",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -160,6 +163,7 @@ var (
|
|||||||
EventItem: EventItem{ID: "msgID2", Action: EventCreate},
|
EventItem: EventItem{ID: "msgID2", Action: EventCreate},
|
||||||
Created: &Message{
|
Created: &Message{
|
||||||
ID: "id",
|
ID: "id",
|
||||||
|
Header: make(mail.Header),
|
||||||
Subject: "Hey there again",
|
Subject: "Hey there again",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@ -24,6 +24,7 @@ import (
|
|||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/mail"
|
"net/mail"
|
||||||
@ -32,6 +33,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
pmcrypto "github.com/ProtonMail/gopenpgp/crypto"
|
pmcrypto "github.com/ProtonMail/gopenpgp/crypto"
|
||||||
|
"github.com/sirupsen/logrus"
|
||||||
"golang.org/x/crypto/openpgp/packet"
|
"golang.org/x/crypto/openpgp/packet"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -211,9 +213,13 @@ func (m *Message) UnmarshalJSON(b []byte) error {
|
|||||||
|
|
||||||
if raw.Header != "" && raw.Header != "(No Header)" {
|
if raw.Header != "" && raw.Header != "(No Header)" {
|
||||||
msg, err := mail.ReadMessage(strings.NewReader(raw.Header + "\r\n\r\n"))
|
msg, err := mail.ReadMessage(strings.NewReader(raw.Header + "\r\n\r\n"))
|
||||||
if err == nil {
|
if err != nil {
|
||||||
m.Header = msg.Header
|
logrus.WithField("rawHeader", raw.Header).Trace("Failed to parse header")
|
||||||
|
return fmt.Errorf("failed to parse header of message %v: %v", m.ID, err.Error())
|
||||||
}
|
}
|
||||||
|
m.Header = msg.Header
|
||||||
|
} else {
|
||||||
|
m.Header = make(mail.Header)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
Reference in New Issue
Block a user