ModestMailOperation *mail_op)
{
ModestMailOperationQueuePrivate *priv;
+ ModestMailOperationStatus status;
g_return_if_fail (MODEST_IS_MAIL_OPERATION_QUEUE (self));
g_return_if_fail (MODEST_IS_MAIL_OPERATION (mail_op));
g_queue_remove (priv->op_queue, mail_op);
g_mutex_unlock (priv->queue_lock);
- /* Debug code */
- {
- const GError *err;
- err = modest_mail_operation_get_error (mail_op);
- if (err)
- g_printerr ("Error in %s: %s\n", __FUNCTION__, err->message);
- }
-
/* Notify observers */
g_signal_emit (self, signals[QUEUE_CHANGED_SIGNAL], 0,
mail_op, MODEST_MAIL_OPERATION_QUEUE_OPERATION_REMOVED);
+ /* Check errors */
+ status = modest_mail_operation_get_status (mail_op);
+ if (status != MODEST_MAIL_OPERATION_STATUS_SUCCESS) {
+ /* This is a sanity check. Shouldn't be needed, but
+ prevent possible application crashes. It's useful
+ also for detecting mail operations with invalid
+ status and error handling */
+ if (modest_mail_operation_get_error (mail_op) != NULL)
+ modest_mail_operation_execute_error_handler (mail_op);
+ else {
+ if (status == MODEST_MAIL_OPERATION_STATUS_CANCELED)
+ g_warning ("%s: operation canceled \n", __FUNCTION__);
+ else
+ g_warning ("%s: possible error in a mail operation " \
+ "implementation. The status is not successful " \
+ "but the mail operation does not have any " \
+ "error set\n", __FUNCTION__);
+ }
+ }
+
/* Free object */
modest_runtime_verify_object_last_ref (mail_op, "");
g_object_unref (G_OBJECT (mail_op));