Maciej Piechotka [Sat, 3 Jul 2010 16:41:50 +0000 (12:41 -0400)]
Bug 623431 - Use gweather-3.0 when building with gtk3
Matthew Barnes [Sat, 3 Jul 2010 16:17:42 +0000 (12:17 -0400)]
Bug 623430 - libedataserverui.pc.in hardcodes 1.2 API version
David Woodhouse [Fri, 2 Jul 2010 10:56:57 +0000 (11:56 +0100)]
Update unseen count as new messages come in
When we get notified of new messages in the idle thread, or when they arrive
during our re-fetch of all flags (and we suddenly find we've got flags for a
message that didn't previously exist), ensure that we update the unseen count
according to the flags of the new messages.
This _doesn't_ handle the case where we called fetch_new_messages() directly
from refresh_info_start() because we _knew_ there were new messages, but in
fact there are _more_ new messages than we expected. We may have to switch to
a model where we say 'update flags for any UID greater than $X'.
David Woodhouse [Fri, 2 Jul 2010 09:58:11 +0000 (10:58 +0100)]
Make NSS database initialisation more robust, handle errors better
Since commit
9116943e we only attempt to open the new SQL database, but
some users are reporting issues. Be more careful about reporting errors
when that happens, and also fall back to the old DBM database if the SQL
database fails to initialise.
David Woodhouse [Fri, 2 Jul 2010 09:00:02 +0000 (10:00 +0100)]
Keep better track of server-side UNREAD count.
There are various circumstances in which the UNREAD count will change --
new unseen messages arriving, flags changes from the client, unseen
messages being expunged, etc. Keep track of those to improve the
accuracy of the unread count, to avoid the QRESYNC sanity check
triggering so often on minor issues that weren't the bug I was looking
for. For this, we have to keep track of whether a FETCH or VANISHED response
was solicited or unsolicited in certain cases.
David Woodhouse [Fri, 2 Jul 2010 08:57:31 +0000 (09:57 +0100)]
Don't refetch message headers we already have.
We were issuing a headers FETCH starting from the last known UID. But we
already _had_ the headers for the last known UID. Start from $UID+1 instead.
David Woodhouse [Fri, 2 Jul 2010 08:43:38 +0000 (09:43 +0100)]
Add sanity check after QRESYNC
If the total number of messages, unseen count and modseq don't match
what we think they should be, then fall back to refetching all flags as
we would have done without QRESYNC.
Jorge González [Thu, 1 Jul 2010 18:13:41 +0000 (20:13 +0200)]
Updated Spanish translation
David Woodhouse [Thu, 1 Jul 2010 08:01:27 +0000 (09:01 +0100)]
Fix memory leak in imapx_continuation() with SASL auth
==4945== 1 bytes in 1 blocks are definitely lost in loss record 48 of 23,077
==4945== at 0x4A0515D: malloc (vg_replace_malloc.c:195)
==4945== by 0x319A044AE2: g_malloc (gmem.c:132)
==4945== by 0x319A05C3BD: g_strdup (gstrfuncs.c:102)
==4945== by 0x6478E63: camel_sasl_challenge_base64 (camel-sasl.c:326)
==4945== by 0x12C54E72: imapx_continuation (camel-imapx-server.c:1698)
==4945== by 0x12C552CC: imapx_step (camel-imapx-server.c:1862)
David Woodhouse [Thu, 1 Jul 2010 07:59:59 +0000 (08:59 +0100)]
Fix memory leak in summary_header_to_db()
==4945== 9 bytes in 1 blocks are definitely lost in loss record 1,482 of 23,077
==4945== at 0x4A0515D: malloc (vg_replace_malloc.c:195)
==4945== by 0x319A044AE2: g_malloc (gmem.c:132)
==4945== by 0x319A05C3BD: g_strdup (gstrfuncs.c:102)
==4945== by 0x6466990: summary_header_to_db (camel-folder-summary.c:296)
==4945== by 0x12C48A2B: summary_header_to_db (camel-imapx-summary.c:289)
==4945== by 0x6463B69: camel_folder_summary_save_to_db (camel-folder-summary.c:2316)
==4945== by 0x12C507B2: imapx_command_sync_changes_done (camel-imapx-server.c:4227)
David Woodhouse [Wed, 30 Jun 2010 19:22:36 +0000 (20:22 +0100)]
Store Junk and NotJunk flags in IMAP server
Strictly speaking we shouldn't be doing this if the server won't understand
them and doesn't have \* in PERMANENTFLAGS -- but there are already bugs with
that anyway, when we try to set receipt-handled. I'll get to that shortly...
Matthew Barnes [Wed, 30 Jun 2010 15:48:51 +0000 (11:48 -0400)]
Update API documentation.
David Woodhouse [Wed, 30 Jun 2010 12:22:25 +0000 (13:22 +0100)]
Calculate can_qresync after fetching STATUS
David Woodhouse [Wed, 30 Jun 2010 10:08:54 +0000 (11:08 +0100)]
Fix starting UID in QRESYNC SELECT.
The indices in the folder summary count from zero, not one.
David Woodhouse [Wed, 30 Jun 2010 08:49:12 +0000 (09:49 +0100)]
Add proper QRESYNC support on SELECT; use it for refresh_info
We aren't yet correctly updating the folder's modseq every time, so we're
often asking for more than we need. That's better than asking for _less_ than
we need though -- will go over that part very carefully in separate commit(s).
We still aren't handling uidvalidity either. RSN...
David Woodhouse [Wed, 30 Jun 2010 08:44:25 +0000 (09:44 +0100)]
Propagate SELECT error properly to dependent commands
David Woodhouse [Wed, 30 Jun 2010 08:39:22 +0000 (09:39 +0100)]
Add support for * VANISHED (EARLIER) [uidset...]
(Actually just throw away anything in the parentheses).
We'll need this for QRESYNC SELECT
Matthew Barnes [Tue, 29 Jun 2010 23:17:59 +0000 (19:17 -0400)]
Work around sudden disappearance of GdkRegion in GTK+ 2.90.5.
API was deprecated and removed in less than two hours! Sheesh!
Chenthill Palanisamy [Tue, 29 Jun 2010 18:06:13 +0000 (23:36 +0530)]
post release version bump
Chenthill Palanisamy [Tue, 29 Jun 2010 17:48:40 +0000 (23:18 +0530)]
News update for 2.31.4 release
David Woodhouse [Tue, 29 Jun 2010 16:23:57 +0000 (17:23 +0100)]
Set server_flags after APPENDUID; don't send them to the server again.
This is just silly....
Starting command (active=1, literal) A00452 APPEND outgoing (\SEEN) {551+}
Starting command (active=1,) A00454 SELECT outgoing
Starting command (active=1,) A00453 UID STORE 14443 +FLAGS.SILENT (\SEEN)
David Woodhouse [Tue, 29 Jun 2010 15:45:56 +0000 (16:45 +0100)]
Fix APPENDUID handling of uidvalidity.
We shouldn't be comparing with is->uidvalidity; that's just short-term
storage for use _during_ a SELECT. Compare with ifolder->uidvalidity instead.
Oh, and let's try to make sure that's actually set somewhere...
David Woodhouse [Tue, 29 Jun 2010 15:18:38 +0000 (16:18 +0100)]
Select folder based on CamelFolder *, not its name
As threatened in commit
6900bf35807c9be0cb2498a63cef4684ff9144d6, sanify the
way that commands indicate which folder (if any) should be selected when they
run.
Until now, they've set a folder name in ic->select, which was passed as an
argument to camel_imapx_command_new(). That's been used for comparisons to
decide whether the command can run... but when it actually comes to select
a folder specifically for the benefit of the command, it wasn't used! Instead,
the folder in ic->job->folder was used instead.
Clean this up so that ic->select is now a CamelFolder * instead of a string,
and actually use it consistently for both the comparisons and the eventual
SELECT.
Matthew Barnes [Tue, 29 Jun 2010 13:57:41 +0000 (09:57 -0400)]
Lower gtk+-3.0 requirement to 2.90.4.
Since 2.90.5 isn't release yet and the release team would probably
like to assemble a 2.31.4 moduleset.
Matthew Barnes [Tue, 29 Jun 2010 13:47:51 +0000 (09:47 -0400)]
Make libedataserverui API docs build with gtk+-3.0.
Matthew Barnes [Tue, 29 Jun 2010 13:32:49 +0000 (09:32 -0400)]
Make libedataserverui test programs build with gtk+-3.0.
Matthew Barnes [Tue, 29 Jun 2010 13:25:15 +0000 (09:25 -0400)]
TEMPORARILY build without weather calendars in distcheck.
Will revert this when we see a libgweather-2.90.x release.
Matthew Barnes [Tue, 29 Jun 2010 13:16:50 +0000 (09:16 -0400)]
Fix E_DATA_SERVER_UI_DEPS.
Was hardcoding gtk+-2.0 instead of using $GTK_PACKAGE.
Matthew Barnes [Tue, 29 Jun 2010 13:15:26 +0000 (09:15 -0400)]
Show the GTK+ package in configure summary.
Matthew Barnes [Tue, 29 Jun 2010 13:14:33 +0000 (09:14 -0400)]
Build against gtk+-3.0 when running distcheck.
Matthew Barnes [Tue, 29 Jun 2010 13:07:43 +0000 (09:07 -0400)]
Require gweather >= 2.90.0 when building against gtk+-3.0.
Note, at this moment libgweather-2.90.0 doesn't exist. The version
requirement is a guess. The tarball should appear "any minute now".
Milan Crha [Tue, 29 Jun 2010 12:54:47 +0000 (14:54 +0200)]
Bug #622350 - CamelFolder's "deleted" signal prototype changed
Chenthill Palanisamy [Tue, 29 Jun 2010 12:05:09 +0000 (17:35 +0530)]
Update libedataserverui versioning for gtk3. 3.0 should build gtk3 and 1.2 with gtk2
Michael Meeks [Tue, 29 Jun 2010 10:05:53 +0000 (11:05 +0100)]
Add helper to show the name selector with correct transience, to
fix the umpteen bugs in its use in Evolution.
David Woodhouse [Tue, 29 Jun 2010 08:41:33 +0000 (09:41 +0100)]
Update summary uidnext after fetching messages.
Since we don't refetch flags if we've fetched new messages for a previously
empty folder, we weren't updating the stored uidnext -- which meant we would
refetch messages again next time. And if the folder is empty, we'd refetch
messages every time and never update uidnext.
David Woodhouse [Sun, 27 Jun 2010 08:26:41 +0000 (09:26 +0100)]
Bug 622828 - Don't recurse to parent class's ->disconnect() method.
That seems to be our caller. Calling it back will just end in tears.
David Woodhouse [Sun, 27 Jun 2010 07:37:55 +0000 (08:37 +0100)]
Bug 622822 - Fix failure return from nntp_folder_refresh_info_online()
When invoked with no fmt argument, camel_nntp_command() is only supposed
to select the folder and return zero.
Since commit
08cfec3e we have been interpreting that zero as FALSE, and
this is what causes nntp folders to appear empty as refresh_info appears
to fail.
David Woodhouse [Sat, 26 Jun 2010 15:03:35 +0000 (16:03 +0100)]
Fix nntp folder tree building
When it creates a 'virtual' NOSELECT|CHILDREN folder to fill a gap in
the hierarchy, it doesn't correctly insert that into the tree if it is a
top-level folder (i.e. last == NULL).
Once you fix that bug, you end up with two identical copies of the
tree-insertion code. I moved that out into a separate function.
David Woodhouse [Sat, 26 Jun 2010 13:47:25 +0000 (14:47 +0100)]
Bug 622719 - Fix lifetime issues with CamelIMAPXServer w.r.t. disconnection
David Woodhouse [Fri, 25 Jun 2010 17:09:09 +0000 (18:09 +0100)]
Fix idle thread exit and locking
If we trigger its exit and wait for it while still holding the lock, it may
deadlock on the same lock. Also fix a multiple-unlock bug.
David Woodhouse [Fri, 25 Jun 2010 11:25:38 +0000 (12:25 +0100)]
Handle BYE response
David Woodhouse [Fri, 25 Jun 2010 08:36:46 +0000 (09:36 +0100)]
Fix idle dwell time
When switching from sleep() to g_usleep() in commit
25b19908, we should
also have converted its argument into µs.
David Woodhouse [Thu, 24 Jun 2010 23:12:08 +0000 (00:12 +0100)]
Remove superfluous debug printf
David Woodhouse [Thu, 24 Jun 2010 23:01:36 +0000 (00:01 +0100)]
Use LIST-EXTENDED to return subscribed status from LIST
If the server supports LIST-EXTENDED, we don't have to follow the initial
LIST with an LSUB command to see which folders are subscribed -- we can
just ask it to tell us the subscribed status in the LIST responses.
David Woodhouse [Thu, 24 Jun 2010 22:23:19 +0000 (23:23 +0100)]
Detect LIST-STATUS and LIST-EXTENDED capabilities
David Woodhouse [Thu, 24 Jun 2010 22:10:35 +0000 (23:10 +0100)]
Don't show subscribed but non-existent folders.
The RFCs are clear that it's OK to have non-existent folders in the
subscribed list. Don't treat them as if they were real folders -- just
use their existence in the LSUB response to set the SUBSCRIBED flag if they
were already returned by the LIST response.
David Woodhouse [Thu, 24 Jun 2010 22:05:48 +0000 (23:05 +0100)]
Really select INBOX for folder deletion and rename
The folder selection code is a bit screwed -- a string comparison with
ic->select is used to determine which folder a job can run on, but
ic->job->folder is the one that's actually passed to imapx_select().
Fixing that is probably going to involve turning ic->select into a
folder pointer instead of a string -- so these callers might as well
start getting used to the fact that they have to look the INBOX up using
camel_store_get_folder(). I'll come back and actually fix the
imapx_command_start() code later, when there's nothing more important
offending me.
We really do need _not_ to be SELECTed on a renamed or deleted folder, or
entering IDLE will cause some servers (dovecot) to kick us off.
David Woodhouse [Thu, 24 Jun 2010 14:41:30 +0000 (15:41 +0100)]
Remove courier-imap rename workaround
This is breaking things on non-buggy servers, because after renaming the
folder in question we also attempt to rename all its subfolders... and
quite reasonably get a failure.
Testing against current versions of Courier (4.4.0) seems to suggest
that it's not actually necessary, either -- perhaps the bug has been
fixed in the 9 years since this hack was first added to the imap back
end in commit
bfce883e.
Chenthill Palanisamy [Mon, 28 Jun 2010 09:51:13 +0000 (15:21 +0530)]
use gtk-3.0 if available
Yaron Shahrabani [Sun, 27 Jun 2010 21:09:13 +0000 (00:09 +0300)]
Updated Hebrew translation.
Matthew Barnes [Sun, 27 Jun 2010 11:45:18 +0000 (07:45 -0400)]
Bug 622392 - Build failure due to missing nspr includes
camel.pc.in already defines @mozilla_nss@ and @mozilla_nspr@ in its
Requires list, but that only works for distros that ship their own nss
and nspr pkg-config files.
Debian, for example, doesn't (but it should). So @mozilla_nss@ and
@mozilla_nspr@ are never defined. Instead, the configure script falls
back to the older "manual" settings and defines MANUAL_NSS_CFLAGS and
MANUAL_NSS_LIBS. So list those as well in camel.pc.in. They will be
mutually exclusive with the pkg-config variables.
And please, for the love of free software, somebody push pkg-config
files to upstream nss/nspr so we can drop this gunk from configure.
It's 2010 already for cryin' out loud...
Matthew Barnes [Sun, 27 Jun 2010 02:55:43 +0000 (22:55 -0400)]
Bug 622799 - Fails to link libedataserverui-1.2.la
Milan Crha [Fri, 25 Jun 2010 12:27:42 +0000 (14:27 +0200)]
Bug #622710 - Crash in imapx_idle_supported due to cinfo being NULL
Fridrich Štrba [Fri, 25 Jun 2010 07:54:45 +0000 (09:54 +0200)]
For the sake of portability: sleep -> g_usleep
Milan Crha [Thu, 24 Jun 2010 18:42:16 +0000 (20:42 +0200)]
Bug #620815 - Memory leaks with Evolution
David Woodhouse [Thu, 24 Jun 2010 13:13:17 +0000 (14:13 +0100)]
Bug 622008 - Don't trust is->select_folder in imapx_job_scan_changes_done()
We may have already issued a new SELECT command by the time the scan_changes
completion function is called, and is->select_folder may be NULL already.
David Woodhouse [Thu, 24 Jun 2010 13:09:45 +0000 (14:09 +0100)]
Disable the special-case for the selected folder in refresh_info
It will make us miss messages on servers like Groupwise which don't give
unsolicited change notices; we really _do_ need to issue STATUS there,
even though it's explicitly forbidden by RFC3501 do so. Or SEARCH UNSEEN.
But the logic is broken anyway -- what is the currently-selected folder NOW
may not be the currently-selected folder by the time our STATUS command hits
the front of the queue anyway, so we do still end up doing STATUS on the
current folder sometimes. Needs more thought.
David Woodhouse [Thu, 24 Jun 2010 12:13:03 +0000 (13:13 +0100)]
Revamp imapx_job_refresh_info_start() to make use of modseq and uidnext
David Woodhouse [Sat, 19 Jun 2010 11:45:56 +0000 (12:45 +0100)]
Always enable QRESYNC where it's available.
This doesn't have much of an effect until we start using it, except for
enabling the VANISHED response, and causing unsolicited fetches to have UIDs.
David Woodhouse [Thu, 24 Jun 2010 12:01:21 +0000 (13:01 +0100)]
Update summary to include uidnext and modseq, and 64-bit uidvalidity
Also set the new fields in imapx_job_scan_changes_done() -- although
the summary's uidvalidity still isn't being set anywhere.
David Woodhouse [Thu, 24 Jun 2010 11:36:51 +0000 (12:36 +0100)]
Handle UIDNEXT and MODSEQ/HIGHESTMODSEQ information from server.
UIDNEXT is useful for detecting when new messages have been added to a
folder, and (for servers which support it) MODSEQ is even more useful because
it lets us detect flags changes.
David Woodhouse [Thu, 24 Jun 2010 11:30:58 +0000 (12:30 +0100)]
Make uidvalidity field 64-bit
But not in the summary yet; I'll get to that shortly and we aren't even
storing it there anyway right now -- we're always writing zero.
David Woodhouse [Thu, 24 Jun 2010 11:21:24 +0000 (12:21 +0100)]
Recalculate unread_on_server count after fetching flags.
Since we're not allowed to issue STATUS for the currently-selected mailbox,
the only way to ask the server for the count of unseen messages is to select
some _other_ mailbox and then issue STATUS. Even re-SELECTing the mailbox
doesn't give it, although a 'SEARCH UNSEEN' would do it, if we count the
responses.
But we _can_ work it out from the flags after we fetch them all.
David Woodhouse [Thu, 24 Jun 2010 11:14:23 +0000 (12:14 +0100)]
Decrement ifolder->exists_on_server when handling EXPUNGE/VANISHED
We're supposed to keep track of this for ourselves; the server doesn't send
a new EXISTS.
David Woodhouse [Wed, 23 Jun 2010 23:24:58 +0000 (00:24 +0100)]
Permit all characters but dir_sep in imapx folder names.
There's no point in preventing people from creating folders with %#* in the
names; they can always create them from elsewhere. Or, AFAICT, just create
them using evo with a 'permitted' name and then rename them to contain the
'offending' characters.
David Woodhouse [Wed, 23 Jun 2010 23:17:58 +0000 (00:17 +0100)]
Simplify relationship between full and path names for imapx
There seems to be no point in the %25-style escapes, which we were applying
in full_to_path() only if dir_sep != '/', and then reversing in path_to_full()
unconditionally. Instead, just swap dir_sep with '/'. Aside from simplifying
the code, this also means that the path displayed to the user will be as close
as possible to the real name -- it means that my "be nasty to imapx" test
folder called fish"%sd is displayed properly, instead of as fish"%25sd.
David Woodhouse [Wed, 23 Jun 2010 22:04:01 +0000 (23:04 +0100)]
Queue non-folder specific jobs while waiting for SELECT to complete
Remove this TODO from the list...
David Woodhouse [Wed, 23 Jun 2010 11:07:33 +0000 (12:07 +0100)]
Propagate STATUS responses to folders directly from imapx_untagged()
Storing this in the server-global variables like is->exists is broken;
any SELECT command which is sent between the untagged STATUS response
and the tagged completion of the command is going to overwrite the data.
Not to mention the fact that LIST-STATUS and NOTIFY will be totally hosed,
when we get more than one untagged STATUS response between tagged commands.
David Woodhouse [Mon, 21 Jun 2010 20:00:17 +0000 (21:00 +0100)]
Update ifolder->exists_on_server from STATUS response
David Woodhouse [Fri, 18 Jun 2010 10:29:29 +0000 (11:29 +0100)]
Make camel_imapx_stream_number() return a guint64
Some fields like UIDVALIDITY and MODSEQ may well be larger than can fit in
a 32-bit value. RFC4551 makes this abundantly clear in its examples.
David Woodhouse [Sat, 19 Jun 2010 09:51:22 +0000 (10:51 +0100)]
Allow debugging to be enabled with CAMEL_DEBUG environment variable
CAMEL_DEBUG=imapx will enable all debugging, or 'imapx:command',
'imapx:token' etc. will enable certain types.
Not entirely sure if 'debug' and 'extra' are the correct names for the
old 'd()' and 'e()' debug output...
David Woodhouse [Wed, 23 Jun 2010 18:27:34 +0000 (19:27 +0100)]
Fix overzealous IDLE handling
We were sometimes entering the IDLE state even during a multi-part message
fetch, between one part and the other. This happened because we call
imapx_command_start_next() which sees an empty queue and triggers IDLE,
before we called the completion handler for the previous command which
puts a new FETCH request into the queue.
Similar behaviour was seen in various other situations, including between
subsequent sync_message() calls from the front end.
Fix this by having a dwell time of 2 seconds between the queue becoming
empty and actually sending the IDLE command. Only if the queue _remains_
empty for 2 seconds do we really enter the IDLE state.
Clean up the IDLE handling to use a state machine instead of a set of
boolean flags, while we're at it.
David Woodhouse [Wed, 23 Jun 2010 13:33:14 +0000 (14:33 +0100)]
Improve imapx command queue processing
We were breaking out of the loop which looked for commands to start on
the currently-selected folder, as soon as we reached any command which
was for any other folder.
This meant that we'd only ever run the _first_ command from the queue,
even if it was for another folder and there were other were other commands
with equal priority waiting to run on the _current_ folder. This leads to
a bunch of gratuitous ping-ponging between folders with SELECT, without
actually running any real commands between two consecutive SELECTs.
David Woodhouse [Mon, 21 Jun 2010 19:56:40 +0000 (20:56 +0100)]
Silence compiler warning in imapx_job_matches()
It's a false positive, but it's annoying:
camel-imapx-server.c: In function ‘imapx_job_matches’:
camel-imapx-server.c:1004: warning: ‘full_name’ may be used uninitialized in this function
David Woodhouse [Sun, 20 Jun 2010 22:43:28 +0000 (23:43 +0100)]
Remove redundant 'unseen' member of CamelIMAPXServer.
This was added in commit
ed158d12 ("Fetch new messages first") seemingly by
mistake -- there was already an 'unread' field.
David Woodhouse [Sun, 20 Jun 2010 22:36:28 +0000 (23:36 +0100)]
Handle [CLOSED] status (RFC5162).
This indicates precisely when the selected mailbox changes to the new
mailbox during the SELECT command, before its tagged completion.
This allows us to assign unsolicited FETCH responses to the correct
mailbox; with QRESYNC those will arrive before the SELECT completion.
It also theoretically allows us to pipeline SELECT requests, although
there's not a huge amount of point in that and we'll have other issues
with our implementation if we do that.
David Woodhouse [Sat, 19 Jun 2010 21:03:00 +0000 (22:03 +0100)]
Cope with unsolicited FETCH having both FLAGS and UID.
This'll happen once we're using CONDSTORE or QRESYNC
David Woodhouse [Sat, 19 Jun 2010 11:41:11 +0000 (12:41 +0100)]
Support VANISHED response (RFC5162)
David Woodhouse [Sat, 19 Jun 2010 10:57:03 +0000 (11:57 +0100)]
Extract EXPUNGE handling into imapx_expunge_uid_from_summary() function.
We'll want to use the same function for handling VANISHED.
David Woodhouse [Sat, 19 Jun 2010 11:37:48 +0000 (12:37 +0100)]
Fix imapx_parse_flags to not just return the first UID repeatedly, export it.
David Woodhouse [Mon, 21 Jun 2010 20:02:43 +0000 (21:02 +0100)]
Fix batch fetch to use UID FETCH in imapx_job_fetch_new_messages_start()
David Woodhouse [Sun, 20 Jun 2010 18:23:17 +0000 (19:23 +0100)]
Add LITERALPLUS support.
In imapx_command_start(), just keep calling imapx_continuation() to send
the continuations immediately.
For this, we have to pass the CamelIMAPXServer pointer in to
camel_imapx_command_new() so that it can see the server's capabilities.
David Woodhouse [Tue, 22 Jun 2010 10:04:06 +0000 (11:04 +0100)]
Fix division-by-zero in imapx message fetch
Use ifolder->exists_on_server, not imap->exists (which could have come
from a STATUS command and be the value for some other folder).
And it's possible to get here when we thought there were no messages, so
add ?:1 to avoid the division by zero in that case too.
David Woodhouse [Thu, 24 Jun 2010 10:12:02 +0000 (11:12 +0100)]
Don't bother checking for is->cinfo being NULL. It can never happen now.
Famous last words, I know...
David Woodhouse [Tue, 22 Jun 2010 10:55:09 +0000 (11:55 +0100)]
Add IMAPX_INITIALISED state; don't let users run before CAPABILITY/NAMESPACE
Previously, other users would blindly carry on as soon as we reached the
IMAPX_AUTHENTICATED state... and then occasionally fail because ->capa
wasn't set, etc.
David Woodhouse [Mon, 21 Jun 2010 10:11:01 +0000 (11:11 +0100)]
Encode folder names as literals when sending commands, where needed
David Woodhouse [Mon, 21 Jun 2010 10:10:01 +0000 (11:10 +0100)]
Accept literals as folder names in STATUS
David Woodhouse [Mon, 21 Jun 2010 10:08:59 +0000 (11:08 +0100)]
NUL-terminate literal strings when tokenising
David Woodhouse [Thu, 17 Jun 2010 13:58:41 +0000 (14:58 +0100)]
Re-fetch capabilities after STARTTLS. There might be new auth methods available
David Woodhouse [Thu, 17 Jun 2010 13:47:56 +0000 (14:47 +0100)]
Accept unsolicited CAPABILITY report as part of LOGIN/AUTHENTICATE response
Also fix up freeing of cinfo status response.
David Woodhouse [Thu, 17 Jun 2010 13:08:59 +0000 (14:08 +0100)]
Fix handling of unsolicited [CAPABILITY xxx] report in server greeting.
Fix up imapx_untagged() and imap_parse_status() to handle capabilities,
and use imapx_untagged() to read the server greeting.
Unify the greeting handling for the process and socket connections, and
don't re-fetch the capabilities immediately if we have them.
Handle incoming lines of noise before the greeting.
David Woodhouse [Thu, 17 Jun 2010 10:37:34 +0000 (11:37 +0100)]
Detect CONDSTORE and QRESYNC capabilities
I have plans for these...
David Woodhouse [Wed, 23 Jun 2010 22:51:29 +0000 (23:51 +0100)]
Remove unused variable ‘message’
camel-offline-folder.c: In function ‘offline_downsync_sync’:
camel-offline-folder.c:63: warning: unused variable ‘message’
David Woodhouse [Wed, 23 Jun 2010 13:38:41 +0000 (14:38 +0100)]
Use camel_folder_sync_message() to sync messages.
The imapx back end will handle sync_message requests at a much lower
priority than normal get_message requests, as is right and proper.
It would help if the front end would call the correct method, so that
the prioritisation actually works as expected. Otherwise, sync_message
requests end up having higher priority than the requests which are updating
flags and headers for changed folders -- leading to a crappy user experience.
Matthew Barnes [Wed, 23 Jun 2010 14:48:30 +0000 (10:48 -0400)]
I caused a build break, shame on me.
Matthew Barnes [Tue, 22 Jun 2010 23:46:51 +0000 (19:46 -0400)]
camel_folder_append_message: 'info' can be NULL.
Matthew Barnes [Tue, 22 Jun 2010 14:05:41 +0000 (10:05 -0400)]
Bug 316783 - Broken dragging of email addresses
Matthew Barnes [Mon, 21 Jun 2010 15:21:41 +0000 (11:21 -0400)]
Clarify documentation for e_destination_get_address().
Matthew Barnes [Mon, 21 Jun 2010 11:28:22 +0000 (07:28 -0400)]
Revert "Bug 619347 - Return formatted address in e_destination_get_address"
This reverts commit
db8c986c4f06f0cb57de9bfa6982b4e78f0bb32a.
Despite the misleading documentation, e_destination_get_address() -is-
intended to return an encoded address suitable for use in mail headers.
e_destination_get_textrep() exists for displaying destination addresses
to the user. The Contact List Editor is apparently calling the wrong
function.
Matthew Barnes [Sat, 19 Jun 2010 16:57:52 +0000 (12:57 -0400)]
Bug 621851 - CamelFolder description should fall back to full-name