diff --git a/src/lib-sieve/sieve-settings.c b/src/lib-sieve/sieve-settings.c index e4773d2524c2e210f4fcf7d06809fc09cdf698a1..47f70da4c47c73d151aeb34f9c27679eedd3a566 100644 --- a/src/lib-sieve/sieve-settings.c +++ b/src/lib-sieve/sieve-settings.c @@ -216,7 +216,9 @@ void sieve_settings_load(struct sieve_instance *svinst) &uint_setting)) svinst->max_redirects = (unsigned int)uint_setting; - svinst->max_cpu_time_secs = SIEVE_DEFAULT_MAX_CPU_TIME_SECS; + svinst->max_cpu_time_secs = + (svinst->env_location == SIEVE_ENV_LOCATION_MS ? + 0 : SIEVE_DEFAULT_MAX_CPU_TIME_SECS); if (sieve_setting_get_duration_value(svinst, "sieve_max_cpu_time", &period)) { if (period > (UINT_MAX / 1000)) diff --git a/src/lib-sieve/sieve.c b/src/lib-sieve/sieve.c index c353bebf557ced37edce0229071dafdd24601e7c..59ea41766b250449e92a2ddcdea0ac693f2a5342 100644 --- a/src/lib-sieve/sieve.c +++ b/src/lib-sieve/sieve.c @@ -1285,6 +1285,8 @@ bool sieve_resource_usage_is_excessive( const struct sieve_resource_usage *rusage) { i_assert(svinst->max_cpu_time_secs <= (UINT_MAX / 1000)); + if (svinst->max_cpu_time_secs == 0) + return FALSE; return (rusage->cpu_time_msecs > (svinst->max_cpu_time_secs * 1000)); }