diff --git a/src/plugins/lda-sieve/lda-sieve-plugin.c b/src/plugins/lda-sieve/lda-sieve-plugin.c index 8dba440d953181efc6c292ace76e5afc93176165..c8ee8ca48286db02f075197d98a071686f5244c5 100644 --- a/src/plugins/lda-sieve/lda-sieve-plugin.c +++ b/src/plugins/lda-sieve/lda-sieve-plugin.c @@ -285,37 +285,35 @@ lda_sieve_multiscript_get_scripts(struct sieve_instance *svinst, { struct sieve_script_sequence *sseq; struct sieve_script *script; - bool finished = FALSE; - int ret = 1; - - if (sieve_script_sequence_create(svinst, location, - &sseq, error_code_r) < 0) - return (*error_code_r == SIEVE_ERROR_NOT_FOUND ? 0 : -1); + int ret; - while (ret > 0 && !finished) { - if (sieve_script_sequence_next(sseq, &script, - error_code_r) < 0) { - switch (*error_code_r) { - case SIEVE_ERROR_NONE: - finished = TRUE; - break; - case SIEVE_ERROR_TEMP_FAILURE: - e_error(sieve_get_event(svinst), - "Failed to access %s script from '%s' " - "(temporary failure)", - label, location); - ret = -1; - default: - break; - } - continue; - } + ret = sieve_script_sequence_create(svinst, location, + &sseq, error_code_r); + if (ret < 0) { + if (*error_code_r == SIEVE_ERROR_NOT_FOUND) + return 0; + return -1; + } + while ((ret = sieve_script_sequence_next(sseq, &script, + error_code_r)) > 0) array_append(scripts, &script, 1); - } sieve_script_sequence_free(&sseq); - return ret; + if (ret < 0) { + switch (*error_code_r) { + case SIEVE_ERROR_TEMP_FAILURE: + e_error(sieve_get_event(svinst), + "Failed to access %s script from '%s' " + "(temporary failure)", + label, location); + break; + default: + break; + } + return -1; + } + return 0; } static void