aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuilhem Moulin <guilhem@fripost.org>2015-07-26 19:52:52 +0200
committerGuilhem Moulin <guilhem@fripost.org>2015-07-26 19:52:52 +0200
commit8993a9dcb8dedb43e8f8c1b86e1f193da29bcf64 (patch)
tree58afde8a409e4e90acdfc319e9b844708c227a90
parent9784997b21a30a2c5a8db3742a42faebad9e169d (diff)
Make --oneshot the default mode and disable watch mode.
Due to multiple bugs in dovecot 2.13 and 2.18's implementation of the NOTIFY extension [RFC5465]: http://dovecot.org/pipermail/dovecot/2015-July/101473.html http://dovecot.org/pipermail/dovecot/2015-July/101474.html http://dovecot.org/pipermail/dovecot/2015-July/101514.html
-rwxr-xr-ximapsync9
-rw-r--r--imapsync.119
2 files changed, 6 insertions, 22 deletions
diff --git a/imapsync b/imapsync
index b9d2d31..339979c 100755
--- a/imapsync
+++ b/imapsync
@@ -47,7 +47,6 @@ sub usage(;$) {
print STDERR "Synchronize the given MAILBOXes between two QRESYNC-capable IMAP4rev1 servers.\n"
."Options:\n"
." --config=FILE Specify an alternate configuration file\n"
- ." -1, --oneshot Exit as soon as all mailboxes are synchronized\n"
." --repair List the database anomalies and try to repair them\n"
." -q, --quiet Try to be quiet\n"
." --debug Turn on debug mode\n"
@@ -55,7 +54,7 @@ sub usage(;$) {
}
exit $rv;
}
-usage(1) unless GetOptions(\%CONFIG, qw/config=s quiet|q oneshot|1 repair debug help|h/);
+usage(1) unless GetOptions(\%CONFIG, qw/config=s quiet|q repair debug help|h/);
usage(0) if $CONFIG{help};
@@ -224,7 +223,9 @@ foreach my $name (qw/local remote/) {
#my $mailboxes = $client->list((uc $config{'subscribed-only'} eq 'TRUE' ? '(SUBSCRIBED)' : '' )
# .$config{mailboxes}, 'SUBSCRIBED');
# $client->notify('SELECTED', 'MAILBOXES ('.join(' ', keys %$mailboxes).')');
- $client->notify(qw/SELECTED SUBSCRIBED/) unless $CONFIG{oneshot};
+ # XXX NOTIFY doesn't work as expected for INBOX
+ # http://dovecot.org/pipermail/dovecot/2015-July/101514.html
+ #$client->notify(qw/SELECTED SUBSCRIBED/) if $CONFIG{watch};
# XXX We shouldn't need to ask for STATUS responses here, and use
# NOTIFY's STATUS indicator instead. However Dovecot violates RFC
# 5464: http://dovecot.org/pipermail/dovecot/2015-July/101474.html
@@ -1151,7 +1152,7 @@ while(1) {
}
}
# clean state!
- exit 0 if $CONFIG{oneshot};
+ exit 0 unless $CONFIG{watch};
wait_notifications(900);
}
diff --git a/imapsync.1 b/imapsync.1
index f4f6965..8c22222 100644
--- a/imapsync.1
+++ b/imapsync.1
@@ -10,8 +10,7 @@ imapsync \- IMAP-to-IMAP synchronization program for QRESYNC-capable servers
.SH DESCRIPTION
.PP
.B imapsync\fR performs stateful synchronization between two IMAP4rev1
-servers, then (unless the flag \fB\-\-oneshot\fR is set) keeps both
-connection open and wait for new changes to arrive.
+servers.
Such synchronization is made possible by the QRESYNC extension from
[RFC7162]; for convenience reasons support for LIST\-EXTENDED [RFC5258],
LIST\-STATUS [RFC5819] and UIDPLUS [RFC4315] is also required.
@@ -77,15 +76,6 @@ providing extra arguments limits the synchronization to the given
\fIMAILBOX\fRes only.
.PP
-In its default mode (unless the flag \fB\-\-oneshot\fR or
-\fB\-\-repair\fR is set), \fBimapsync\fR does not exit once all
-mailboxes have been synchronized. Instead, it keeps both connection
-open and uses the NOTIFY command from [RFC5465] to be notified of new
-changes (on any mailbox) as soon as they arrive. If no update is sent
-in 15 minutes, a NOOP command is issued in order not to trigger the
-servers' inactivity timeout and be logged out.
-
-.PP
If the synchronization was interrupted during a previous run while some
messages were being replicated (but before the UIDNEXT or HIGHESTMODSEQ
values have been updated), \fBimapsync\fR performs a \(lqfull
@@ -104,13 +94,6 @@ Specify an alternate configuration file. Relative paths start from
environment variable is unset.
.TP
-.B \-1\fR, \fB\-\-oneshot\fR
-Exit as soon as all mailboxes are synchronized, instead of passively
-waiting for updates from the open connections.
-Using \fB\-\-oneshot\fR removes the requirement that IMAP servers must
-advertise support the NOTIFY extension [RFC5465].
-
-.TP
.B \-\-repair
List the database anomalies and try to repair them.
This is done by performing a so\-called \(lqfull synchronization\(rq,