summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJannis M. Hoffmann <jannis@fehcom.de>2023-03-02 17:34:20 +0100
committerJannis M. Hoffmann <jannis@fehcom.de>2023-03-02 17:34:20 +0100
commit1b09b3a26141c22f37b6ab3ed9af15fcbddd18f8 (patch)
tree78661ebc3a01a2a5255e9d101793e6950a8b5160 /lib
parent3e51e5465c9db91494b972d28a96cdae428c12b7 (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.pm2
-rw-r--r--lib/JWebmail/Model/ReadMails/QMailAuthuser.pm17
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) {