]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-program-client: Fixed program_client_run() that succeeds rapidly.
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Mon, 10 Oct 2016 18:19:34 +0000 (21:19 +0300)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Thu, 13 Oct 2016 08:27:37 +0000 (10:27 +0200)
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.

src/lib-program-client/program-client.c

index 2f2fc5794f35d91dfe79acd3b938091eb5761cc1..fb5df8e09bb52e80d03fd408967bfd51c93b1c78 100644 (file)
@@ -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);
        }