<feed xmlns='http://www.w3.org/2005/Atom'>
<title>interimap/Changelog, branch debian/0.5_rc-2</title>
<subtitle>Fast bidirectional synchronization for QRESYNC-capable IMAP servers</subtitle>
<link rel='alternate' type='text/html' href='http://git.guilhem.org/interimap/'/>
<entry>
<title>Prepare new release candidate.</title>
<updated>2019-12-14T17:43:09+00:00</updated>
<author>
<name>Guilhem Moulin</name>
<email>guilhem@fripost.org</email>
</author>
<published>2019-12-14T17:43:09+00:00</published>
<link rel='alternate' type='text/html' href='http://git.guilhem.org/interimap/commit/?id=6982b9c6a01b9c121f7510ec9439d4d75cf0b96f'/>
<id>6982b9c6a01b9c121f7510ec9439d4d75cf0b96f</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>pullimap: Fix mangling of data lines starting with a dot.</title>
<updated>2019-11-18T03:37:21+00:00</updated>
<author>
<name>Guilhem Moulin</name>
<email>guilhem@fripost.org</email>
</author>
<published>2019-11-18T02:41:08+00:00</published>
<link rel='alternate' type='text/html' href='http://git.guilhem.org/interimap/commit/?id=54bed5e78cacc017ad95521f3a50ebcfe344895d'/>
<id>54bed5e78cacc017ad95521f3a50ebcfe344895d</id>
<content type='text'>
Some LMTP servers, Dovecot's in particular, trims leading dots that are
not doubled (e.g. “.foo” would become “foo”).  In RFC 5322 sec. 4.5.2
explicitly says that when an RFC 5322 line starts with a '.', the
character needs to be doubled.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Some LMTP servers, Dovecot's in particular, trims leading dots that are
not doubled (e.g. “.foo” would become “foo”).  In RFC 5322 sec. 4.5.2
explicitly says that when an RFC 5322 line starts with a '.', the
character needs to be doubled.
</pre>
</div>
</content>
</entry>
<entry>
<title>pullimap: Treat messages with a NIL RFC822 attribute as empty.</title>
<updated>2019-11-18T02:47:12+00:00</updated>
<author>
<name>Guilhem Moulin</name>
<email>guilhem@fripost.org</email>
</author>
<published>2019-11-18T02:45:51+00:00</published>
<link rel='alternate' type='text/html' href='http://git.guilhem.org/interimap/commit/?id=ee040747f5f8b096f6c6ea3172826fd4c3c14053'/>
<id>ee040747f5f8b096f6c6ea3172826fd4c3c14053</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>interimap: Gracefully ignore messages with NIL RFC822 attribute.</title>
<updated>2019-11-17T15:52:27+00:00</updated>
<author>
<name>Guilhem Moulin</name>
<email>guilhem@fripost.org</email>
</author>
<published>2019-11-15T21:25:11+00:00</published>
<link rel='alternate' type='text/html' href='http://git.guilhem.org/interimap/commit/?id=5d55a14fa52981ae2a8bb6e65a65bf410c773464'/>
<id>5d55a14fa52981ae2a8bb6e65a65bf410c773464</id>
<content type='text'>
Like we do for zero-length messages.

Closes: #944812.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Like we do for zero-length messages.

Closes: #944812.
</pre>
</div>
</content>
</entry>
<entry>
<title>Avoid sending large UID EXPUNGE|FETCH|STORE and APPEND commands.</title>
<updated>2019-11-13T05:23:57+00:00</updated>
<author>
<name>Guilhem Moulin</name>
<email>guilhem@fripost.org</email>
</author>
<published>2019-11-10T23:39:09+00:00</published>
<link rel='alternate' type='text/html' href='http://git.guilhem.org/interimap/commit/?id=0a2558aabfefd6800fe74c24e5aff2b0d47cc5e2'/>
<id>0a2558aabfefd6800fe74c24e5aff2b0d47cc5e2</id>
<content type='text'>
UID EXPUNGE|FETCH|STORE commands are now split into multiple (sequential)
commands when their set representation exceeds 4096 bytes in size.  Without
splitting logic set representations could grow arbitrarily large, and
exceed the server's maximum command size.

This adds roundtrips which could be eliminated by pipelining, but it's
unlikely to make any difference in typical synchronization work.  While set
representations seem to remain small in practice, they might grow
significantly if many non-contiguous UIDs were flagged and/or expunged, and
later synchronized at once.

Furthermore, for MULTIAPPEND-capable servers, the number of messages is
limited to 128 per APPEND command (also subject to a combined literal size of
1MiB like before).

These numbers are currently not configurable.  They're intentionally lower
than Dovecot's default maximum command size (64k) in order to avoid a
deadlock situation after sending 8k-long commands under COMPRESS=DEFLATE:
https://dovecot.org/pipermail/dovecot/2019-November/117522.html .
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
UID EXPUNGE|FETCH|STORE commands are now split into multiple (sequential)
commands when their set representation exceeds 4096 bytes in size.  Without
splitting logic set representations could grow arbitrarily large, and
exceed the server's maximum command size.

This adds roundtrips which could be eliminated by pipelining, but it's
unlikely to make any difference in typical synchronization work.  While set
representations seem to remain small in practice, they might grow
significantly if many non-contiguous UIDs were flagged and/or expunged, and
later synchronized at once.

Furthermore, for MULTIAPPEND-capable servers, the number of messages is
limited to 128 per APPEND command (also subject to a combined literal size of
1MiB like before).

These numbers are currently not configurable.  They're intentionally lower
than Dovecot's default maximum command size (64k) in order to avoid a
deadlock situation after sending 8k-long commands under COMPRESS=DEFLATE:
https://dovecot.org/pipermail/dovecot/2019-November/117522.html .
</pre>
</div>
</content>
</entry>
<entry>
<title>Net::IMAP::InterIMAP::push_flag_updates() bugfixes.</title>
<updated>2019-11-13T05:23:57+00:00</updated>
<author>
<name>Guilhem Moulin</name>
<email>guilhem@fripost.org</email>
</author>
<published>2019-11-12T00:39:29+00:00</published>
<link rel='alternate' type='text/html' href='http://git.guilhem.org/interimap/commit/?id=3aa5593af18bd4925235d1820fd0fe7c646843aa'/>
<id>3aa5593af18bd4925235d1820fd0fe7c646843aa</id>
<content type='text'>
The UNCHANGEDSINCE test from the CONDSTORE extension was incorrectly
placed after the flag list in UID STORE commands.  In practice this
meant the server didn't add the MODIFIED code when needed.

The server won't send an untagged FETCH command (and won't increase the
message's MODSEQ) if no change was made to the flag list.  A panic() was
incorrectly triggered in that case.

When the flag list was set (by another client) to a superset of the UID
STORE command currently processed, the extra flags were not synchronized.
Cf. RFC 7162 sec. 3.1.3 ex. 10.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The UNCHANGEDSINCE test from the CONDSTORE extension was incorrectly
placed after the flag list in UID STORE commands.  In practice this
meant the server didn't add the MODIFIED code when needed.

The server won't send an untagged FETCH command (and won't increase the
message's MODSEQ) if no change was made to the flag list.  A panic() was
incorrectly triggered in that case.

When the flag list was set (by another client) to a superset of the UID
STORE command currently processed, the extra flags were not synchronized.
Cf. RFC 7162 sec. 3.1.3 ex. 10.
</pre>
</div>
</content>
</entry>
<entry>
<title>interimap: raise SELECT sample set size from 64 to 256 bytes.</title>
<updated>2019-11-13T05:23:57+00:00</updated>
<author>
<name>Guilhem Moulin</name>
<email>guilhem@fripost.org</email>
</author>
<published>2019-11-11T15:43:40+00:00</published>
<link rel='alternate' type='text/html' href='http://git.guilhem.org/interimap/commit/?id=c3bf5d306ff1396d6117774316afd998f6e9874a'/>
<id>c3bf5d306ff1396d6117774316afd998f6e9874a</id>
<content type='text'>
A n-bytes set covers at least ⌊(n+1)/11⌋ UIDs (UIDs are at most 10 bytes
of size), hence 23 UIDs for 256 bytes long sets.

However we exceed it by another range, so in the worst case (if the the
higher UIDs are sparse) we'll sample ⌊(n+1)/11+1⌋ UIDs:

    1000000000,1000000002,1000000004,…,1000000046

This was 6 UIDs for n=64 which is a tad low; this is now raised to 24
UIDs.  The actual set size returned by sample() is of max size n+22
bytes (extra "$UID1:$UID2," where $UID1 and $UID2 are both ≥10⁹).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
A n-bytes set covers at least ⌊(n+1)/11⌋ UIDs (UIDs are at most 10 bytes
of size), hence 23 UIDs for 256 bytes long sets.

However we exceed it by another range, so in the worst case (if the the
higher UIDs are sparse) we'll sample ⌊(n+1)/11+1⌋ UIDs:

    1000000000,1000000002,1000000004,…,1000000046

This was 6 UIDs for n=64 which is a tad low; this is now raised to 24
UIDs.  The actual set size returned by sample() is of max size n+22
bytes (extra "$UID1:$UID2," where $UID1 and $UID2 are both ≥10⁹).
</pre>
</div>
</content>
</entry>
<entry>
<title>Test suite: add new tests for SSL/TLS.</title>
<updated>2019-11-13T05:23:57+00:00</updated>
<author>
<name>Guilhem Moulin</name>
<email>guilhem@fripost.org</email>
</author>
<published>2019-11-10T04:39:41+00:00</published>
<link rel='alternate' type='text/html' href='http://git.guilhem.org/interimap/commit/?id=a7c364bf90a4593cfbc7911b1b7536dc66b1c879'/>
<id>a7c364bf90a4593cfbc7911b1b7536dc66b1c879</id>
<content type='text'>
SSL connections are accepted on TCP port 10993.  Also, fix STARTTLS
directive, broken since fba1c36…
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
SSL connections are accepted on TCP port 10993.  Also, fix STARTTLS
directive, broken since fba1c36…
</pre>
</div>
</content>
</entry>
<entry>
<title>libinterimap: honor compress={Yes/No}.</title>
<updated>2019-11-08T04:29:31+00:00</updated>
<author>
<name>Guilhem Moulin</name>
<email>guilhem@fripost.org</email>
</author>
<published>2019-11-08T04:27:36+00:00</published>
<link rel='alternate' type='text/html' href='http://git.guilhem.org/interimap/commit/?id=37ebe331178e2b7d225a31f64463aef5448d4970'/>
<id>37ebe331178e2b7d225a31f64463aef5448d4970</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Refactor logging logic.</title>
<updated>2019-11-07T19:53:19+00:00</updated>
<author>
<name>Guilhem Moulin</name>
<email>guilhem@fripost.org</email>
</author>
<published>2019-11-07T15:42:52+00:00</published>
<link rel='alternate' type='text/html' href='http://git.guilhem.org/interimap/commit/?id=a4a371234215a7705f304875cc8af067bf3142af'/>
<id>a4a371234215a7705f304875cc8af067bf3142af</id>
<content type='text'>
Also, introduce new option 'logger-prefix' to determine the prefix of
each log line.

Closes: #942725.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Also, introduce new option 'logger-prefix' to determine the prefix of
each log line.

Closes: #942725.
</pre>
</div>
</content>
</entry>
</feed>
