diff --git a/src/iperf_client_api.c b/src/iperf_client_api.c index 4a55cd6d1..976835cb5 100644 --- a/src/iperf_client_api.c +++ b/src/iperf_client_api.c @@ -659,9 +659,13 @@ iperf_run_client(struct iperf_test * test) return 0; cleanup_and_fail: + iperf_errexit(test, "error - %s", iperf_strerror(i_errno)); iperf_client_end(test); - if (test->json_output) - iperf_json_finish(test); + if (test->json_output) { + if (iperf_json_finish(test) < 0) + return -1; // It is o.k. that error will be logged later outside the JSON output since its creation failed + } iflush(test); - return -1; + return 0; // Return 0 and not -1 since all terminating function were done here. + // Also prevents error message logging outside the already closed JSON output. }