From 645cf7d8fc25615fd6d2cb027fad8f3dadffb09d Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Wed, 14 May 2025 10:34:46 +0200 Subject: Revert "w32: On socket nonce mismatch close the socket." -- The commit was entirely bogus because the check_nonce function closes the socket itself if it returns with true. Thus closing the socket by the caller in the true case was bogus. The more likely cause for the hangs on Windows are in scdaemon: * scd: Fix posssible lockup on Windows due to a lost select result. [rGa7ec3792c5] GnuPG-bug-id: 7434 Fixes-commit: 73f6c2dd4d3e5b58faf69821726988ae984fad89. --- agent/command.c | 2 +- agent/gpg-agent.c | 20 +++++++------------- dirmngr/dirmngr.c | 3 +-- kbx/keyboxd.c | 5 ++--- 4 files changed, 11 insertions(+), 19 deletions(-) diff --git a/agent/command.c b/agent/command.c index ff018dde7..88c5576fb 100644 --- a/agent/command.c +++ b/agent/command.c @@ -4400,7 +4400,7 @@ register_commands (assuan_context_t ctx) /* Startup the server. If LISTEN_FD and FD is given as -1, this is a - simple pipe server, otherwise it is a regular server. CTRL is the + simple piper server, otherwise it is a regular server. CTRL is the control structure for this connection; it has only the basic initialization. */ void diff --git a/agent/gpg-agent.c b/agent/gpg-agent.c index 5b1a124e0..ae1295977 100644 --- a/agent/gpg-agent.c +++ b/agent/gpg-agent.c @@ -2877,9 +2877,8 @@ start_connection_thread_std (void *arg) if (check_nonce (ctrl, &socket_nonce)) { - log_error ("handler 0x%lx for fd %d FAILED nonce check\n", - (unsigned long) npth_self(), FD_DBG (ctrl->thread_startup.fd)); - assuan_sock_close (ctrl->thread_startup.fd); + log_error ("handler 0x%lx nonce check FAILED\n", + (unsigned long) npth_self()); return NULL; } @@ -2895,9 +2894,8 @@ start_connection_thread_extra (void *arg) if (check_nonce (ctrl, &socket_nonce_extra)) { - log_error ("handler 0x%lx for fd %d FAILED nonce check\n", - (unsigned long) npth_self(), FD_DBG (ctrl->thread_startup.fd)); - assuan_sock_close (ctrl->thread_startup.fd); + log_error ("handler 0x%lx nonce check FAILED\n", + (unsigned long) npth_self()); return NULL; } @@ -2914,9 +2912,8 @@ start_connection_thread_browser (void *arg) if (check_nonce (ctrl, &socket_nonce_browser)) { - log_error ("handler 0x%lx for fd %d FAILED nonce check\n", - (unsigned long) npth_self(), FD_DBG (ctrl->thread_startup.fd)); - assuan_sock_close (ctrl->thread_startup.fd); + log_error ("handler 0x%lx nonce check FAILED\n", + (unsigned long) npth_self()); return NULL; } @@ -2932,10 +2929,7 @@ start_connection_thread_ssh (void *arg) ctrl_t ctrl = arg; if (check_nonce (ctrl, &socket_nonce_ssh)) - { - assuan_sock_close (ctrl->thread_startup.fd); - return NULL; - } + return NULL; active_connections++; agent_init_default_ctrl (ctrl); diff --git a/dirmngr/dirmngr.c b/dirmngr/dirmngr.c index 492171aac..08f313879 100644 --- a/dirmngr/dirmngr.c +++ b/dirmngr/dirmngr.c @@ -2272,8 +2272,7 @@ start_connection_thread (void *arg) if (check_nonce (fd, &socket_nonce)) { - log_error ("handler for fd %d FAILED nonce check\n", FD_DBG (fd)); - assuan_sock_close (fd); + log_error ("handler nonce check FAILED\n"); return NULL; } diff --git a/kbx/keyboxd.c b/kbx/keyboxd.c index 28e292e10..197f01c74 100644 --- a/kbx/keyboxd.c +++ b/kbx/keyboxd.c @@ -1448,9 +1448,8 @@ start_connection_thread (void *arg) if (check_nonce (ctrl, &socket_nonce)) { - log_error ("handler 0x%lx for fd %d FAILED nonce check\n", - (unsigned long) npth_self(), FD_DBG (ctrl->thread_startup.fd)); - assuan_sock_close (ctrl->thread_startup.fd); + log_error ("handler 0x%lx nonce check FAILED\n", + (unsigned long) npth_self()); return NULL; } -- cgit v1.2.3