diff --git a/src/lib-sieve/sieve-storage.c b/src/lib-sieve/sieve-storage.c index 6fa2154cc9254c8307c4c0dde73dbd4326ec11d7..58c6643f2bb1b6806bf04a0e08dac487df680426 100644 --- a/src/lib-sieve/sieve-storage.c +++ b/src/lib-sieve/sieve-storage.c @@ -410,6 +410,8 @@ sieve_storage_init_real(struct sieve_instance *svinst, struct event *event, } } T_END; if (ret < 0) { + i_assert(storage->error_code != SIEVE_ERROR_NONE); + i_assert(storage->error != NULL); *error_code_r = storage->error_code; *error_r = t_strdup(storage->error); sieve_storage_unref(&storage); @@ -899,7 +901,11 @@ sieve_storage_get_script_direct(struct sieve_storage *storage, const char *name, i_assert(storage->v.get_script != NULL); ret = storage->v.get_script(storage, name, script_r); i_assert(ret <= 0); - *error_code_r = storage->error_code; + if (ret < 0) { + i_assert(storage->error_code != SIEVE_ERROR_NONE); + i_assert(storage->error != NULL); + *error_code_r = storage->error_code; + } return ret; } @@ -1054,6 +1060,8 @@ sieve_storage_active_script_do_get_name(struct sieve_storage *storage, i_assert(storage->v.active_script_get_name != NULL); ret = storage->v.active_script_get_name(storage, name_r); if (ret < 0) { + i_assert(storage->error_code != SIEVE_ERROR_NONE); + i_assert(storage->error != NULL); if (storage->error_code == SIEVE_ERROR_NOT_FOUND) { sieve_storage_clear_error(storage); ret = 0; @@ -1077,8 +1085,11 @@ sieve_storage_active_script_do_get_name(struct sieve_storage *storage, ret = sieve_storage_check_script(def_storage, storage->default_name, NULL); - if (ret < 0) + if (ret < 0) { sieve_storage_copy_error(storage, def_storage); + i_assert(storage->error_code != SIEVE_ERROR_NONE); + i_assert(storage->error != NULL); + } sieve_storage_unref(&def_storage); if (ret <= 0) return ret; @@ -1119,6 +1130,9 @@ int sieve_storage_active_script_open(struct sieve_storage *storage, i_assert(storage->v.active_script_open != NULL); ret = storage->v.active_script_open(storage, &script); i_assert(ret <= 0); + i_assert(ret == 0 || + (storage->error_code != SIEVE_ERROR_NONE && + storage->error != NULL)); if (ret == 0 || storage->error_code != SIEVE_ERROR_NOT_FOUND || (storage->flags & SIEVE_STORAGE_FLAG_SYNCHRONIZING) != 0) { @@ -1164,6 +1178,9 @@ int sieve_storage_deactivate(struct sieve_storage *storage, time_t mtime) sieve_storage_set_modified(storage, mtime); (void)sieve_storage_sync_deactivate(storage); } else { + i_assert(storage->error_code != SIEVE_ERROR_NONE); + i_assert(storage->error != NULL); + struct event_passthrough *e = event_create_passthrough(storage->event)-> add_str("error", storage->error)-> @@ -1196,8 +1213,11 @@ int sieve_storage_list_init(struct sieve_storage *storage, sieve_storage_clear_error(storage); i_assert(storage->v.list_init != NULL); - if (storage->v.list_init(storage, &lctx) < 0) + if (storage->v.list_init(storage, &lctx) < 0) { + i_assert(storage->error_code != SIEVE_ERROR_NONE); + i_assert(storage->error != NULL); return -1; + } lctx->storage = storage; sieve_storage_ref(storage); @@ -1283,6 +1303,9 @@ int sieve_storage_list_deinit(struct sieve_storage_list_context **_lctx) i_assert(storage->v.list_deinit != NULL); ret = storage->v.list_deinit(lctx); + i_assert(ret >= 0 || + (storage->error_code != SIEVE_ERROR_NONE && + storage->error != NULL)); sieve_storage_unref(&def_storage); sieve_storage_unref(&storage); @@ -1364,6 +1387,9 @@ sieve_storage_save_init(struct sieve_storage *storage, const char *scriptname, i_assert(storage->v.save_init != NULL); if ((storage->v.save_init(sctx, scriptname, input)) < 0) { + i_assert(storage->error_code != SIEVE_ERROR_NONE); + i_assert(storage->error != NULL); + struct event_passthrough *e = event_create_passthrough(sctx->event)-> add_str("error", storage->error)-> @@ -1391,8 +1417,11 @@ int sieve_storage_save_continue(struct sieve_storage_save_context *sctx) i_assert(storage->v.save_continue != NULL); ret = storage->v.save_continue(sctx); - if (ret < 0) + if (ret < 0) { + i_assert(storage->error_code != SIEVE_ERROR_NONE); + i_assert(storage->error != NULL); sctx->failed = TRUE; + } return ret; } @@ -1409,6 +1438,9 @@ int sieve_storage_save_finish(struct sieve_storage_save_context *sctx) i_assert(storage->v.save_finish != NULL); ret = storage->v.save_finish(sctx); if (ret < 0) { + i_assert(storage->error_code != SIEVE_ERROR_NONE); + i_assert(storage->error != NULL); + struct event_passthrough *e = event_create_passthrough(sctx->event)-> add_str("error", storage->error)-> @@ -1444,7 +1476,8 @@ sieve_storage_save_get_tempscript(struct sieve_storage_save_context *sctx) sctx->scriptobject = storage->v.save_get_tempscript(sctx); i_assert(sctx->scriptobject != NULL || - storage->error_code != SIEVE_ERROR_NONE); + (storage->error_code != SIEVE_ERROR_NONE && + storage->error != NULL)); return sctx->scriptobject; } @@ -1540,6 +1573,9 @@ int sieve_storage_save_commit(struct sieve_storage_save_context **_sctx) i_assert(storage->v.save_commit != NULL); ret = storage->v.save_commit(sctx); + i_assert(ret >= 0 || + (storage->error_code != SIEVE_ERROR_NONE && + storage->error != NULL)); /* Implicitly activate it when we're replacing the default active script */ @@ -1643,6 +1679,9 @@ int sieve_storage_save_as_active(struct sieve_storage *storage, set_name("sieve_storage_save_finished"); e_debug(e->event(), "Finished saving active script"); } else { + i_assert(storage->error_code != SIEVE_ERROR_NONE); + i_assert(storage->error != NULL); + struct event_passthrough *e = event_create_passthrough(event)-> add_str("error", storage->error)-> @@ -1679,6 +1718,9 @@ int sieve_storage_save_as(struct sieve_storage *storage, struct istream *input, set_name("sieve_storage_save_finished"); e_debug(e->event(), "Finished saving sieve script"); } else { + i_assert(storage->error_code != SIEVE_ERROR_NONE); + i_assert(storage->error != NULL); + struct event_passthrough *e = event_create_passthrough(event)-> add_str("error", storage->error)->