Authentication-Results: mail-b.sr.ht; dkim=pass header.d=emersion.fr header.i=@emersion.fr Received: from mail-4317.proton.ch (mail-4317.proton.ch [185.70.43.17]) by mail-b.sr.ht (Postfix) with ESMTPS id E91C511EF48 for <~sircmpwn/sr.ht-dev@lists.sr.ht>; Tue, 14 Mar 2023 16:15:22 +0000 (UTC) Date: Tue, 14 Mar 2023 16:15:07 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=emersion.fr; s=protonmail; t=1678810520; x=1679069720; bh=EPfxuv3F8SA1StV12i0rgZi5/SG4XP5KdFSmYpBnR5s=; h=Date:To:From:Subject:Message-ID:Feedback-ID:From:To:Cc:Date: Subject:Reply-To:Feedback-ID:Message-ID:BIMI-Selector; b=A5j6B5+tmzrO5UU58Q4FOH7MvabxII2ZXVRW5GrObdSnGXItUnn2zquPs3POefbLF EBdkhZoJY8iXJoKpRSJWKxMlztML06Od7Jt9hwmk+NOLT9dLy6BT/bXfOb7TigSGf3 eu3RB3deF6EE809EaUA0AzsUW633X//xoqzlARzYWOK7gVrTw5chPslWBTMMLCRgCF znPlsDgdWMvgLpd6xpgpBOTPvmuq++aptTaaxSzEHhHdr4Zo4N8uk2wgpyILOvIHmk jgdto6pu8rjLVjFHUiuOlKKO+JB8zirp0uXmn4XEOGT53O9klHjPYNmi+4lSfmANuE tSdKu2wWCIVtg== To: ~sircmpwn/sr.ht-dev@lists.sr.ht From: Simon Ser Subject: [PATCH lists.sr.ht 1/2] api/graph: skip emails with decoding errors in threadResolver.Blocks Message-ID: <20230314161502.414711-1-contact@emersion.fr> Feedback-ID: 1358184:user:proton MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Some emails can have a bad encoding, a bad charset, a bad header field, etc. Skip these so that we can try to return a partial thread. Ideally we'd return a list of errors alongside the partial thread, but gqlgen doesn't support this yet. --- api/graph/schema.resolvers.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/api/graph/schema.resolvers.go b/api/graph/schema.resolvers.go index 7d6692d16121..89f799c986bf 100644 --- a/api/graph/schema.resolvers.go +++ b/api/graph/schema.resolvers.go @@ -10,6 +10,7 @@ import ( =09"errors" =09"fmt" =09"io" +=09"log" =09"net/url" =09"strings" =09"time" @@ -1827,12 +1828,14 @@ func (r *threadResolver) Blocks(ctx context.Context= , obj *model.Thread) ([]*mode =20 =09=09=09mr, err :=3D mail.CreateReader(bytes.NewReader(email.RawEnvelope)= ) =09=09=09if err !=3D nil { -=09=09=09=09return fmt.Errorf("failed to create mail reader: %v", err) +=09=09=09=09log.Printf("Failed to create reader for email %v: %v", email.I= D, err) +=09=09=09=09continue =09=09=09} =09=09=09header :=3D mr.Header =09=09=09text, err :=3D getMailText(mr) =09=09=09if err !=3D nil { -=09=09=09=09return fmt.Errorf("failed to get mail text: %v", err) +=09=09=09=09log.Printf("Failed to get mail text for email %v: %v", email.I= D, err) +=09=09=09=09continue =09=09=09} =09=09=09mr.Close() =20 base-commit: fdc1c4c7c546ed32e42c8f014873e94c2e7d91f1 --=20 2.39.2