aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--agent/gpg-agent.c12
-rw-r--r--common/asshelp.c15
-rw-r--r--common/asshelp.h2
-rw-r--r--dirmngr/dirmngr.c5
-rw-r--r--kbx/keyboxd.c8
-rw-r--r--scd/scdaemon.c9
-rw-r--r--tpm2d/tpm2daemon.c9
7 files changed, 43 insertions, 17 deletions
diff --git a/agent/gpg-agent.c b/agent/gpg-agent.c
index 83711b59a..ae1295977 100644
--- a/agent/gpg-agent.c
+++ b/agent/gpg-agent.c
@@ -2329,18 +2329,12 @@ create_server_socket (char *name, int primary, int cygwin,
log_error (_("error getting nonce for the socket\n"));
if (rc == -1)
{
- int w32err = 0;
-
- if (assuan_sock_get_flag (fd, "w32_error", &w32err))
- w32err = -1; /* Old Libassuan or not Windows. */
-
rc = gpg_error_from_syserror ();
+ log_libassuan_system_error (fd);
/* We use gpg_strerror here because it allows us to get strings
for some W32 socket error codes. */
log_error (_("error binding socket to '%s': %s\n"),
unaddr->sun_path, gpg_strerror (rc));
- if (w32err != -1)
- log_info ("system error code: %d (0x%x)\n", w32err, w32err);
assuan_sock_close (fd);
*name = 0; /* Inhibit removal of the socket by cleanup(). */
@@ -3309,8 +3303,10 @@ handle_connections (gnupg_fd_t listen_fd,
(struct sockaddr *)&paddr, &plen);
if (fd == GNUPG_INVALID_FD)
{
+ gpg_error_t myerr = gpg_error_from_syserror ();
+ log_libassuan_system_error (listentbl[idx].l_fd);
log_error ("accept failed for %s: %s\n",
- listentbl[idx].name, strerror (errno));
+ listentbl[idx].name, gpg_strerror (myerr));
}
else if ( !(ctrl = xtrycalloc (1, sizeof *ctrl)))
{
diff --git a/common/asshelp.c b/common/asshelp.c
index 6706154cd..0152d1243 100644
--- a/common/asshelp.c
+++ b/common/asshelp.c
@@ -128,6 +128,21 @@ set_libassuan_log_cats (unsigned int newcats)
}
+/* Get the last Windows error from an Assuan socket function and print
+ * the raw error code using log_info. */
+void
+log_libassuan_system_error (assuan_fd_t fd)
+{
+ int w32err = 0;
+
+ if (assuan_sock_get_flag (fd, "w32_error", &w32err))
+ w32err = -1; /* Old Libassuan or not Windows. */
+
+ if (w32err != -1)
+ log_info ("system error code: %d (0x%x)\n", w32err, w32err);
+}
+
+
static gpg_error_t
send_one_option (assuan_context_t ctx, gpg_err_source_t errsource,
diff --git a/common/asshelp.h b/common/asshelp.h
index bca50759d..cde6e226f 100644
--- a/common/asshelp.h
+++ b/common/asshelp.h
@@ -46,6 +46,8 @@ void setup_libassuan_logging (unsigned int *debug_var_address,
const char *msg));
void set_libassuan_log_cats (unsigned int newcats);
+void log_libassuan_system_error (assuan_fd_t fd);
+
gpg_error_t
send_pinentry_environment (assuan_context_t ctx,
diff --git a/dirmngr/dirmngr.c b/dirmngr/dirmngr.c
index e9709d766..cdad4f921 100644
--- a/dirmngr/dirmngr.c
+++ b/dirmngr/dirmngr.c
@@ -1459,6 +1459,7 @@ main (int argc, char **argv)
log_error (_("error getting nonce for the socket\n"));
if (rc == -1)
{
+ log_libassuan_system_error (fd);
log_error (_("error binding socket to '%s': %s\n"),
serv_addr.sun_path,
gpg_strerror (gpg_error_from_syserror ()));
@@ -2484,7 +2485,9 @@ handle_connections (assuan_fd_t listen_fd)
(struct sockaddr *)&paddr, &plen);
if (fd == GNUPG_INVALID_FD)
{
- log_error ("accept failed: %s\n", strerror (errno));
+ gpg_error_t myerr = gpg_error_from_syserror ();
+ log_libassuan_system_error (listen_fd);
+ log_error ("accept failed: %s\n", gpg_strerror (myerr));
}
else
{
diff --git a/kbx/keyboxd.c b/kbx/keyboxd.c
index 042ed20b5..197f01c74 100644
--- a/kbx/keyboxd.c
+++ b/kbx/keyboxd.c
@@ -1202,8 +1202,10 @@ create_server_socket (char *name, int cygwin, assuan_sock_nonce_t *nonce)
{
/* We use gpg_strerror here because it allows us to get strings
for some W32 socket error codes. */
+ gpg_error_t myerr = gpg_error_from_syserror ();
+ log_libassuan_system_error (fd);
log_error (_("error binding socket to '%s': %s\n"),
- unaddr->sun_path, gpg_strerror (gpg_error_from_syserror ()));
+ unaddr->sun_path, gpg_strerror (myerr));
assuan_sock_close (fd);
*name = 0; /* Inhibit removal of the socket by cleanup(). */
@@ -1732,8 +1734,10 @@ handle_connections (gnupg_fd_t listen_fd)
(struct sockaddr *)&paddr, &plen);
if (fd == GNUPG_INVALID_FD)
{
+ gpg_error_t myerr = gpg_error_from_syserror ();
+ log_libassuan_system_error (listentbl[idx].l_fd);
log_error ("accept failed for %s: %s\n",
- listentbl[idx].name, strerror (errno));
+ listentbl[idx].name, gpg_strerror (myerr));
}
else if ( !(ctrl = xtrycalloc (1, sizeof *ctrl)))
{
diff --git a/scd/scdaemon.c b/scd/scdaemon.c
index 5e08a5abd..e7ffc33c9 100644
--- a/scd/scdaemon.c
+++ b/scd/scdaemon.c
@@ -1195,9 +1195,10 @@ create_server_socket (const char *name, char **r_redir_name,
log_error (_("error getting nonce for the socket\n"));
if (rc == -1)
{
+ gpg_error_t myerr = gpg_error_from_syserror ();
+ log_libassuan_system_error (fd);
log_error (_("error binding socket to '%s': %s\n"),
- unaddr->sun_path,
- gpg_strerror (gpg_error_from_syserror ()));
+ unaddr->sun_path, gpg_strerror (myerr));
assuan_sock_close (fd);
scd_exit (2);
}
@@ -1429,7 +1430,9 @@ handle_connections (gnupg_fd_t listen_fd)
(struct sockaddr *)&paddr, &plen);
if (fd == GNUPG_INVALID_FD)
{
- log_error ("accept failed: %s\n", strerror (errno));
+ gpg_error_t myerr = gpg_error_from_syserror ();
+ log_libassuan_system_error (listen_fd);
+ log_error ("accept failed: %s\n", gpg_strerror (myerr));
}
else if ( !(ctrl = xtrycalloc (1, sizeof *ctrl)) )
{
diff --git a/tpm2d/tpm2daemon.c b/tpm2d/tpm2daemon.c
index e25a08748..30e13e594 100644
--- a/tpm2d/tpm2daemon.c
+++ b/tpm2d/tpm2daemon.c
@@ -973,9 +973,10 @@ create_server_socket (const char *name, char **r_redir_name,
log_error (_("error getting nonce for the socket\n"));
if (rc == -1)
{
+ gpg_error_t myerr = gpg_error_from_syserror ();
+ log_libassuan_system_error (fd);
log_error (_("error binding socket to '%s': %s\n"),
- unaddr->sun_path,
- gpg_strerror (gpg_error_from_syserror ()));
+ unaddr->sun_path, gpg_strerror (myerr));
assuan_sock_close (fd);
tpm2d_exit (2);
}
@@ -1240,7 +1241,9 @@ handle_connections (gnupg_fd_t listen_fd)
(struct sockaddr *)&paddr, &plen);
if (fd == GNUPG_INVALID_FD)
{
- log_error ("accept failed: %s\n", strerror (errno));
+ gpg_error_t myerr = gpg_error_from_syserror ();
+ log_libassuan_system_error (listen_fd);
+ log_error ("accept failed: %s\n", gpg_strerror (myerr));
}
else if ( !(ctrl = xtrycalloc (1, sizeof *ctrl)) )
{