diff options
author | Werner Koch <[email protected]> | 2016-11-29 19:15:47 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2016-11-29 19:17:03 +0000 |
commit | 854adc8ae19749e44cb79dfa0c5401f48012b13a (patch) | |
tree | 7c6621e1de3e5f1db9bd76e6a8ae6bc5ff65fd3b /dirmngr/dirmngr.c | |
parent | gpgsm: Allow decryption with a card returning a PKCS#1 stripped key. (diff) | |
download | gnupg-854adc8ae19749e44cb79dfa0c5401f48012b13a.tar.gz gnupg-854adc8ae19749e44cb79dfa0c5401f48012b13a.zip |
agent,dirmngr: Handle corner case in shutdown mode.
* agent/gpg-agent.c (handle_connections): Keep on selecting on the
inotify fd even when a shutdown is pending.
* dirmngr/dirmngr.c (handle_connections): Ditto. Also simplifyy the
use of the HAVE_INOTIFY_INIT cpp conditional.
--
Without that patch we won't notice a removed socket when a shutdown is
pending. This is somewhat related to bug report 2849.
Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'dirmngr/dirmngr.c')
-rw-r--r-- | dirmngr/dirmngr.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/dirmngr/dirmngr.c b/dirmngr/dirmngr.c index f60173b8c..748f30991 100644 --- a/dirmngr/dirmngr.c +++ b/dirmngr/dirmngr.c @@ -1942,9 +1942,7 @@ handle_connections (assuan_fd_t listen_fd) struct timespec curtime; struct timespec timeout; int saved_errno; -#ifdef HAVE_INOTIFY_INIT - int my_inotify_fd; -#endif /*HAVE_INOTIFY_INIT*/ + int my_inotify_fd = -1; npth_attr_init (&tattr); npth_attr_setdetachstate (&tattr, NPTH_CREATE_DETACHED); @@ -1988,14 +1986,12 @@ handle_connections (assuan_fd_t listen_fd) FD_ZERO (&fdset); FD_SET (FD2INT (listen_fd), &fdset); nfd = FD2INT (listen_fd); -#ifdef HAVE_INOTIFY_INIT if (my_inotify_fd != -1) { FD_SET (my_inotify_fd, &fdset); if (my_inotify_fd > nfd) nfd = my_inotify_fd; } -#endif /*HAVE_INOTIFY_INIT*/ npth_clock_gettime (&abstime); abstime.tv_sec += TIMERTICK_INTERVAL; @@ -2012,6 +2008,12 @@ handle_connections (assuan_fd_t listen_fd) /* Do not accept new connections but keep on running the loop to cope with the timer events. */ FD_ZERO (&fdset); + nfd = -1; + if (my_inotify_fd != -1) + { + FD_SET (my_inotify_fd, &fdset); + nfd = my_inotify_fd; + } } /* Take a copy of the fdset. */ |