diff options
author | Jannis M. Hoffmann <jannis@fehcom.de> | 2023-03-02 17:34:20 +0100 |
---|---|---|
committer | Jannis M. Hoffmann <jannis@fehcom.de> | 2023-03-02 17:34:20 +0100 |
commit | 1b09b3a26141c22f37b6ab3ed9af15fcbddd18f8 (patch) | |
tree | 78661ebc3a01a2a5255e9d101793e6950a8b5160 /lib | |
parent | 3e51e5465c9db91494b972d28a96cdae428c12b7 (diff) |
Bugfixes
1. correctly read mime parts
2. avoid encoding issues when parsing json form qmauth
3. use 'replace' instead of 'strict' error handling when decoding
mails in qmauth.py
Diffstat (limited to 'lib')
-rw-r--r-- | lib/JWebmail/Controller/Webmail.pm | 2 | ||||
-rw-r--r-- | lib/JWebmail/Model/ReadMails/QMailAuthuser.pm | 17 |
2 files changed, 11 insertions, 8 deletions
diff --git a/lib/JWebmail/Controller/Webmail.pm b/lib/JWebmail/Controller/Webmail.pm index 2f71021..a1d25c3 100644 --- a/lib/JWebmail/Controller/Webmail.pm +++ b/lib/JWebmail/Controller/Webmail.pm @@ -211,7 +211,7 @@ sub readmail { if ($type) { if ($mail->{head}{mime}{content_maintype} eq 'multipart') { - my $content = first {$_->{head}{mime}{content_subtype} eq $type} @{ $mail->{body} }; + my $content = first {$_->{head}{mime}{content_subtype} eq $type} $mail->{body}{parts}->@*; $self->render(text => $content->{body}); } elsif ($mail->{head}{mime}{content_subtype} eq $type) { diff --git a/lib/JWebmail/Model/ReadMails/QMailAuthuser.pm b/lib/JWebmail/Model/ReadMails/QMailAuthuser.pm index 956c137..a61cf01 100644 --- a/lib/JWebmail/Model/ReadMails/QMailAuthuser.pm +++ b/lib/JWebmail/Model/ReadMails/QMailAuthuser.pm @@ -193,7 +193,7 @@ sub execute { close $writer or die 'closing write pipe failed'; - binmode $reader, ':encoding(UTF-8)'; + #binmode $reader, ':encoding(UTF-8)'; my $input = <$reader>; close $reader or die 'closing read pipe failed'; @@ -203,12 +203,15 @@ sub execute { my $resp; if ($rc == 3 || $rc == 0) { - eval { $resp = decode_json $input; 1 } - or $resp = { - info => "error decoding response", - response => $input, - cause => $@, - return_code => $rc, + eval { $resp = decode_json $input if $input; 1 } + or do { + $resp = { + info => "error decoding response", + response => $input, + cause => $@, + return_code => $rc, + }; + $rc = 3; }; } elsif ($rc) { |