From 1d2e584799e5e31880a32b5f6864c9a1ad189652 Mon Sep 17 00:00:00 2001 From: Michal Horejsek Date: Mon, 31 Aug 2020 15:57:45 +0200 Subject: [PATCH] Convert panics from message parser to error --- Changelog.md | 2 +- internal/bridge/credits.go | 2 +- internal/bridge/release_notes.go | 2 +- internal/frontend/cli-ie/importexport.go | 4 +++- internal/importexport/credits.go | 2 +- internal/importexport/release_notes.go | 2 +- internal/transfer/provider_pmapi_target.go | 9 ++++++++- 7 files changed, 16 insertions(+), 7 deletions(-) diff --git a/Changelog.md b/Changelog.md index 54f469a8..293eaf3a 100644 --- a/Changelog.md +++ b/Changelog.md @@ -36,7 +36,6 @@ Changelog [format](http://keepachangelog.com/en/1.0.0/) * golang.org/x/text v0.3.2 -> v0.3.3 * Set first-start to false in bridge, not in frontend. * GODT-400 Refactor sendingInfo. - * GODT-380 Adding IE GUI to Bridge repo and building * BR: extend functionality of PopupDialog * BR: makefile APP_VERSION instead of BRIDGE_VERSION @@ -49,6 +48,7 @@ Changelog [format](http://keepachangelog.com/en/1.0.0/) * IE: Added event watch in GUI * IE: Removed `onLoginFinished` * Structure for transfer rules in QML +* GODT-213 Convert panics from message parser to error. ### Fixed * GODT-655 Fix date picker with automatic Windows DST diff --git a/internal/bridge/credits.go b/internal/bridge/credits.go index 73fae98a..9df2931e 100644 --- a/internal/bridge/credits.go +++ b/internal/bridge/credits.go @@ -15,7 +15,7 @@ // You should have received a copy of the GNU General Public License // along with ProtonMail Bridge. If not, see . -// Code generated by ./credits.sh at Fri Aug 21 10:29:43 CEST 2020. DO NOT EDIT. +// Code generated by ./credits.sh at Mon Aug 31 15:08:14 CEST 2020. DO NOT EDIT. package bridge diff --git a/internal/bridge/release_notes.go b/internal/bridge/release_notes.go index 3b882141..5b7673fd 100644 --- a/internal/bridge/release_notes.go +++ b/internal/bridge/release_notes.go @@ -15,7 +15,7 @@ // You should have received a copy of the GNU General Public License // along with ProtonMail Bridge. If not, see . -// Code generated by ./release-notes.sh at 'Thu Aug 20 14:25:06 CEST 2020'. DO NOT EDIT. +// Code generated by ./release-notes.sh at 'Mon Aug 31 15:08:14 CEST 2020'. DO NOT EDIT. package bridge diff --git a/internal/frontend/cli-ie/importexport.go b/internal/frontend/cli-ie/importexport.go index fe89d7df..ed63df34 100644 --- a/internal/frontend/cli-ie/importexport.go +++ b/internal/frontend/cli-ie/importexport.go @@ -185,7 +185,9 @@ func (f *frontendCLI) setTransferRules(t *transfer.Transfer) bool { func (f *frontendCLI) printTransferProgress(progress *transfer.Progress) { failed, imported, exported, added, total := progress.GetCounts() - f.Println(fmt.Sprintf("Progress update: %d (%d / %d) / %d, failed: %d", imported, exported, added, total, failed)) + if total != 0 { + f.Println(fmt.Sprintf("Progress update: %d (%d / %d) / %d, failed: %d", imported, exported, added, total, failed)) + } if progress.IsPaused() { f.Printf("Transfer is paused bacause %s", progress.PauseReason()) diff --git a/internal/importexport/credits.go b/internal/importexport/credits.go index 60465343..6907b3cb 100644 --- a/internal/importexport/credits.go +++ b/internal/importexport/credits.go @@ -15,7 +15,7 @@ // You should have received a copy of the GNU General Public License // along with ProtonMail Bridge. If not, see . -// Code generated by ./credits.sh at Fri Aug 21 10:29:44 CEST 2020. DO NOT EDIT. +// Code generated by ./credits.sh at Mon Aug 31 15:08:14 CEST 2020. DO NOT EDIT. package importexport diff --git a/internal/importexport/release_notes.go b/internal/importexport/release_notes.go index 52583fb6..14c883f2 100644 --- a/internal/importexport/release_notes.go +++ b/internal/importexport/release_notes.go @@ -15,7 +15,7 @@ // You should have received a copy of the GNU General Public License // along with ProtonMail Bridge. If not, see . -// Code generated by ./release-notes.sh at 'Fri Aug 21 14:17:14 CEST 2020'. DO NOT EDIT. +// Code generated by ./release-notes.sh at 'Mon Aug 31 15:08:14 CEST 2020'. DO NOT EDIT. package importexport diff --git a/internal/transfer/provider_pmapi_target.go b/internal/transfer/provider_pmapi_target.go index 40c7e92f..2220bcfc 100644 --- a/internal/transfer/provider_pmapi_target.go +++ b/internal/transfer/provider_pmapi_target.go @@ -206,7 +206,14 @@ func (p *PMAPIProvider) generateImportMsgReq(msg Message, globalMailbox *Mailbox }, nil } -func (p *PMAPIProvider) parseMessage(msg Message) (*pmapi.Message, []io.Reader, error) { +func (p *PMAPIProvider) parseMessage(msg Message) (m *pmapi.Message, r []io.Reader, err error) { + // Old message parser is panicking in some cases. + // Instead of crashing we try to convert to regular error. + defer func() { + if r := recover(); r != nil { + err = fmt.Errorf("%v", r) + } + }() message, _, _, attachmentReaders, err := pkgMessage.Parse(bytes.NewBuffer(msg.Body), "", "") return message, attachmentReaders, err }