user/dev discussion of public-inbox itself
 help / color / mirror / code / Atom feed
Search results ordered by [date|relevance]  view[summary|nested|Atom feed]
thread overview below | download mbox.gz: |
* [PATCH 0/5] watch: Maildir fixes
  @ 2020-06-29 10:34  5% ` Eric Wong
  0 siblings, 0 replies; 2+ results
From: Eric Wong @ 2020-06-29 10:34 UTC (permalink / raw)
  To: meta

The introduction of NNTP and IMAP support in -watch introduced
some annoying-but-non-fatal regressions for existing Maildir
users, in one case due to a race fix.

  https://public-inbox.org/meta/20200627100400.9871-1-e@yhbt.net/

It turned out -watch could missing full scans at startup due
to the old alarm(1)-triggered scan firing too soon, and
switching to signalfd(2)[*] exposed performance problems fixed
by [PATCH 1/5] in this series.

PATCH 2/5 was just a minor debugging change while I was fixing
commit 52e37476e8e62e8e54104d9a2abcf2a86d1d1a32
("eml: header_str_set: correctly encode UTF-8 headers")

3 & 4 may not be strictly necessary at the moment, but they
could be in the future if subprocesses (spamc, git) we spawn
ever depend on SIGCHLD.  More signals may be unblocked in
subprocesses in the future, perhaps only SIGINT (from Ctrl-C)
could remain masked.

Finally, 5/5 fixes the zombies introduced which kicked off
the investigation into this series.

Eric Wong (5):
  watch: check for duplicates in ->over before spamcheck
  watch: show path for warnings from spam messages
  watch: ensure SIGCHLD works in forked children
  spawn: unblock SIGCHLD in subprocess
  watch: make waitpid() synchronous for Maildir scans

 lib/PublicInbox/Import.pm       |  2 +-
 lib/PublicInbox/Spawn.pm        | 11 +++++++---
 lib/PublicInbox/SpawnPP.pm      |  5 +++++
 lib/PublicInbox/V2Writable.pm   |  2 +-
 lib/PublicInbox/WatchMaildir.pm | 37 +++++++++++++++++++++++++--------
 t/spawn.t                       | 27 ++++++++++++++++++++++++
 6 files changed, 70 insertions(+), 14 deletions(-)

^ permalink raw reply	[relevance 5%]

* [PATCH] eml: header_str_set: correctly encode UTF-8 headers
@ 2020-06-28  7:14  7% Eric Wong
  0 siblings, 0 replies; 2+ results
From: Eric Wong @ 2020-06-28  7:14 UTC (permalink / raw)
  To: meta

Apparently, using $1 from an octet string still results in a
multi-byte string.  Thus we need to perform utf8::encode after
the regexp character match to ensure wide characters don't get
passed to encode_base64.

This fixes a bug in which caused -watch to crash when using
PublicInbox::Filter::SubjectTag to remove "[list prefix]"
tags from Subject: lines.

I only found this bug because the proposed -watch updates for
NNTP/IMAP support introduced a possible bug which triggered a
full rescan of old archives:

  https://public-inbox.org/meta/20200627100400.9871-1-e@yhbt.net/
---
 lib/PublicInbox/Eml.pm |  7 +++++--
 t/filter_subjecttag.t  | 10 ++++++++++
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/lib/PublicInbox/Eml.pm b/lib/PublicInbox/Eml.pm
index ec682b919ea..1fecd41be9f 100644
--- a/lib/PublicInbox/Eml.pm
+++ b/lib/PublicInbox/Eml.pm
@@ -368,9 +368,12 @@ sub header_str_set {
 	my ($self, $name, @vals) = @_;
 	for (@vals) {
 		next unless /[^\x20-\x7e]/;
-		utf8::encode($_); # to octets
 		# 39: int((75 - length("Subject: =?UTF-8?B?".'?=') ) / 4) * 3;
-		s/(.{1,39})/'=?UTF-8?B?'.encode_base64($1, '').'?='/ges;
+		s/(.{1,39})/
+			my $x = $1;
+			utf8::encode($x); # to octets
+			'=?UTF-8?B?'.encode_base64($x, '').'?='
+		/xges;
 	}
 	header_set($self, $name, @vals);
 }
diff --git a/t/filter_subjecttag.t b/t/filter_subjecttag.t
index 75effa2769a..e2d91e7416e 100644
--- a/t/filter_subjecttag.t
+++ b/t/filter_subjecttag.t
@@ -24,4 +24,14 @@ $mime->header_str_set('Subject', '[FOO] bar');
 $mime = $f->delivery($mime);
 is($mime->header('Subject'), 'bar', 'filtered non-reply');
 
+$f = PublicInbox::Filter::SubjectTag->new(-tag => '[sox-devel]');
+my $eml = PublicInbox::Eml->new(<<EOF);
+Subject: Re: [SoX-devel] =?utf-8?b?xaE?=
+
+EOF
+$eml = $f->delivery($eml);
+my $s = $eml->header('Subject');
+utf8::encode($s); # to octets
+is($s, "Re: \xc5\xa1", 'subject filtered correctly');
+
 done_testing();

^ permalink raw reply related	[relevance 7%]

Results 1-2 of 2 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2020-06-27 10:03     [PATCH 00/34] watch: add IMAP and NNTP support Eric Wong
2020-06-29 10:34  5% ` [PATCH 0/5] watch: Maildir fixes Eric Wong
2020-06-28  7:14  7% [PATCH] eml: header_str_set: correctly encode UTF-8 headers Eric Wong

Code repositories for project(s) associated with this public inbox

	https://80x24.org/public-inbox.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).