Oswald Buddenhagen
d34baeb886
fix hypothetical buffer overflows
...
if something managed to make the maildir .uidvalidity files big enough
(possible only by appending garbage or scrambling them alltogether), we
would overflow the read buffer by one when appending the terminating
null.
this is not expected to have any real-world impact.
found by coverity.
2014-04-12 13:03:46 +02:00
Oswald Buddenhagen
df29c592d1
close a bunch of fd leaks in error paths
...
found by coverity.
2014-04-12 12:46:36 +02:00
Oswald Buddenhagen
dec5f73f57
actually use prime numbers for all hash bucket sizes
...
for some reason lost in history, the prime_deltas were actually wrong,
leading to using composite numbers.
the right sequence is available at http://oeis.org/A092131 .
2014-03-19 10:27:06 +01:00
Oswald Buddenhagen
bee7ceb0fb
fix zero MaxSize override in Channels
...
REFMAIL: CA+Tk8fzb9i9LrC_k4G978c5XR5urNz_s0fpOn_-6EsdrBnEzSQ@mail.gmail.com
2014-03-19 10:09:20 +01:00
Oswald Buddenhagen
19d86d2aa9
rework maildir store mapping
...
the trivial approach of having "home" and "root" stores produced ugly
results, and totally failed with the introduction of nested folder
handling.
instead, create a store per local directory, just as one would manually.
CCMAIL: 737708@bugs.debian.org
2014-03-10 12:20:29 +01:00
Oswald Buddenhagen
0edb606e0f
don't needlessly quote strings
2014-03-10 12:20:29 +01:00
Oswald Buddenhagen
183f256557
don't needlessly spell out INBOX
2014-03-10 12:20:29 +01:00
Oswald Buddenhagen
bf9d7c7695
write Sync and Expunge to global section if applicable
...
makes for leaner Channel sections.
note: the global delete and expunge variables exist so the command line
can override the config file despite the otherwise backwards behavior.
2014-03-10 12:20:18 +01:00
Oswald Buddenhagen
f55f42bdfc
don't bother checking impossible condition
...
the config readear already verified that at least host or tunnel are
set.
2014-03-09 15:56:52 +01:00
Oswald Buddenhagen
3161540ab9
fix crash on store without prior fetch with non-UIDPLUS servers
...
we'd never initialize the message list append pointer, so
imap_find_new_msgs()'s FETCH would go awry.
REFMAIL: <20140207101719.GB17125@mac.home>
2014-02-08 13:29:35 +01:00
Oswald Buddenhagen
12be7dd1f3
remove pointless use of AI_V4MAPPED flag
...
this flag is ineffective if ai_family is not explicitly AF_INET6.
on top of that, attempting to use it breaks on FreeBSD.
2014-02-02 12:24:34 +01:00
Oswald Buddenhagen
1c758be695
fix typos
2014-01-25 13:19:02 +01:00
Oswald Buddenhagen
f4a192f375
don't error out if we don't get an X-TUID header
...
the BODY[] item in the FETCH response corresponds to what we requested,
and its presence doesn't imply that it actually contains anything useful
- new messages may appear in the mailbox in addition to those we stored
ourselves, and these will obviously have no TUID.
2014-01-25 11:34:03 +01:00
Oswald Buddenhagen
aee0fa3b68
make date parsing portable, take 2
...
the global timezone variable is glibc-specific.
so use timegm() instead of mktime() for the conversion.
as that is specific to the BSDs and glibc, provide a fallback.
amends 62a6099
.
2014-01-02 21:09:09 +01:00
Oswald Buddenhagen
6d2fd370a6
fix _POSIX_SYNCHRONIZED_IO usage
...
it can be -1 for unsupported, or 0 for runtime detection (which we don't
do).
2014-01-02 21:09:09 +01:00
Oswald Buddenhagen
760bfa2cc6
pre-release doc updates
2013-12-15 13:46:25 +01:00
Oswald Buddenhagen
8b2bc912b4
elaborate on expunging and trashing
2013-12-15 13:46:25 +01:00
Oswald Buddenhagen
4481702da3
clarify wording in MapInbox doc
2013-12-15 13:46:25 +01:00
Oswald Buddenhagen
4fa5779193
avoid array underflow in IMAP LIST .lock workaround
...
suggested by Mark Wielaard <mark@klomp.org>.
fwiw, the workaround really is still necessary with panda imap ...
2013-12-15 13:46:06 +01:00
Oswald Buddenhagen
359091625d
MaxMessages: ignore entries with no master while calculating bulk fetch
2013-12-13 15:38:50 +01:00
Oswald Buddenhagen
2bbd07ec87
adjust comments to new reality
2013-12-11 16:29:34 +01:00
Oswald Buddenhagen
5a21042e98
ensure sequencing of message propagation and store closing
...
by putting the message propagation last, d3f634702
uncovered a
long-standing problem: we might have closed the source store before all
messages were propagated from it.
2013-12-11 16:29:33 +01:00
Oswald Buddenhagen
c47ee1c8c4
fix error paths wrt sync drivers, take 3
...
msgs_copied() was not checked at all, and msgs_flags_set() was doing it
wrong (sync_close() was not checked).
instead of trying to fix/extend the msgs_flags_set() model (ref-counting
and cancelation checking in lower-level functions, and return values to
propagate the status), place the refs/derefs around higher-level scopes
and do the checking only there. this is effectively simpler, and does
away with some obscure macros.
2013-12-11 16:29:33 +01:00
Oswald Buddenhagen
2f0fbcd306
don't use UID EXPUNGE unless trashing
...
a simple CLOSE is way more efficient, so use it if no adverse effects
can come from it.
2013-12-11 16:29:33 +01:00
Oswald Buddenhagen
03b3b566f1
reshuffle sources a bit
...
split header and move some code to more logical places.
2013-12-08 23:19:12 +01:00
Oswald Buddenhagen
92b892d247
tag verbose output when channel links two verbose stores
...
otherwise it's pure guesswork to assign the output to particular stores.
2013-12-08 23:14:34 +01:00
Oswald Buddenhagen
27fa63a577
move verbose socket logging out of socket driver
...
the way it's used, it's more of a high-level function.
2013-12-08 23:14:34 +01:00
Oswald Buddenhagen
0b32734693
remove own_store() function from driver model
...
the drivers which support it can abstract it inside open_store() just
fine.
2013-12-08 23:14:34 +01:00
Oswald Buddenhagen
2cb483fb2e
make use of IMAP MOVE extension
...
the Maildir driver is always exposing behavior equivalent to this - it's
more efficient.
2013-12-08 23:14:34 +01:00
Oswald Buddenhagen
0ad8ef80b2
don't check for INBOX more than necessary
2013-12-08 11:12:18 +01:00
Oswald Buddenhagen
c293acaf24
fix listing of nested maildir mailboxes
2013-12-08 11:12:18 +01:00
Oswald Buddenhagen
cf0f32f800
allow prefixes to Patterns
...
this makes it possible to "rename" a "namespace" while syncing.
2013-12-08 11:12:18 +01:00
Oswald Buddenhagen
6c6ad9710c
less spaghetti
2013-12-08 11:12:18 +01:00
Oswald Buddenhagen
decc33c2cf
factor out sync_listed_boxes()
2013-12-08 11:12:18 +01:00
Oswald Buddenhagen
f485d69332
refuse box list overrides if Channel has no Patterns
...
as the named boxes are the same on both sides, they logically make
sense only when the channel is in that mode anyway, which is the case
when using patterns.
2013-12-08 11:12:17 +01:00
Oswald Buddenhagen
c6f08b8f17
treat manually specified box list the same as one coming from Patterns
2013-12-08 11:12:17 +01:00
Oswald Buddenhagen
540adbb8fd
make host resolution error messages more useful in non-ipv6 builds
2013-12-08 11:12:10 +01:00
Oswald Buddenhagen
b6949c64d2
avoid useless delay after creating maildir box
...
we would see the recent timestamp of the creation and conclude that
something is going on, so we'd wait. this is obviously nonsense.
as we know that a freshly created mailbox is empty, simply skip the
message scan alltogether.
2013-12-08 11:12:10 +01:00
Oswald Buddenhagen
71524cb6b0
reduce FSync option to a boolean
...
there is no use for Thorough mode any more, so simplify the
configuration.
2013-12-08 11:12:09 +01:00
Oswald Buddenhagen
29a56e2dc4
don't fsync after logging every TUID
...
as we now don't actually start propagating new messages until all TUIDs
have been generated, it's sufficient to sync just once. this makes it
a cheap operation, so we can do it at SYNC_NORMAL level already.
2013-12-08 11:12:09 +01:00
Oswald Buddenhagen
8d5bd62537
add ExpireUnread option
2013-12-08 11:12:09 +01:00
Oswald Buddenhagen
f586c0bee5
make it possible to specify CopyArrivalDate and MaxMessages globally
...
sneaky change on the side: the wording of the man page is changed from
"outside any section" to "before any section" to get global options.
this is not entirely true ... the previously existing options behave as
before, while the two newcomers actually affect subsequent channels.
2013-12-08 11:12:09 +01:00
Oswald Buddenhagen
c0ba0c7ecf
replace global_* with a channel_conf_t instance
...
this makes the (growing) list of getopt_helper()'s parameters
manageable. the few wasted bytes are worth it.
2013-12-08 11:12:09 +01:00
Oswald Buddenhagen
1e427f5cd5
do not unnecessarily use bitfields
...
they don't save much (if any) space in our usage, while they make the
machine code more bloated and slow.
2013-12-08 11:12:09 +01:00
Oswald Buddenhagen
49a32910a7
move handling of new messages after that of old ones
...
i.e., move it back. whatever the original reason was, it's now gone.
this order is way more natural, which allows us to remove the osrecadd
and S_DONE hacks.
2013-12-01 13:36:28 +01:00
Oswald Buddenhagen
fe3d19b7eb
verify idempotence of all sync operations
2013-12-01 13:36:28 +01:00
Oswald Buddenhagen
b1842617f7
make MaxMessages work for new mails as well
...
this helps enormously on the first sync of a 100k message box with a
limit of 1k messages. it also happens to make the syncing idempotent.
in a few conditionals we now explicitly test for max_messages being
enabled, not smaxxuid != 0, as after the initial fetch with no important
messages smaxxuid is zero, but we still have to skip over 99k messages
in the above case.
2013-12-01 13:36:28 +01:00
Oswald Buddenhagen
d3f6347021
delay propagation of new messages
...
previous sequence:
examine & propagate new => examine old => propagate old
new sequence:
examine new => examine old => propagate new => propagate old
this alone does not buy us much ...
2013-12-01 13:36:28 +01:00
Oswald Buddenhagen
391ec01f28
make message propagation recording less magic
...
assign the sync record to the source message asap, and later on rely
on a more explicit condition than not doing so.
2013-12-01 13:36:28 +01:00
Oswald Buddenhagen
7f784fd235
log maxuid bumping less aggressively
...
we can bump the internal variable whereever convenient, but we cannot
log it until we know that all messages were copied, as otherwise we
could miss some new messages after an interruption. with the new
approach, interruption would merely cause some additonal traffic.
2013-12-01 13:36:27 +01:00
Oswald Buddenhagen
8b76412b0d
document message expiration transactions
2013-12-01 13:36:27 +01:00
Oswald Buddenhagen
ecb4c7ab07
propagate deletions with other flag changes
...
less code duplication, more logical order of issued driver commands
(especially after the next commit), and the "side effect" of letting the
message expiration code see those deletions if they are asynchronous.
2013-12-01 13:36:27 +01:00
Oswald Buddenhagen
273ac899f3
don't delay loading master even if messages were expired
...
the delay optimized the corner case of previously important but now
expired messages on the slave disappearing, either through an external
expunge or after a journal replay. no point in pessimizing the common
case.
2013-12-01 13:36:27 +01:00
Oswald Buddenhagen
12676f28da
remove cleanup of expired entries during setup of master load
...
the removed code would only ever trigger if a) we were after a journal
replay or b) something external expunged the expired messages - both are
corner cases not worth the extra code.
however, this means that the syncing code further down now needs to take
care of these zombies.
in the end, the normal cleanup will take care of all expired entries,
new and old.
2013-12-01 13:36:27 +01:00
Oswald Buddenhagen
9a62521cff
micro-optimization/-clarification: swap condition order
2013-12-01 13:36:27 +01:00
Oswald Buddenhagen
014d9b9081
make message counting in expiration code less confusing
2013-12-01 13:36:27 +01:00
Oswald Buddenhagen
83b834cdfd
count unread messages like flagged messages when expiring
...
that is, don't count them towards the total only below the cut-off
point. making them extend the working set even though they are inside it
is counterintuitive.
2013-12-01 13:36:27 +01:00
Oswald Buddenhagen
9e186ae88b
use post-sync "seen" flag to determine expirability
...
otherwise it wouldn't be idempotent.
2013-12-01 13:36:27 +01:00
Oswald Buddenhagen
15216947fb
don't protect recent messages from MaxMessages
...
while maildir has a clearly defined meaning of "recent" and for example
mutt handles it graciously, IMAP's definition is fubared to the point
that some servers (for example gmail) simply refuse to support it.
for symmetry reasons it is best to pretend that it doesn't exist at all.
it doesn't seem too useful anyway (the user can simply mark the messages
as read to allow pruning).
and last but not least, the man page of mbsync says nothing about
"recent", only "unread". unlike the isync man page, though.
2013-12-01 13:36:27 +01:00
Oswald Buddenhagen
6b7b2b1106
always get slave flags when we are expiring
...
even if we are not propagating new messages, the appearance of new
messages on the slave can lead to expiring older messages. for that, we
need to know their importance, and thus flags.
the alternative would be not doing an expiration run when not fetching
new messages, but that would mean more conditionals all over the place.
as the decision is somewhat arbitrary, just do the simpler thing.
2013-12-01 13:36:27 +01:00
Oswald Buddenhagen
f1eea7d9a5
do not trash expired messages
...
we are not actually deleting them, so there is no point in saving them
in the trash.
2013-12-01 13:36:27 +01:00
Oswald Buddenhagen
48754ecc74
make sync state header format less obscure
...
the header is not space-critical, so use proper name-value pairs.
this has the additional advantage that subsequent format changes can be
done much easier.
2013-12-01 13:36:27 +01:00
Oswald Buddenhagen
83bb1cf716
make state loading in showstate() similar to ckstate()
2013-12-01 13:36:27 +01:00
Oswald Buddenhagen
f044adbfa4
take configs out of target state defs
...
cleaner and less duplication
2013-12-01 13:36:27 +01:00
Oswald Buddenhagen
5297425918
more precise failure reporting
2013-12-01 13:36:27 +01:00
Oswald Buddenhagen
3d81ccbf21
make it possible to run only selected tests
2013-12-01 13:36:27 +01:00
Oswald Buddenhagen
3dcb393de2
set srec->msg[] when finding messages by tuid
...
otherwise we would propagate phantom deletions.
this affected only sync runs after an interruption while storing
messages, so it went (mostly?) unnoticed.
2013-12-01 13:36:27 +01:00
Oswald Buddenhagen
3814f19661
remove pointless assignment
...
we already know that tmsg->srec is null at this point.
2013-12-01 13:36:27 +01:00
Oswald Buddenhagen
e63e16ab45
assert no stray TUIDs
2013-12-01 13:36:27 +01:00
Oswald Buddenhagen
8e49300cf7
initialize struct tm
...
strptime() does not initialize at least tm_isdst, which leads to an
uninited value reference in mktime().
2013-12-01 13:36:27 +01:00
Oswald Buddenhagen
62a60997c3
make use of strptime() portable
...
it does not (officially) support the %z conversion, so re-implement that
part by hand.
2013-12-01 13:36:26 +01:00
Oswald Buddenhagen
55e65147df
fix compilation with older gcc versions
...
the warning suppression pragma within function scope is apparently a new
thing.
as i don't want to disable the check for the entire function (even if
this currently would make no difference), just use a wrapper function
to suppress the format string check.
2013-12-01 13:36:26 +01:00
Oswald Buddenhagen
32def5dc0a
add/fix comments and improve debug messages
2013-12-01 13:36:26 +01:00
Oswald Buddenhagen
a9a331c98a
simplify condition
...
... and document the cases.
2013-12-01 13:35:02 +01:00
Oswald Buddenhagen
03f8bfdfb2
micro-optimization/-clarification
2013-12-01 13:35:01 +01:00
Oswald Buddenhagen
00076a6971
move initializations for clarity
2013-12-01 13:35:01 +01:00
Oswald Buddenhagen
61ef099cd5
MaxMessages: make condition exactly symmetrical to condition below
2013-12-01 13:35:01 +01:00
Oswald Buddenhagen
080740f867
rewrite condition for readability and consistency
2013-12-01 13:35:01 +01:00
Oswald Buddenhagen
b10fd0c21c
remove assumption about value of M constant
2013-12-01 13:35:01 +01:00
Oswald Buddenhagen
a893cba483
fix enum abuse
...
amends 9c86ec344
.
S_FIND was for the sync record status field. it has no business in the
sync vars status fields. its value coincided with ST_SELECTED, which
luckily only means that we always tried to match up TUIDs even if there
was nothing to do.
the need for TUID matching arises in two mostly independent
circumstances, so add two separate flags ST_FIND_{OLD,NEW}.
2013-12-01 13:35:01 +01:00
Oswald Buddenhagen
9a0e65f899
create unseen messages in /new/
...
seen messages still go to /cur/.
this is consistent with the actual maildir driver.
2013-12-01 13:35:01 +01:00
Oswald Buddenhagen
0a684bd933
be a bit more verbose
2013-12-01 13:35:01 +01:00
Oswald Buddenhagen
394aca03a2
properly handle unexpected exit while replaying journal
2013-12-01 13:35:01 +01:00
Oswald Buddenhagen
07377cb753
ensure that the journal replay pass really does nothing
2013-12-01 13:35:01 +01:00
Oswald Buddenhagen
100f9487f4
sort messages by serial number instead of UID in box dumper
...
the input data is sorted that way, so it's easier to compare.
2013-12-01 13:35:01 +01:00
Oswald Buddenhagen
2568459a7b
fix error message in sync state dumper
2013-12-01 13:35:00 +01:00
Oswald Buddenhagen
b570c17766
deal with messages disappearing between being listed and fetched
2013-09-26 09:17:08 +02:00
Oswald Buddenhagen
17c4748dfa
support backslash-escaping in the config file
...
note that no attempt is made at making this work in the compat wrapper.
2013-09-26 09:17:08 +02:00
Oswald Buddenhagen
2213d6976c
support backslashes and quotes in quoted IMAP strings
...
the RFCs require it - well hidden in the BNF at the bottom.
patch somewhat inspired by "guns" <self@sungpae.com>.
2013-09-26 09:17:08 +02:00
Oswald Buddenhagen
c0bf867669
make next_arg() more readable & efficient
2013-09-26 09:17:08 +02:00
Oswald Buddenhagen
3ceb553102
IPv6 support
...
inspired by a patch by "Todd T. Fries" <todd@fries.net>.
2013-09-01 17:39:07 +02:00
Oswald Buddenhagen
4a39cae8c4
support multi-homed servers
2013-09-01 17:39:07 +02:00
Oswald Buddenhagen
0b59ee0df3
support multi-character path separators
...
this applies to both the IMAP PathDelimiter (which is needed by Lotus
Domino), as well as the Flatten-ed separators.
2013-08-11 10:20:02 +02:00
Oswald Buddenhagen
1b67c49965
CHECK before FETCH after STORE
...
m$ exchange does not seem to update the index in time otherwise.
2013-08-11 10:20:02 +02:00
Oswald Buddenhagen
eb1f10762f
added sync support for the arrival date of messages
...
initial patch by Marc Hoersken <info@marc-hoersken.de>
2013-08-03 18:54:34 +02:00
Oswald Buddenhagen
6577bf3e61
warn if we cannot find some messages by TUID
2013-07-27 20:18:20 +02:00
Oswald Buddenhagen
1847a4e12d
make better use of ATTR_UNUSED
2013-07-27 18:44:26 +02:00
Oswald Buddenhagen
6dfccb76a5
be somewhat stricter about the LIST response syntax
...
the first token *must* be a list.
2013-07-27 18:40:19 +02:00
Oswald Buddenhagen
a0dc37339e
allow the mailbox names in LIST responses to be literals
...
Lotus Domino seems to send them like that.
2013-07-27 18:40:16 +02:00
Oswald Buddenhagen
fc77feacc5
make parse_list() callback based
...
this allows us to parse IMAP literals ({}) in every list.
2013-07-27 18:39:39 +02:00
Oswald Buddenhagen
bf049d6466
add PassCmd option to query IMAP password dynamically
...
inspired by patches by
Aurélien Francillon <aurelien.francillon@eurecom.fr>,
Martin Stenberg <martin@gnutiken.se> and
sbfnk@users.sf.net .
2013-07-27 11:31:31 +02:00
Oswald Buddenhagen
5ad83b4e6a
don't unnecessarily use continue
2013-07-27 09:34:17 +02:00
Oswald Buddenhagen
e4243debb6
use INT_MAX instead of zero for "no size limit"
...
this simplifies the actual conditions
2013-07-27 09:34:17 +02:00
Oswald Buddenhagen
ca3a319e60
update copyrights
2013-04-20 16:57:16 +02:00
Oswald Buddenhagen
01358ec8b4
man page fixups
2013-04-13 20:07:16 +02:00
Oswald Buddenhagen
406e967430
don't let wildcards match INBOX, unless it lives under Path
...
it's counter-intuitive to have '*' match the (always present) INBOX
when the rest of the mailboxes lives in a different namespace.
2013-04-13 19:58:50 +02:00
Oswald Buddenhagen
e7c96f8891
always list INBOX when asked for it
...
it's there even if it's not there. says IMAP. no need to contradict.
2013-04-13 19:57:41 +02:00
Oswald Buddenhagen
daaf950878
split maildir_list_part()
...
the boolean argument switched two entirely separate functions.
2013-04-13 10:54:50 +02:00
Oswald Buddenhagen
167de3e438
remove some temporaries in maildir_list_part()
2013-04-13 10:54:50 +02:00
Oswald Buddenhagen
842aa402c3
fix CRAM-MD5 authentication
...
the decoded challenge may be padded, so we really need to use strlen()
rather than just the decoded length.
2013-04-13 10:54:50 +02:00
Oswald Buddenhagen
e07de2a336
more consistency in char signedness
2013-04-13 10:54:50 +02:00
Felipe Contreras
aad7f903ec
maildir: fix trash path double-free
...
It should be freed at the very end.
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
2013-04-07 18:32:52 +02:00
Oswald Buddenhagen
89c81e382e
discourage use of MapInbox
2013-04-07 16:57:45 +02:00
Oswald Buddenhagen
4ab55dc468
don't try to fetch status of minus one message
...
this would happen if we were trying to find newly pushed messages, but
none actually arrived.
as imap's ranges are not ordered, this would actually fetch one message.
2013-03-30 16:46:18 +01:00
Oswald Buddenhagen
9261897629
don't record newuid in the sync state
...
this value is only ever used to find just pushed messages by TUID, so we
can simply use the UIDNEXT value from before we started pushing - and of
course, we need to record that in the journal. it makes no sense to log
the new value after completing a search, as there won't be a next search
before we push the next messages.
2013-03-30 16:46:18 +01:00
Oswald Buddenhagen
96be183acb
rename sync_vars_t::uidnext => newuid & fix comment
...
the purpose of this variable is to hold the UIDNEXT value from before
we started pushing new messages, i.e., the minimal uid we can expect
them to have.
2013-03-30 16:46:18 +01:00
Oswald Buddenhagen
15d57b95b7
make paths relative to CWD, after all
...
the test suite actually relies on it. it would be possible to adjust it,
but there is not much reason to make paths relative to HOME (as we
support convenient tilde expansion). so use the least invasive approach,
which is simply the old behavior. adjust the documentation accordingly.
This reverts commit da5ce5d8f4
.
2013-03-30 16:46:18 +01:00
Oswald Buddenhagen
7ba7be111e
improve socket error reporting
...
always use getsockopt() to query the meaning of POLLERR, rather than
reporting "Unidentified socket error".
this is unlikely to have any effect when using select(), as that one
pretty much never signals exceptional conditions.
2013-03-29 18:25:39 +01:00
Oswald Buddenhagen
2ef6dc8a90
factor out socket_connect_failed()
2013-03-29 18:25:39 +01:00
Oswald Buddenhagen
37a28d8133
improve socket connect() error reporting with poll()
...
turns out that poll() may (and on linux does) signal POLLERR on
connection failure. this is unlike select(), which is specified to
signal write readiness in every case.
consequently, check whether we are connecting before checking for
POLLERR.
2013-03-29 18:24:32 +01:00
Oswald Buddenhagen
d1900941f4
introduce -DC option to only install a crash handler
2013-03-29 16:54:45 +01:00
Oswald Buddenhagen
b142778e56
match flag names in man page
...
"Full" is an alias for "All", but let's stick to one.
2013-03-24 18:42:57 +01:00
Oswald Buddenhagen
da5ce5d8f4
make path expansion match docu: paths are relative to ~
...
the current behavior of being relative to the current directory sort of
makes no sense, and contradicts the docu.
2013-03-24 18:42:57 +01:00
Oswald Buddenhagen
312f4be4b2
disable SSLv2 by default in the wrapper as well
2013-03-24 11:14:34 +01:00
Oswald Buddenhagen
89add4f330
downcast time_t to long for printing
...
time_t may be long long. to keep the sprintf format strings simple, just
downcast - this is not going to be a problem for the next 30 years, and
until then long will be 64-bit everywhere anyway.
suggested 3.5 years ago by Antoine Reilles <tonio@NetBSD.org>.
2013-03-24 11:14:27 +01:00
Oswald Buddenhagen
fbfcfea5dc
fix cram-md5 authentication
...
we need to send a newline after the response for imap to grok it.
2013-03-23 10:38:27 +01:00
Oswald Buddenhagen
3363ad0f11
fix crashes in imap_open_store() error paths
...
it's not a good idea to invoke imap_open_store_bail() twice, either ...
2013-03-23 10:34:51 +01:00
Oswald Buddenhagen
a66034b23a
fix crash in ssl connection error path
...
not a good idea to invoke the callback twice ...
2013-03-17 19:49:53 +01:00
Oswald Buddenhagen
acb1c870b4
rewrite SSL certificate verification. again.
...
leave all the hard work to OpenSSL. this has several consequences:
- certificate chain validation actually works instead of throwing
around error 20
- the interactive approval is gone. i don't expect it to be useful
anyway, as mbsync is mostly a batch tool
- the code is much shorter
2013-03-17 19:49:03 +01:00
Oswald Buddenhagen
8310cf78ac
fix CVE-2013-0289: add SSL subject verification
...
we did not check a valid certificate's subject at all so far.
this is no problem if the certificate file contains only exactly the
wanted host's certificate - before revision 04fdf7d1
(dec 2000, < v0.4),
this was even enforced (more or less - if the peer cert had been
signed directly by a root cert, it would be accepted as well).
however, when the file contains root certificates (like the system-wide
certificate file typically does), any host with a valid certificate
could pretend to be the wanted host.
2013-02-17 18:33:04 +01:00
Oswald Buddenhagen
fbba8f1cda
add support for (disabling) TLS v1.1 and v1.2
2013-02-10 09:56:33 +01:00
Oswald Buddenhagen
c7ebe2da95
more error checking of IMAP responses
...
REFMAIL: CA+Tk8fyu-6bwXq=ee2BgcKK_13m9S0RS+-0DhM=_jFqSKCH8aw@mail.gmail.com
2012-10-16 09:37:19 +02:00
Oswald Buddenhagen
8dbb3fe7a9
flush stdout more
...
to make sure it is timely written and not interleaved with stderr even
when when redirected.
2012-09-22 17:48:09 +02:00
Oswald Buddenhagen
d7eae525bd
fix TrashRemoteNew copy direction
2012-09-22 17:35:39 +02:00
Oswald Buddenhagen
c23d251092
consider hierarchy delimiter flattening when deciding what to list
...
flattened sub-folders of INBOX actually end up in Path, so list that
instead.
REFMAIL: 6c0ecbff0d025387020281c5d2f5e6e8@smallsys.org
2012-09-16 13:06:07 +02:00
Oswald Buddenhagen
66895f9cce
try harder to list all necessary boxes
...
the pattern "INB*" may or may not refer to something in the INBOX. even
just "*" may. so list both the INBOX and the Path in case of
uncertainty.
2012-09-16 12:34:07 +02:00
Oswald Buddenhagen
35851f133b
add option to control amount of fsync()ing
2012-09-15 15:28:15 +02:00
Oswald Buddenhagen
49223b2df2
avoid that a system crash can cause messages to be propagated twice
...
fdatasync() the journal after creating the pair record and recording
the TUID, but before the message propagation actually starts.
all other writes to the journal are not flushed, as they will at worst
cause some unnecessary network traffic without visible effect.
2012-09-15 15:28:15 +02:00
Oswald Buddenhagen
a326bf2f58
avoid that a system crash can lose mails
...
this fixes two possible failure scenarios:
- if the journal is committed but the mails are not, the missing files
would be erroneously interpreted as deletions which would be
propagated
- less seriously, if the mail files' meta data was committed but the
file contents were not, we would end up with empty files, which would
have to be re-fetched "behind mbsync's back" (just deleting the files
would not work - see above)
2012-09-15 15:27:23 +02:00
Oswald Buddenhagen
df6c3b64b7
avoid that a system crash can clobber the sync state file
...
make sure that the new state is committed to disk before overwriting the
old version - by default meta data is committed first, so we may end up
with no valid state at all otherwise.
2012-09-15 13:25:50 +02:00
Oswald Buddenhagen
bbf98bb165
quote mailbox names written to config file
2012-09-15 11:57:14 +02:00
Oswald Buddenhagen
18936f6696
make more config file errors fatal
...
we really shouldn't just synchronize despite config parsing errors.
2012-09-15 11:49:24 +02:00
Oswald Buddenhagen
16e5aade3f
store config error status in conffile_t object
...
this makes passing it around more straight-forward
2012-09-15 11:46:42 +02:00
Oswald Buddenhagen
725a122e91
make config parser a bit more careful about quotes
...
the parsing is more shell-like now:
- quoted and unquoted parts can be mixed in one argument
- the hashmark can be meaningfully quoted
2012-09-15 11:24:57 +02:00
Oswald Buddenhagen
2e07e68630
call fdatasync() after updating .uidvalidity files
...
they must be flushed before the file system meta data, as otherwise we
may end up with duplicate UIDs after a system crash.
2012-09-09 12:18:14 +02:00
Ben Kibbey
47fe4b7998
Fix certificate verification.
...
The connection state wasn't getting updated.
2012-09-08 14:26:22 +02:00
Oswald Buddenhagen
0a8f19294c
pre-release doc updates
2012-09-01 21:15:53 +02:00
Oswald Buddenhagen
f11504aa07
update copyrights
...
make the wrapper's help string also mention copyrights pertaining only
to the actual syncer, as this is the only string many people will ever
see.
2012-09-01 21:15:53 +02:00
Oswald Buddenhagen
d4c786823d
replace FSF address with something more ... contemporary
2012-09-01 21:15:53 +02:00
Oswald Buddenhagen
4e849196b8
install the config examples to docdir
2012-09-01 21:15:53 +02:00
Oswald Buddenhagen
6d49c343fc
use a hash table for message => sync record lookup
...
this removes the pathological O(<number of sync records> * <number of
new messages>) case at the cost of being a bit more cpu-intensive (but
O(<number of all messages>)) for old messages.
2012-09-01 21:15:53 +02:00
Oswald Buddenhagen
18225344c6
make use of UID EXPUNGE
2012-09-01 21:15:52 +02:00
Oswald Buddenhagen
dfd7516b9a
introduce ability to flatten the hierarchy of Stores
2012-09-01 21:15:52 +02:00
Oswald Buddenhagen
2585dd3324
add support for hierarchical mailboxes
2012-09-01 21:15:18 +02:00
Oswald Buddenhagen
4f94197e41
calculate trash box path already in maildir_open_store()
...
this gives us some cleaner code paths later on, as we can treat the
trash box like a regular mailbox.
2012-09-01 21:15:08 +02:00
Oswald Buddenhagen
8121224744
ensure that mailbox creation in maildir_store() is limited to trashing
...
other mailboxes would have been maildir_select()ed already.
2012-09-01 21:15:08 +02:00
Oswald Buddenhagen
a3f66f8f1d
refactor: imap_select2_p2 => imap_refcounted_done_box
...
soon, we'll use it for something different, too
2012-09-01 21:15:08 +02:00
Oswald Buddenhagen
343f16771a
don't crash when select() on master fails synchronously
...
svars->drv[S] would not be initialized yet, so cancel_sync() would
crash.
2012-09-01 21:15:08 +02:00
Oswald Buddenhagen
28cccf4b35
fix error handling of invalid SyncState *
...
when we find that the store is incompatible with in-store sync state,
we want to fail the whole channel. however, we must not claim that the
store died, otherwise it won't be disposed of properly.
2012-09-01 21:15:08 +02:00
Oswald Buddenhagen
1bc9c6d9cf
reject qualified mailboxes with the magic name INBOX
...
otherwise we couldn't tell them apart from the real INBOX after
stripping away the Path.
2012-09-01 21:15:07 +02:00
Oswald Buddenhagen
40f2812a41
suppress bdb complaints about unknown file format
...
pass DB_TRUNCATE when creating databases. otherwise bdb will complain
about the empty file we pass it (we have to create it upfront to
implement our locking).
2012-09-01 21:15:07 +02:00
Oswald Buddenhagen
9bbb02b8fd
Revert "fix UIDNEXT handling"
...
in fact, UIDNEXT (and UIDVALIDITY) null is *not* allowed (see RFC3501
section 9). them popping up nonetheless was a dovecot bug (which would
also confuse dovecot itself).
having it in as a workaround was no good either, as quite some other
code in mbsync assumes that UIDs are not null.
This reverts commit e1fa867
and most of 39006d7
.
-REFMAIL: 4CA62BA1.4020104@lemma.co.uk
2012-09-01 21:15:07 +02:00
Oswald Buddenhagen
233f563569
deal with concurrent maildir modifications during listing
...
files may be renamed (due to new -> cur transition or flag changes),
which may lead to two effects if ignored:
- we see both the old and the new name, so we report a spurious
duplicate UID
- we see neither name, so we report a spurious deletion
as countermeasure, record and compare directory modification times. upon
mismatch, we just start over - as usual.
2012-09-01 21:15:07 +02:00
Oswald Buddenhagen
3386285205
make maildir uidvalidity change fatal
...
it's best to give the user a chance to fix it rather than completely
messing up the syncstate by re-enumerating the UIDs.
2012-09-01 21:15:07 +02:00
Oswald Buddenhagen
a3bd10c04d
cleanup maildir error paths
...
don't try to unlock and close databases and files - this will happen a
moment later anyway, through cancelation or re-selection.
ironically, this plugs a memory leak, because an open main database is
used as a signal to close a temporary db in maildir_scan().
2012-09-01 21:15:07 +02:00
Oswald Buddenhagen
04ca97920d
fix potential double free
...
the store may be discarded before we reach maildir_select() again, which
will leave us with a dangling pointer.
2012-09-01 21:15:07 +02:00
Oswald Buddenhagen
e71ad53b7f
plug memory leak in maildir_store_msg() upon failure to acquire UID
2012-09-01 21:15:07 +02:00
Oswald Buddenhagen
9c86ec3442
employ alternative scheme to finding messages by TUID
...
instead of SEARCHing every single message (which is slow and happens to
be unreliabe with M$ Exchange 2010), just FETCH the new messages from
the mailbox - the ones we just appended will be amongst them.
2012-09-01 21:15:07 +02:00
Oswald Buddenhagen
b4cef554fc
clearer debug msg
2012-09-01 21:15:07 +02:00
Oswald Buddenhagen
06b303da88
use ATTR_PRINTFALIKE
2012-09-01 21:15:07 +02:00
Oswald Buddenhagen
7c815538ab
fix line wrapping before info messages
...
unless an info message is explictly marked as a continuation, it must
terminate any pending line (typically the progress information) first.
debug output is not affected, as it is mutually exclusive with info
output, and no debug lines are left unterminated outside clear scopes.
2012-09-01 21:15:07 +02:00
Oswald Buddenhagen
2aae866e80
remove Ontty flag
...
i can't figure out why i added it in the first place. it doesn't seem to
make any sense ...
2012-09-01 21:15:07 +02:00
Oswald Buddenhagen
6b3b6f12bb
centralize flushing of unfinished debug lines
2012-09-01 21:15:07 +02:00
Oswald Buddenhagen
d2bed4990d
unify error reporting
...
- introduce sys_error() and use it instead of perror() and
error(strerror()) in all expected error conditions
- perror() is used only for "something's really wrong with the system"
kind of errors
- file names, etc. are quoted if they are not validated yet, so e.g. an
empty string becomes immediately obvious
- improve and unify language
- add missing newlines
2012-09-01 21:15:07 +02:00
Oswald Buddenhagen
dee9f51096
don't complain about disappearing temp files
...
some other process might be cleaning up concurrently ...
2012-09-01 21:15:07 +02:00
Oswald Buddenhagen
ae85e455d3
enlarge receive buffer considerably
...
the tiny buffer makes no sense in the face of huge payloads and now
additionally masses of replies from pipelined commands.
2012-09-01 21:15:06 +02:00
Oswald Buddenhagen
256a147945
compile with -ansi -pedantic on gcc
...
greatly helps portability ...
2012-09-01 21:15:06 +02:00
Oswald Buddenhagen
96eaeb428d
define _GNU_SOURCE on the command line
...
that way it is already set in configure and can thus be used by tests.
2012-09-01 21:14:53 +02:00
Oswald Buddenhagen
faeb9b5bf7
centralize imap_cmd_refcounted_state refcount decrementing
...
no else branches remain, so the if() can be put into
imap_refcounted_done()
2012-09-01 16:03:36 +02:00
Oswald Buddenhagen
f5086f735c
get rid of redundant literal_pending state flag
2012-09-01 16:03:36 +02:00
Oswald Buddenhagen
bd93d689db
fully asynchronous IMAP operation
...
- asynchronous sockets using an event loop
- connect & starttls have completion callback parameters
- callbacks for notification about filled input buffer and emptied
output buffer
- unsent imap command queue
- used when
- socket output buffer is non-empty
- number of commands in flight exceeds limit
- last sent command requires round-trip
- command has a dependency on completion of previous command
- trashnc is tri-state so only a single "scout" trash APPEND/COPY is
sent at first. a possibly resulting CREATE is injected in front of
the remaining trash commands, so they can succeed (or be cancel()d
if it fails).
- queue's presence necessitates imap_cancel implementation
2012-09-01 16:03:36 +02:00
Oswald Buddenhagen
7867eb9009
add simple mainloop implementation
...
not used so far
2012-09-01 16:03:36 +02:00
Oswald Buddenhagen
a55354516b
move responsibility for closing sockets on error to user
...
the only user being imap and the first thing in imap_cancel_store()
being a call to socket_close(), this code was pretty pointless anyway.
2012-09-01 16:03:36 +02:00
Oswald Buddenhagen
802c99edcf
make socket read/write error reporting callback-based
...
the functions still have synchronous return codes as well - this enables
early error returns without having to resort to refcounting.
2012-09-01 16:03:36 +02:00
Oswald Buddenhagen
f1df2f40d1
decouple the filling of the read buffer from consuming it
...
this prepares the code for being called from a callback.
notably, this makes the imap list parser have a "soft stack", so the
recursion can be suspended at any time.
2012-09-01 16:03:36 +02:00
Oswald Buddenhagen
886cd03e37
centralize imap_cmd disposal
2012-09-01 16:03:36 +02:00
Oswald Buddenhagen
f8d73ac346
make socket_write() capable of taking ownership of the buffer
...
that way the user code doesn't have to free it any more.
2012-09-01 16:03:36 +02:00
Oswald Buddenhagen
8a72d204c9
change socket_write() return code semantics
...
instead of returning a write()-like result, return only a binary status
code - write errors are handled internally anyway, so user code doesn't
have to check the write length.
2012-09-01 16:03:36 +02:00
Oswald Buddenhagen
a85013d6ff
make IMAP pipeline depth configurable
...
currently, this affects only "clustered" message listings and
flag stores.
2012-09-01 16:03:36 +02:00
Oswald Buddenhagen
a266f28f1c
cancel submitted commands when canceling store
...
we already have some minimal asynchronicity, so there might be commands
in flight when a fatal error comes in.
2012-09-01 16:03:36 +02:00
Oswald Buddenhagen
171f7d6cd3
Socket_t + buffer_t => conn_t
...
remove the layering, in favor of a "buffered connection" abstraction.
2012-09-01 16:03:36 +02:00
Oswald Buddenhagen
3447694c2b
security fix: failure to load the certificate file is *not* OK ...
2012-09-01 16:03:36 +02:00
Oswald Buddenhagen
ef41349035
move socket code to a separate file
...
this makes the layering more obvious
2012-09-01 16:03:35 +02:00
Oswald Buddenhagen
d1ee94f02c
move greeting response handling into get_cmd_result()
...
the primary purpose of this is getting rid of the "free-standing"
buffer_gets() call.
2012-09-01 16:03:35 +02:00
Oswald Buddenhagen
584e51ed7d
docs
...
- insert "separator comments" between driver entry points
- document driver API
- document sync_vars_t parts that are stored in the sync state header
2012-09-01 16:03:35 +02:00
Oswald Buddenhagen
2ab689b3df
make imap_exec() result reporting callback-based
...
this makes the IMAP command submission interface asynchronous.
the functions still have synchronous return codes as well - this enables
clean error return paths. only when we invoke callbacks we resort to
refcounting.
as a "side effect", properly sequence commands after CREATE resulting
from [TRYCREATE].
2012-09-01 16:03:35 +02:00
Oswald Buddenhagen
e5d323cc47
rely on the maildir's existence with "SyncState *"
...
now that we open the box first, we know that it will exist at this
point.
2012-09-01 16:03:35 +02:00
Oswald Buddenhagen
3169c59e10
validate maildirs more strictly
...
now that "SyncState *" won't create fake mailboxes any more, we can make
a full validity check again.
2012-09-01 16:03:35 +02:00
Oswald Buddenhagen
05fd0b9970
split out drv->load() from drv->select()
2012-09-01 16:02:50 +02:00
Oswald Buddenhagen
c741d5ffb5
make creation of trash folder independent from -C option
...
the trash is not a box which is synced, but a "byproduct" of
manipulating synced boxes, so it makes no sense to bind it to the same
option.
2012-07-30 01:21:32 +02:00
Oswald Buddenhagen
7addc3bea8
minor cleanup: use ctx->gen instead of gctx for consistency
2012-07-30 01:21:32 +02:00
Oswald Buddenhagen
424e0e7221
make callbacks return early when canceling
...
even after driver->cancel() the store may complete commands successfully.
return early in this case, so we don't attempt to continue syncing.
2012-07-30 01:21:32 +02:00
Oswald Buddenhagen
ea951a697f
fix error paths wrt sync drivers, take 2
...
synchronous error codes which are passed through callbacks aren't a
particularly good idea, after all: latest when the callback does stuff
which does not concern the caller, the return code becomes ambiguous.
instead, protect the sync_vars object with a refcount when invoking
driver functions from loops, as the callbacks they call could invalidate
the object and we would have no way of knowing that the loop should be
aborted prematurely. the upcoming async imap driver will also need a
refcount to protect the cancelation marker of the imap socket dispatcher
loop.
2012-07-30 01:21:32 +02:00
Oswald Buddenhagen
ec8f440383
don't call cancel() repeatedly on a store
...
erroring command replies will trickle in even after canceling
2012-07-30 01:21:32 +02:00
Oswald Buddenhagen
b0bbd23512
replace DRV_STORE_BAD with a separate bad_callback()
...
that way we don't have to piggy-back (possibly asynchronous) fatal
errors to particular commands.
internally, the drivers still use synchronous return values as well,
so they don't try to access the invalidated store after calling back.
2012-07-30 01:21:31 +02:00
Oswald Buddenhagen
6d86e5347e
don't access free'd memory in cancel_sync()
...
as it happens, the 1st round *may* trash svars - if we get the
cancelation request after the slave store has already died.
2012-07-29 12:26:38 +02:00
Oswald Buddenhagen
9554026443
make drv->cancel()'s callback have no status code
...
this function is not going to actually execute any commands, so it
makes no sense for the callback to have a status code.
2012-07-29 12:25:24 +02:00
Oswald Buddenhagen
57444e9df9
don't decode aux pointer on DRV_CANCELED
...
the aux data was already free()d by the error callback by the time we
get this status code.
2012-07-22 20:19:20 +02:00
Oswald Buddenhagen
06ccac1fdd
always use return value from get_cmd_result()
...
once we have callback-based error reporting, this will ensure that we
don't operate on invalidated data structures.
2012-07-22 17:27:42 +02:00
Oswald Buddenhagen
121ce76e46
make response code parse failure of untagged OK/NO/BYE/BAD non-fatal
...
as such, it does not disrupt the data stream
2012-07-22 17:27:42 +02:00
Oswald Buddenhagen
d2e13f147c
de-duplicate code a bit
2012-07-22 17:27:40 +02:00
Oswald Buddenhagen
4d4de6e275
remove redundant use_ssl variables
...
just use the presence of an SSL object as an indicator. if something
goes wrong during the ssl handshake or certificate validation, the
socket must be immediately closed anyway.
2012-07-07 18:00:47 +02:00
Oswald Buddenhagen
fd229040d8
DRV_SERVER_BAD is and will probably stay unused => trash
2012-07-07 18:00:47 +02:00
Oswald Buddenhagen
17dc64b414
after [TRYCREATE], just resend the same command instead of cloning it
2012-07-07 18:00:47 +02:00
Oswald Buddenhagen
83efbe327d
use return values from correct set in get_cmd_result()
...
DRV_OK == RESP_OK, so this worked by accident
2012-07-07 18:00:47 +02:00
Oswald Buddenhagen
99cc328f17
do away with the dreaded rcaps hack
...
don't pretend that the server has no literal+ for the time of the
first relevant command's synchronous execution. instead, enable the
lower layer to do the processing by telling it for which commands
trashnc ("trash's existence not confirmed") is relevant.
2012-07-07 18:00:47 +02:00
Oswald Buddenhagen
1545ed90a0
purge imap_store_t::currentnc vestiges
...
we always actually open the mailbox before appending to it, so we
obviously know that it exists - that's why the code was already
commented out. changing this assumption would significantly complicate
matters for little gain, so let's just assume it won't happen.
consequently, also don't set param.create when appending to regular
mailboxes.
2012-07-07 18:00:47 +02:00
Oswald Buddenhagen
c66afdc0a8
move setting of ctx->listed outside the drivers
...
it's essentially an external state flag
2012-07-07 18:00:47 +02:00
Oswald Buddenhagen
7bab2d6d94
de-duplicate error paths
...
makes the code more compact. yay for gotos.
2012-07-07 18:00:47 +02:00
Oswald Buddenhagen
f6a25b331f
check return value from close() after write()
...
otherwise we may lose data when quota is exceeded
or nfs is in a bad mood.
2012-07-07 18:00:47 +02:00
Oswald Buddenhagen
61d98c5a1d
fix a bunch of warnings
2012-07-07 18:00:47 +02:00
Oswald Buddenhagen
4afd31a457
avoid preprocessor warnings on missing features: #if => #ifdef
2011-03-27 12:06:41 +02:00
Oswald Buddenhagen
cf6a7b4d18
less bizarre code
...
we know that there is only one command in progress, so there
is no need to employ tricks to access the last command.
2011-03-27 11:54:48 +02:00
Oswald Buddenhagen
7e1c16ae02
make cram() sane
...
- don't silently fail in release mode (expression with side effects
inside assert())
- save some redundand strlen()s by not throwing away known lengths
- reorganize the code for legibility
2011-03-27 11:54:48 +02:00
Oswald Buddenhagen
058d01f179
don't compare find_old_done with find_new_total
...
this didn't have any effect as no async drivers currently exist.
2011-03-27 11:54:48 +02:00
Oswald Buddenhagen
9e10e871fd
don't hang if store cannot be opened asynchronously
2011-03-27 11:54:48 +02:00
Oswald Buddenhagen
2c729bf9e6
don't leak SSL objects
2011-03-27 11:54:45 +02:00
Oswald Buddenhagen
296ac0364c
add CR after TUID during LF => CRLF conversion
2011-03-27 11:54:02 +02:00
Oswald Buddenhagen
8df1ebaf40
fix (another) out-of-bounds access in CRLF conversion
...
if the header contained no CRs but the body (or the post-TUID part of
the header) did, the TUID insertion would add an excess CR, thus
overflowing the buffer by one byte.
2011-03-27 11:54:02 +02:00
Oswald Buddenhagen
39006d7f24
document some breakage
2010-11-14 17:23:59 +01:00
Oswald Buddenhagen
d637772339
turns out, free(NULL) is just fine ...
2010-11-14 16:44:50 +01:00
Oswald Buddenhagen
e1fa867423
fix UIDNEXT handling
...
UIDNEXT *can* be legally zero, so deal with it.
-REFMAIL: 4CA62BA1.4020104@lemma.co.uk
2010-10-03 14:33:24 +02:00
Oswald Buddenhagen
5ade279839
don't hang after failed start_tls()
...
we'd send a LOGOUT command in plain text while the server was already
expecting an encrypted command, which would typically lead to waiting
for more data and thus an indefinite hang.
so close the socket immediately instead of letting the normal shutdown
path take care of it.
inspired by a patch by Steven Flintham.
-REFMAIL: 4C9AB98E.3000400@lemma.co.uk
2010-10-03 12:37:59 +02:00
Oswald Buddenhagen
70e87eb99e
remove useless message
...
don't complain about missing greeting response - we already complained
about an unexpected EOF anyway.
2010-10-03 12:37:59 +02:00
Oswald Buddenhagen
90a38ea810
assert valid file handles
...
i've seen error logs of the type
SSL_write: Bad file descriptor
and i simply can't nail it, so go for some more drastic measures.
2010-10-03 12:37:59 +02:00
Oswald Buddenhagen
72fd2aafb7
formatting
2010-10-03 12:37:59 +02:00
Oswald Buddenhagen
122e09fe60
beautify error messages
...
don't print the error number - we print the error string anyway, so it
adds no value.
add some whitespace to the messages as well.
2010-10-03 12:37:10 +02:00
Oswald Buddenhagen
db2bbbfef8
fix uninitialized variable read
...
this is basically a security fix for nonsensical configurations:
if the specified CertificateFile did not contain any certificates,
we *might* have accepted an arbitrary server certificate.
2010-04-05 13:06:58 +02:00
Oswald Buddenhagen
516c3bfa99
remove mail addresses from man pages
...
apparently, some people don't see the "maintained by" bits, so make them
look harder for explicit contact information (to be found in AUTHORS).
2010-02-28 22:23:20 +01:00
Oswald Buddenhagen
da39690aec
fix compile with SSL on Mac OS X
...
patch by Remko Tronçon <remko@el-tramo.be>
BUG: 2126899
2010-02-07 22:31:11 +01:00
Oswald Buddenhagen
a8b4de463e
add -P option to isync wrapper
...
not really a backwards compat option, but whatever ...
based on a patch submitted long ago by "nobody".
BUG: 1433532
2010-02-07 22:31:11 +01:00
Oswald Buddenhagen
4729b1ee23
cvsignore => gitignore
2010-02-07 22:31:10 +01:00
Oswald Buddenhagen
e6a356ffc7
add extra verbose mode which dumps the message contents
...
i needed that to debug the line ending issues. maybe it will find other
uses as well ...
2010-02-06 10:49:57 +01:00
Oswald Buddenhagen
d94dadbaeb
fix line ending conversion logic
...
imap may very well store messages with LF line endings. only RFC2822
requires CRLF.
consequently, preserve the line endings as much as possible unless the
mailbox format does not support it (this would be the case for unix mbox
- i actually have no idea about maildir).
2010-02-06 10:49:57 +01:00
Oswald Buddenhagen
09dfddb36b
some more error reporting relating malformed messages
2010-02-06 10:49:06 +01:00
Oswald Buddenhagen
ce45692ca5
refactoring. main part is killing struct imap_cmd_cb as such.
...
issue_imap_cmd is split into new_imap_cmd and submit_imap_cmd, so the
command can be parametrized after it was instanciated.
2008-08-31 20:14:59 +00:00
Oswald Buddenhagen
92914b37cc
deal with UIDVALIDITY of 0 properly.
...
-REF: 20080822094543.GA3528@ugly.local
2008-08-23 07:54:00 +00:00
Oswald Buddenhagen
0d8bce1675
give the implicitly created imap account config the name of the store.
2008-04-13 09:56:44 +00:00
Oswald Buddenhagen
262999d092
make ssl certificate handling much more useful:
...
- system-wide ca certs are auto-loaded
- private certs are accepted even if they are self-signed
2008-04-13 09:51:27 +00:00
Oswald Buddenhagen
06521da30d
- accept unset CertificateFile
...
- print the certificate's fingerprint
- make the certificate acceptance prompt much less scary
2008-04-12 08:58:50 +00:00
Oswald Buddenhagen
89519e343c
ignore system flag extensions (\X-...)
2008-04-12 08:13:44 +00:00
Oswald Buddenhagen
474923bc6b
compat wrapper: don't crash if neither host nor tunnel are specified.
...
fixes:
CCMAIL: 449006@bugs.debian.org
2008-02-23 14:18:21 +00:00
Oswald Buddenhagen
71fce2a622
quote user name in generated config.
...
fixes:
CCMAIL: 456775@bugs.debian.org
2008-02-23 09:37:38 +00:00
Oswald Buddenhagen
2f62a7f608
don't overlook 2nd and later single-letter options in last argument.
...
reported by fedora
-REF: <1197916586.13945.120.camel@localhost.localdomain>
2008-02-23 09:18:42 +00:00
Oswald Buddenhagen
a365e20660
put pointers to bdb open() into parentheses, so they won't be
...
macro-expanded as libc open.
patch by fedora
-REF: <1197916586.13945.120.camel@localhost.localdomain>
2008-02-23 09:01:51 +00:00
Oswald Buddenhagen
2b37288e8d
don't use #ifdef inside htons() arguments - it can be a macro.
...
-REF: <lyy7ezyjah.fsf@gfn.org>
CCMAIL: Scott Gifford <sgifford@suspectclass.com>
2007-09-22 08:45:41 +00:00
Oswald Buddenhagen
42ca262e39
#ifdef __linux__ for the crash handler. it compiles on other platforms,
...
but the functionality is bound to linux' /proc structure.
2007-04-04 16:19:47 +00:00
Oswald Buddenhagen
625f592fb7
fix crash due to uninited var when parsing IMAPServer. Thanks to
...
CCMAIL: Antoine Reilles <tonio@NetBSD.org>
REF: <20070118182534.GA22288@arcelot.loria.fr>
2007-02-10 15:37:46 +00:00
Oswald Buddenhagen
023d3ee577
fix error paths wrt sync drivers
2006-12-09 10:39:30 +00:00
Oswald Buddenhagen
9056504483
handle abnormal program exit during regtest
2006-12-09 10:38:11 +00:00
Oswald Buddenhagen
6800f1636e
initialize mvars->t[1] to 1. helps enormously ... :}
2006-12-04 17:47:55 +00:00
Oswald Buddenhagen
e0d72cd5e3
reverse-map <Inbox> to INBOX when encountered during listing.
...
usually this will be a no-op (when putting INBOX in Path, people
generally call it INBOX), but better safe than sorry.
2006-11-18 13:17:13 +00:00
Oswald Buddenhagen
6985da5848
make compat wrapper default to current user for imap login
2006-11-09 17:57:38 +00:00
Oswald Buddenhagen
0e8a8d120d
put INBOX in Maildir
2006-11-01 06:19:52 +00:00
Oswald Buddenhagen
2a9b0bd763
don't crash on truncating database. seems to affect only some bdb
...
versions (e.g., 4.2).
2006-10-24 17:37:57 +00:00
Oswald Buddenhagen
9b657a46a0
fix bug in newline conversion causing buffer overflows.
...
this leads to segfaults and has some security impact.
2006-08-10 07:01:02 +00:00
Oswald Buddenhagen
617d1a6e49
memmove for overlapping mem copies.
2006-08-10 06:33:18 +00:00
Oswald Buddenhagen
1b9f8b4c69
glibc seems to be *really* fucked up.
2006-07-31 05:30:46 +00:00
Oswald Buddenhagen
d2463a4cd8
work around glibc bug: printf("%.*s", INT_MAX, s) tries to allocate 2G.
2006-07-29 11:52:54 +00:00
Oswald Buddenhagen
9b7c09e4b6
enable the old account naming scheme to deal with duplicated ip
...
addresses.
this is not incompatible - previously, it would just create garbage.
2006-06-05 11:59:51 +00:00
Oswald Buddenhagen
aea4be19e3
create more descriptive account names, so password prompts look sane.
...
the channel names follow the old scheme, though - they are used to
compose sync state file names, and i don't feel like writing a migrator
for this.
2006-06-05 11:55:23 +00:00
Oswald Buddenhagen
4bf58c3e97
don't crash in imap driver when Host is not specified.
2006-05-28 16:03:52 +00:00
Oswald Buddenhagen
c8275e2aa7
be *slightly* more explicit about which options Tunnel makes
...
superfluous.
2006-05-28 16:02:56 +00:00
Oswald Buddenhagen
dbbab78881
un-document "Host imaps:[...]" syntax and introduce new option UseIMAPS
...
instead.
apply ted's patch to support UseIMAPS in conjunction with Tunnel.
document that SSLv2 is No Good (TM).
2006-05-28 15:43:58 +00:00
Oswald Buddenhagen
67b714ee0e
move assigning default port to the place of use
2006-05-28 13:38:14 +00:00
Oswald Buddenhagen
f6f2d2461c
add comment
2006-05-27 12:44:13 +00:00
Oswald Buddenhagen
21abb22c98
seen messages are eligible for expiration even if they are recent in the
...
mailbox.
2006-05-27 12:43:03 +00:00
Oswald Buddenhagen
8a748d046d
no/empty mailbox name means INBOX
2006-03-21 20:05:48 +00:00
Oswald Buddenhagen
168e5f3282
make the driver model, sync_chans() and sync_boxes() fully async.
...
async drivers to follow ...
2006-03-21 20:03:21 +00:00
Oswald Buddenhagen
bdcc285403
unscrew lf=>crlf conversion and tuid insertion
2006-03-21 17:50:57 +00:00
Oswald Buddenhagen
16eaf903db
ok, mismerging and not running the reg-tests is lame. unscrew expunging
...
again.
2006-03-21 17:40:31 +00:00
Oswald Buddenhagen
c7903f8003
don't enter trash loop if not trashing at all. also, move expunge
...
message where it belongs. not adding info("trashing"), as it will be
replaced in a moment anyway.
2006-03-21 16:03:09 +00:00
Oswald Buddenhagen
b5d70aa596
async merge: aggregate most variables of main() & sync_boxes() in
...
main_vars_t resp. sync_vars_t.
also some minor var renames, whitespace, comments.
2006-03-21 15:53:43 +00:00
Oswald Buddenhagen
f90b290650
split box list preparation from "consumption".
2006-03-21 10:38:30 +00:00
Oswald Buddenhagen
72a2d4b690
info() about opening of stores
2006-03-21 10:30:45 +00:00
Oswald Buddenhagen
b7389cb36f
do not repeatedly get namespace from server.
2006-03-20 20:39:06 +00:00
Oswald Buddenhagen
340bfcc4a8
handle socket() failure and correctly report gethostbyname() failure.
2006-03-20 20:34:32 +00:00
Oswald Buddenhagen
3e3cf3ac9a
update copyrights
2006-03-20 20:16:22 +00:00
Oswald Buddenhagen
7f9ece8e7e
move whole responsibility for recycling open stores/server connections
...
to the drivers.
2006-03-20 19:38:20 +00:00
Oswald Buddenhagen
47e592b603
keep the result of driver->list() and a flag whether it is valid in the store.
2006-03-20 19:27:38 +00:00
Oswald Buddenhagen
861dd7468e
aggregate all (two ...) drivers in an array instead of naming them in
...
each (one ...) location explicitly.
2006-03-20 18:36:49 +00:00
Oswald Buddenhagen
492ca8d332
whitespace and code verbosity
2006-03-20 17:21:07 +00:00
Oswald Buddenhagen
31fc41a32c
merge imap_t into imap_store_t - there is really no point in having them
...
separated.
2006-03-20 15:01:48 +00:00
Oswald Buddenhagen
d7126dca5e
"fprintf( stderr," => "error(". new functions debugn() and infon()
...
for messages with missing newline; warn() and error() act upon this.
2006-03-19 11:29:12 +00:00
Oswald Buddenhagen
bb7bbcf5b1
make config parsing more robust against bogus input and report errors
...
more clearly.
2006-03-19 10:44:53 +00:00
Oswald Buddenhagen
fbbb86738b
factor out box selection from sync_boxes to avoid code dupe
2006-02-12 11:42:46 +00:00
Oswald Buddenhagen
bc39f10a1e
lock the sync state open the journal before opening the master. this is
...
a bit ugly for the "SyncState *" case, as we have to create a directory
without making it a maildir right away. however, this makes the code
quite a bit simpler to understand and simpler to parallelize.
2006-02-11 20:28:45 +00:00
Oswald Buddenhagen
7726ce3e0f
don't barf at directories with none of {tmp,new,cur}/ and turn them
...
into maildirs instead. see next commit.
2006-02-11 20:14:31 +00:00
Oswald Buddenhagen
5224b5bc9f
don't commit state file when a fatal error occurs
2006-02-11 20:02:06 +00:00
Oswald Buddenhagen
630a04ad3e
unbelieveable, but close() can actually fail
2006-02-11 19:52:53 +00:00
Oswald Buddenhagen
d7b8621f05
add copyright + license
2006-02-11 19:48:44 +00:00
Oswald Buddenhagen
1453e61840
update fsf's postal address. i think it's sort of useless nowadays
...
anyway, but heck ...
2006-02-09 17:44:22 +00:00
Oswald Buddenhagen
4e8fabf7e5
typos
2006-02-05 17:42:22 +00:00
Oswald Buddenhagen
d76c827a45
include run-tests.pl in distribution
2006-02-05 17:38:31 +00:00
Oswald Buddenhagen
e567cc6919
and now don't clobber the mails ...
2006-02-03 23:43:52 +00:00
Oswald Buddenhagen
850addecd5
wrap message storing into transactions. nice side effect: drivers don't
...
need to deal with line end conversion any move.
2006-02-03 21:33:43 +00:00
Oswald Buddenhagen
19128f1587
major overhaul of flag change propagation and MaxMessages handling:
...
- wrap message (un)expirations into transactions
- no redundand flag propagations in conjunction with expirations
- better prepared for the upcoming async operation
2006-02-02 17:03:01 +00:00
Oswald Buddenhagen
ab11737b33
crash handler that launches gdb. activated when started with -D option.
...
simplifies debugging crashes during the reg-tests.
2006-02-02 13:48:02 +00:00
Oswald Buddenhagen
bbc0a877c8
less cluttered debug output
2006-02-02 11:23:57 +00:00
Oswald Buddenhagen
58db1d05ac
cosmetics: move around variable declarations and remove obsolete comment
2006-02-02 11:12:30 +00:00
Oswald Buddenhagen
905ded175f
versioned journal. the commands and their meanings change all the time,
...
so better handle that case.
ps: yes, i think not upgrading mbsync between interrupting and resuming
a run is a reasonable requirement.
2006-02-02 11:07:54 +00:00
Oswald Buddenhagen
8728dfdf21
make the sync entry search in the journal replay wrap around at the end
...
of the list. the "always forward" assumption is violated in some cases.
2006-02-02 10:44:19 +00:00
Oswald Buddenhagen
5e01034aee
much improved journal replay testing.
...
some clenup.
2006-02-02 10:25:07 +00:00
Oswald Buddenhagen
d1c4f8a069
orphan/kill all affected entries after expunge
2006-02-02 10:04:05 +00:00
Oswald Buddenhagen
1a536a3415
M_EXPIRED -> M_EXPIRE
2006-01-30 13:49:46 +00:00
Oswald Buddenhagen
40fc6a6ac8
sanitize S_DEL
2006-01-30 13:11:33 +00:00
Oswald Buddenhagen
e205eb62f5
remove superfluous temporary rflags from sync_boxes
2006-01-30 13:01:35 +00:00
Oswald Buddenhagen
c7d938f965
now that messages know their sync records, M_SYNCES is superfluous.
2006-01-30 11:12:14 +00:00
Oswald Buddenhagen
2277ecefb6
establish bi-directional mapping between mails and sync records. use it
...
to merge the --renew case into the --new case.
2006-01-30 10:26:04 +00:00
Oswald Buddenhagen
24910e2cdf
declaring ex[M] instead of ex[2] is, indeed, no good. long live watchpoints.
2006-01-30 09:33:29 +00:00
Oswald Buddenhagen
a41ea8f9f1
whoops - 'isync -w' would write .mbsyncrc to a wrong directory
2006-01-29 18:40:27 +00:00
Oswald Buddenhagen
c1c7cb6d8e
move fetching new messages in front of syncing old entries. this alone
...
does not buy us a whole lot ...
2006-01-29 15:52:49 +00:00
Oswald Buddenhagen
635b2d7b76
test for journalling and journal replay.
2006-01-29 15:48:24 +00:00
Oswald Buddenhagen
9c6c158ef3
undocumented flag -J to skip committing the new sync state.
2006-01-29 15:46:09 +00:00
Oswald Buddenhagen
a1a5a817bb
merge Quiet, Verbose & Debug into DFlags
2006-01-29 14:46:16 +00:00
Oswald Buddenhagen
185769640b
M_NOT_SYNCED => M_SYNCED. now that sync records know their messages, it
...
is simpler to track the positive case.
2006-01-29 11:49:49 +00:00
Oswald Buddenhagen
f4ce961bab
move driver options composition below journal replay - it might make
...
additional actions necessary (it doesn't, yet).
2006-01-29 11:35:22 +00:00
Oswald Buddenhagen
a1c402678c
split driver->prepare into ->prepare_opts and ->prepare_paths
2006-01-29 11:22:45 +00:00
Oswald Buddenhagen
4e983506d3
#include limits.h (for INT_MAX)
...
REF: <a8e45e1b0601241753j1e14cc1cm3fc3c65c7acb0c1b@mail.gmail.com>
2006-01-25 06:35:19 +00:00
Oswald Buddenhagen
1a6ee00d86
less confusing uid ranges in debug
2006-01-13 16:10:42 +00:00
Oswald Buddenhagen
d414d0aae2
solaris 10 fix: use sys/filio.h for FIONREAD. untested.
...
REF: <20060111215014.GA601@49.180.97-84.rev.gaoland.net>
2006-01-12 06:36:44 +00:00
Oswald Buddenhagen
8b6ac97fe4
adjust to: omit flags other than "deleted" when expunging target.
2006-01-08 19:25:58 +00:00
Oswald Buddenhagen
3c8ee66bfc
collect stderr as well.
2006-01-03 09:28:02 +00:00
Oswald Buddenhagen
f6ed69a8d3
don't record we synced flags if we didn't.
2005-12-29 13:08:27 +00:00
Oswald Buddenhagen
2fa54425e7
have to flush debug as well ...
2005-12-28 20:45:01 +00:00
Oswald Buddenhagen
76de0182a2
of course F_DELETED will have been added to expired slave messages, so
...
don't complain about it.
2005-12-28 20:05:53 +00:00
Oswald Buddenhagen
8c30ec4a25
put message references into the sync records. match up the uids after
...
opening the boxes instead of "sort-of-on-demand" - this is much simpler.
match from messages to sync records, not the other way round - makes the
debug output shorter, as the separate dump_box() is gone now.
2005-12-28 19:17:40 +00:00
Oswald Buddenhagen
61dfbea617
"reformat" S_EXP_S setting logic for understandability.
2005-12-28 19:10:12 +00:00
Oswald Buddenhagen
808001c0a9
whoops
2005-12-28 11:07:47 +00:00
Oswald Buddenhagen
4ec56f8cf6
- instead of having {m,s}foo, we have foo[2] now, so we can do
...
everything with loops instead of symmetric function calls
- added some const
2005-12-28 10:02:22 +00:00
Oswald Buddenhagen
f070f3cd72
show debug output on error.
2005-12-27 17:44:31 +00:00
Oswald Buddenhagen
d68dd7369e
make the error case output more useful by dumping the entire data set.
2005-12-27 17:31:04 +00:00
Oswald Buddenhagen
549c1cf13e
fix error message
2005-12-26 16:02:50 +00:00
Oswald Buddenhagen
716ff82540
add expiration tests
2005-12-26 16:02:08 +00:00
Oswald Buddenhagen
ad5f5aa2b2
add MaxSize tests
2005-12-26 16:01:42 +00:00
Oswald Buddenhagen
ab898f2f5c
when dumping mailboxes, sort by uid 1st.
2005-12-26 16:00:04 +00:00
Oswald Buddenhagen
d3faf0d27f
detect excess messages after sync
2005-12-26 15:58:12 +00:00
Oswald Buddenhagen
924e1a7f04
sync state reader:
...
- grok negative uids
- more robust
2005-12-26 15:57:06 +00:00
Oswald Buddenhagen
963f607c81
don't eat array lead-in on empty arrays
2005-12-26 15:54:09 +00:00
Oswald Buddenhagen
4dc23fee7b
why would somebody manipulate an expired message? right, he wouldn't:
...
he would either expunge the mailbox or configure his MUA to hide trashed
messages. consequently don't sync expired message flags, let alone
interpret them in a special way.
one special feature remains, though: if a non-expunged expired message
is flagged on the master, it will be unexpired on the slave. i'm not
sure whether i should remove or document this feature.
2005-12-26 15:02:38 +00:00
Oswald Buddenhagen
9740e7e852
message tweaks
2005-12-26 14:55:19 +00:00
Oswald Buddenhagen
d5a1f5876d
more logical order
2005-12-23 10:22:47 +00:00
Oswald Buddenhagen
044d8dfb73
add some regression testing.
2005-12-22 18:06:25 +00:00
Oswald Buddenhagen
5633236ed2
fix sync entries not being purged due to c&p error.
2005-12-22 14:59:59 +00:00
Oswald Buddenhagen
8db5ec1e5e
less confusing error message on invalid mailbox.
2005-12-21 13:04:43 +00:00
Oswald Buddenhagen
6d229848a5
it's beyond me what this memset was supposed to do ...
2005-12-18 14:10:40 +00:00
Oswald Buddenhagen
633869d040
trailing whitespace
2005-12-18 13:41:50 +00:00
Oswald Buddenhagen
25db6a3c31
revert 1.8 - what was i smoking?! the CREATE argument is already quoted;
...
we just extracted it from the previous command.
2005-12-17 13:47:51 +00:00
Oswald Buddenhagen
7710b3dcb5
make flag changes unset "new" status - unless a ghost is acting in the
...
background, a flag change indicates that the message was at least
noticed.
2005-09-29 21:07:20 +00:00
Oswald Buddenhagen
bf26a663da
don't call the driver's set_flags() if the flags did not change at all.
2005-09-29 21:05:05 +00:00
Oswald Buddenhagen
d2753c4188
64-bit cleanness
2005-09-21 16:14:05 +00:00
Oswald Buddenhagen
bf4266eadc
quote CREATE argument
2005-03-28 10:43:31 +00:00
Oswald Buddenhagen
02babb0651
fix inverted condition leading to endless loop when message is changed
...
while isync is running.
2005-03-28 10:26:39 +00:00
Oswald Buddenhagen
c2209c8470
cope with out-of-disk-space halfways gracefully (that is, don't clobber
...
the sync state including the journal, but exit immediately).
2004-11-13 09:19:36 +00:00
Oswald Buddenhagen
e8c769ea76
ignore user-defined flags (for now).
...
also, split off the backslash from the "core" flag names.
2004-10-17 15:34:53 +00:00
Oswald Buddenhagen
e75ebf75f6
fix segfault due to wrong pointer being passed to parse_response_code.
...
inspired by Raimar Döffinger
2004-10-17 09:00:15 +00:00
Oswald Buddenhagen
6741bc94d9
remove spurious crlf during cram auth. not sure that this instance of
...
socket_write should be (re)moved, but as long as the .cont callback is
used only for this ...
investigation & patch by Mike Delaney.
2004-10-17 08:30:02 +00:00
Oswald Buddenhagen
3f8e820acb
use legacy flock() only on linux. at least on OS X flock aliases to
...
fcntl.
2004-09-20 11:31:55 +00:00
Oswald Buddenhagen
e0cc45044f
stdarg.h at the right places
2004-09-20 11:28:33 +00:00
Oswald Buddenhagen
16de402c9e
when storing \seen messages, don't set the \recent flag on them. could
...
well be that this is incorrect, but some mailers need it that way.
when trashing messages, preserve their \recent status as well.
2004-09-15 09:06:36 +00:00
Oswald Buddenhagen
af0b75a5dc
stddef.h for offsetof
2004-09-08 16:14:12 +00:00
Oswald Buddenhagen
86d9a3140d
first check _both_ bounds, then compare ...
2004-09-08 14:52:22 +00:00
Oswald Buddenhagen
acabdc43b1
print name of mailbox being opened.
2004-09-07 11:59:51 +00:00
Oswald Buddenhagen
1b75236135
fix -C for imap mailboxes:
...
- SELECT does not return [TRYCREATE]
- fix bit field truncation
2004-08-13 11:03:12 +00:00
Oswald Buddenhagen
b8b4628197
store new UIDVALIDITY immediately after initializing it
2004-05-23 16:39:24 +00:00
Oswald Buddenhagen
918e105b0c
old -l is new -l -C
2004-04-27 20:23:22 +00:00
Oswald Buddenhagen
789d5864ca
full support for absolute paths in Mailboxes
2004-04-26 14:48:48 +00:00
Oswald Buddenhagen
7ff8eef06c
strip $HOME and ~ from Mailbox paths
2004-04-26 14:09:46 +00:00
Oswald Buddenhagen
2e8181a8d8
fix return values of asprintf replacement.
2004-03-29 22:32:40 +00:00
Oswald Buddenhagen
af8c4396fe
unscrew --delete by merging it into the config file. merge --expunge as
...
well for symmetry.
2004-03-29 06:52:50 +00:00
Oswald Buddenhagen
130664b622
The Big Rewrite. too many change to list them all.
...
as opposed to earlier threats, BerkDB was not entirely dropped; i
suppose the isync 0.7 -> 0.8 change had a reason, so i added an
alternative UID storage scheme.
note that BDB 4.0 is not sufficient, as the db->open function changed in
an incompatible way ...
i updated the debian packaging except for a changelog entry.
note that i removed the upgrade blurb, as upstream now has a smooth
upgrade path down to at least isync 0.4.
2004-03-27 16:07:20 +00:00
Oswald Buddenhagen
5bbe51ee46
portability: don't rely on struct flock layout
2004-02-07 15:36:33 +00:00
Oswald Buddenhagen
e5894bdf04
once again: (slightly) better output.
...
make maildir flag setting failure non-fatal. maildir sucks ...
2004-02-01 16:27:28 +00:00
Oswald Buddenhagen
a52fd7dde0
more sophisticated CAPABILITY handling. also, don't issue the command if
...
the initial response already had it in the status code.
2004-01-31 01:01:07 +00:00
Oswald Buddenhagen
3e392b6aa2
don't ask for NAMESPACE if Folder was specified
2004-01-30 23:39:39 +00:00
Oswald Buddenhagen
c2c4490431
following the "screw murphy" principle and commiting untested patch:
...
obey LOGINDISABLED
2004-01-30 23:35:50 +00:00
Oswald Buddenhagen
0e8455fde1
PREAUTH cannot come out of the blue
2004-01-27 21:01:15 +00:00
Oswald Buddenhagen
a7775798e3
cleanup around parse_fetch
2004-01-27 20:58:54 +00:00
Oswald Buddenhagen
f80f91d98b
make Tag int, move it to imap.c
2004-01-27 20:50:49 +00:00
Oswald Buddenhagen
1eb6e35c80
don't use STARTTLS for PREAUTH connections. uw-imap doesn't seem to like
...
it, and it does not make too much sense anyway - i think - state converse
opinions now.
2004-01-20 01:55:15 +00:00
Oswald Buddenhagen
b5307f0e16
another message output cleanup, still not perfect (info messages will be
...
interleaved with progress dots).
support specifying -q twice to suppress warnings as well.
2004-01-18 02:22:17 +00:00
Theodore Ts'o
0121220339
Optimized isync by not fetching the sizes of messages if they are
...
unneeded (i.e., if MaxSize is not specified in the config file).
Patch and idea originally from Nicolas Boullis <nboullis@debian.org>,
modified/polished by Theodore Ts'o per comments by Oswald Buddenhagen.
2004-01-12 01:24:47 +00:00
Oswald Buddenhagen
180f5fa201
sync uid database after every message. this is accompanied by a dbm ->
...
db4 migration. patch by theodore, with some final polishing by me.
2004-01-12 00:52:14 +00:00
Oswald Buddenhagen
3de16206e7
ignore anything that does not look remotely like a maildir when
...
collecting mailboxes for OneToOne.
2004-01-09 20:43:36 +00:00
Oswald Buddenhagen
52fb7c085d
add trailing space to password prompt
2003-12-07 15:36:38 +00:00
Oswald Buddenhagen
424db34ff2
make imaps: on the command line adjust the port and ssl options as well
2003-12-07 15:34:54 +00:00
Oswald Buddenhagen
228ba6b48b
echo the mailbox the password is for
2003-12-02 02:53:14 +00:00
Oswald Buddenhagen
dae086c92f
fix crash when syncing multiple mailboxes over a Tunnel
2003-07-02 17:18:48 +00:00
Oswald Buddenhagen
b535af4fc4
- make it work without SSL
...
- switch from -Ds in Makefile to config.h
- small header cleaup
2003-05-07 00:06:37 +00:00
Oswald Buddenhagen
28e240a36b
don't free any config strings - who cares for a few bytes?
...
this fixes some crashes at exit.
2003-05-05 17:58:28 +00:00