agent, dirmngr, scd: npth_init must be after fork.
authorNIIBE Yutaka <gniibe@fsij.org>
Tue, 4 Oct 2016 00:01:13 +0000 (09:01 +0900)
committerNIIBE Yutaka <gniibe@fsij.org>
Tue, 4 Oct 2016 00:01:13 +0000 (09:01 +0900)
commiteda17649f8bd3b8ce7bfc00a3c11cbcae63c845d
tree07b0c81acce42597ce8b856f3b16b4845c8c2eab
parenta43739a2456a38c01704d8a52dca441055e29bc6
agent, dirmngr, scd: npth_init must be after fork.

* agent/gpg-agent.c (thread_init_once, initialize_modules): New.
(main): Make sure no daemonizing-fork call after npth_init, and no npth
calls before npth_init, with care of npth calls by assuan hooks.
* dirmngr/dirmngr.c (thread_init): New.
(main): Make sure npth_init must not be called before daemonizing fork.
* scd/scdaemon.c (main): Likewise.

--

It is simply the best for nPth not to allow the daemonizing fork after
npth_init, because semantics and implementations of forked child process
in a threaded application is a difficult corner case.

GnuPG-bug-id: 1779
Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
agent/gpg-agent.c
dirmngr/dirmngr.c
scd/scdaemon.c