From: Timo Sirainen Date: Mon, 10 Oct 2016 18:19:34 +0000 (+0300) Subject: lib-program-client: Fixed program_client_run() that succeeds rapidly. X-Git-Tag: 2.2.26~149 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=282de4e528a22ea4da38f9b69a919fd5bac6ced5;p=thirdparty%2Fdovecot%2Fcore.git lib-program-client: Fixed program_client_run() that succeeds rapidly. program_client_run_async() could have called the callback with result=0 before io_loop_run(). This happened with local client. Fixes in test-program-client-local: Panic: BUG: No IOs or timeouts set. Not waiting for infinity. --- diff --git a/src/lib-program-client/program-client.c b/src/lib-program-client/program-client.c index 2f2fc5794f..fb5df8e09b 100644 --- a/src/lib-program-client/program-client.c +++ b/src/lib-program-client/program-client.c @@ -556,7 +556,7 @@ void program_client_run_callback(int result, int *context) int program_client_run(struct program_client *pclient) { - int ret = 0; + int ret = -2; struct ioloop *prev_ioloop = current_ioloop; struct ioloop *ioloop = io_loop_create(); @@ -564,7 +564,7 @@ int program_client_run(struct program_client *pclient) program_client_run_async(pclient, program_client_run_callback, &ret); - if (ret == 0) { + if (ret == -2) { io_loop_run(ioloop); }