dovecot-2.2-pigeonhole: lib-sieve: util: program client: Fixed h...

pigeonhole at rename-it.nl pigeonhole at rename-it.nl
Tue May 5 08:50:16 UTC 2015


details:   http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/89e0cef5b264
changeset: 2042:89e0cef5b264
user:      Stephan Bosch <stephan at rename-it.nl>
date:      Tue May 05 10:41:45 2015 +0200
description:
lib-sieve: util: program client: Fixed handing of situation when no input is provided to external program used as a command.
Previous fixes still omitted a few important aspects:
Connect return result wasn't actually passed up to program_client_run().
Default exit code was wrong.

diffstat:

 src/lib-sieve/util/program-client-remote.c       |   2 +-
 src/lib-sieve/util/program-client.c              |   8 +++++---
 tests/plugins/extprograms/execute/execute.svtest |  14 ++++++++++++++
 3 files changed, 20 insertions(+), 4 deletions(-)

diffs (70 lines):

diff -r 1eb0362461f0 -r 89e0cef5b264 src/lib-sieve/util/program-client-remote.c
--- a/src/lib-sieve/util/program-client-remote.c	Mon May 04 00:26:58 2015 +0200
+++ b/src/lib-sieve/util/program-client-remote.c	Tue May 05 10:41:45 2015 +0200
@@ -208,7 +208,7 @@
 		program_client_fail(pclient, PROGRAM_CLIENT_ERROR_IO);
 		return;
 	}
-	
+
 	(void)program_client_connected(pclient);
 }
 
diff -r 1eb0362461f0 -r 89e0cef5b264 src/lib-sieve/util/program-client.c
--- a/src/lib-sieve/util/program-client.c	Mon May 04 00:26:58 2015 +0200
+++ b/src/lib-sieve/util/program-client.c	Tue May 05 10:41:45 2015 +0200
@@ -29,17 +29,19 @@
 
 static int program_client_connect(struct program_client *pclient)
 {
+	int ret;
+
 	if (pclient->set.client_connect_timeout_msecs != 0) {
 		pclient->to = timeout_add
 			(pclient->set.client_connect_timeout_msecs,
 				program_client_connect_timeout, pclient);
 	}
 
-	if ( pclient->connect(pclient) < 0 ) {
+	if ( (ret=pclient->connect(pclient)) < 0 ) {
 		program_client_fail(pclient, PROGRAM_CLIENT_ERROR_IO);
 		return -1;
 	}
-	return 1;
+	return ret;
 }
 
 static int program_client_close_output(struct program_client *pclient)
@@ -487,7 +489,7 @@
 
 	/* reset */
 	pclient->disconnected = FALSE;
-	pclient->exit_code = 0;
+	pclient->exit_code = 1;
 	pclient->error = PROGRAM_CLIENT_ERROR_NONE;
 
 	pclient->ioloop = io_loop_create();
diff -r 1eb0362461f0 -r 89e0cef5b264 tests/plugins/extprograms/execute/execute.svtest
--- a/tests/plugins/extprograms/execute/execute.svtest	Mon May 04 00:26:58 2015 +0200
+++ b/tests/plugins/extprograms/execute/execute.svtest	Tue May 05 10:41:45 2015 +0200
@@ -23,6 +23,20 @@
 }
 
 test_result_reset;
+test "Execute - i/-" {
+	execute :input "FROP" "frame";
+}
+
+test_result_reset;
+test "Execute - -/o" {
+	execute :output "out" "frame";
+
+	if not string "${out}" "FRAMED {  }" {
+		test_fail "wrong string returned: ${out}";
+	}
+}
+
+test_result_reset;
 test "Execute - i/o" {
 	execute :input "FROP" :output "out" "frame";
 


More information about the dovecot-cvs mailing list