summaryrefslogtreecommitdiffstats
path: root/src/openvpn
diff options
context:
space:
mode:
authorDavid Sommerseth <davids@redhat.com>2014-09-05 14:26:32 +0200
committerDavid Sommerseth <davids@redhat.com>2014-09-09 19:17:39 +0200
commitd886d468849051af525bb8ff1b9080f6c934e3ab (patch)
treefe8fbfdbde76ce52996e6bb6e959f6739ef95032 /src/openvpn
parentba79c71d1255651bfcb8570519b4033c763d47d3 (diff)
downloadopenvpn-d886d468849051af525bb8ff1b9080f6c934e3ab.tar.gz
openvpn-d886d468849051af525bb8ff1b9080f6c934e3ab.tar.xz
openvpn-d886d468849051af525bb8ff1b9080f6c934e3ab.zip
Don't let openvpn_popen() keep zombies around
Commit 9449e6a9eba30c9ed054f57d630a88c9f087080f introduced the openvpn_popen() function to support retrieving passwords via systemd. It was discovered that the child processes openvpn fork()ed would be lingering around until openvpn stopped. This was due to the lack of a wait() call. This patch also cleans up a few minor white-space issues in the same code segment. [v2 proper initialisation of status variable] Signed-off-by: David Sommerseth <davids@redhat.com> Acked-by: Gert Doering <gert@greenie.muc.de> Message-Id: 1409930731-15263-2-git-send-email-davids@redhat.com URL: http://article.gmane.org/gmane.network.openvpn.devel/9021
Diffstat (limited to 'src/openvpn')
-rw-r--r--src/openvpn/misc.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/openvpn/misc.c b/src/openvpn/misc.c
index 63b4c1c..19bbef7 100644
--- a/src/openvpn/misc.c
+++ b/src/openvpn/misc.c
@@ -376,8 +376,11 @@ openvpn_popen (const struct argv *a, const struct env_set *es)
}
else /* parent side */
{
- ret=pipe_stdout[0];
- close (pipe_stdout[1]);
+ int status = 0;
+
+ waitpid(pid, &status, 0);
+ ret = pipe_stdout[0];
+ close (pipe_stdout[1]);
}
}
else {