IMAPX: Abort commands instead of cancelling jobs on error.
IMAPX: Abort commands instead of cancelling jobs on error.

In IMAPX terminology, a "job" executes one or more "commands" on behalf
of an application to accomplish some task on the IMAP server.  Each job
has only one active command at a time.

When the parser loop breaks with an error, distribute the error to all
active and pending commands using camel_imapx_command_failed() instead
of just cancelling their respective jobs.  This allows the commands to
fail gracefully, which will in turn allow the jobs to fail gracefully.

Prior to this, the GError passed to cancel_all_jobs() was simply being
discarded.  The jobs were all cancelled but the commands were allowed to
continue.  This resulted in misinterpreted server responses, local cache
corruption, and all sorts of fun misbehaviors.

matzipan/evolution-data-server,Distrotech/evolution-data-server,matzipan/evolution-data-server,Distrotech/evolution-data-server,matzipan/evolution-data-server,tintou/evolution-data-server,tintou/evolution-data-server,Distrotech/evolution-data-server,tintou/evolution-data-server,Distrotech/evolution-data-server,matzipan/evolution-data-server,tintou/evolution-data-server,matzipan/evolution-data-server,Distrotech/evolution-data-server