From e6e3502240eb4ad5709a216f0fdf5a02ab60739a Mon Sep 17 00:00:00 2001 From: Ben Kibbey Date: Sat, 23 Feb 2013 18:36:07 -0500 Subject: [PATCH] Fix (still untested) TLS timeouts when using SO_SNDLOWAT. OpenBSD gave warnings that may fix it. --- src/status.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/status.c b/src/status.c index 220bc1d3..4667a11f 100644 --- a/src/status.c +++ b/src/status.c @@ -137,9 +137,9 @@ send_status (assuan_context_t ctx, status_msg_t which, const char *fmt, ...) if (1) { int sndbuf; - socklen_t len; + socklen_t len = sizeof(int); - if (getsockopt (client->thd->fd, SOCK_STREAM, SO_SNDBUF, &sndbuf, + if (getsockopt (client->thd->fd, SOL_SOCKET, SO_SNDBUF, &sndbuf, &len) == -1) log_write ("%s(%i): getsockopt: %s", __FUNCTION__, __LINE__, pwmd_strerror (gpg_error_from_syserror ())); @@ -147,14 +147,16 @@ send_status (assuan_context_t ctx, status_msg_t which, const char *fmt, ...) { int lowat; - if (getsockopt (client->thd->fd, SOCK_STREAM, SO_SNDLOWAT, + len = sizeof(int); + if (getsockopt (client->thd->fd, SOL_SOCKET, SO_SNDLOWAT, &lowat, &len) == -1) log_write ("%s(%i): getsockopt: %s", __FUNCTION__, __LINE__, pwmd_strerror (gpg_error_from_syserror ())); else { - if (setsockopt (client->thd->fd, SOCK_STREAM, SO_SNDLOWAT, - &sndbuf, sizeof(int)) == -1) + len = sizeof(int); + if (setsockopt (client->thd->fd, SOL_SOCKET, SO_SNDLOWAT, + &sndbuf, len) == -1) log_write ("%s(%i): setsockopt: %s", __FUNCTION__, __LINE__, pwmd_strerror (gpg_error_from_syserror ())); @@ -168,8 +170,9 @@ send_status (assuan_context_t ctx, status_msg_t which, const char *fmt, ...) FD_ZERO (&wfds); FD_SET (client->thd->fd, &wfds); n = select (client->thd->fd + 1, NULL, &wfds, NULL, &tv); + len = sizeof(int); if (setsockopt (client->thd->fd, SOL_SOCKET, SO_SNDLOWAT, - &lowat, sizeof(int)) == -1) + &lowat, len) == -1) log_write ("%s(%i): setsockopt: %s", __FUNCTION__, __LINE__, pwmd_strerror (gpg_error_from_syserror ())); -- 2.11.4.GIT