summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2015-11-26 18:16:13 +0100
committerWerner Koch <wk@gnupg.org>2015-11-26 18:16:13 +0100
commit18ca1593c62d62bb72b4e7e14347cd221c187138 (patch)
treecd517fcf06f9dd5dc5d0d6d15004e03f0f884c8e
parent9f24377f9f19983926233af8b475328bb7fe9e65 (diff)
downloadlibassuan-18ca1593c62d62bb72b4e7e14347cd221c187138.tar.gz
Protect connect system hook against blocking (nPth).
* src/assuan.h.in (ASSUAN_SYSTEM_NPTH_IMPL): Add wrapper for connect. Signed-off-by: Werner Koch <wk@gnupg.org>
-rw-r--r--NEWS3
-rw-r--r--src/assuan.h.in7
2 files changed, 9 insertions, 1 deletions
diff --git a/NEWS b/NEWS
index 786297b..7168207 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,9 @@
Noteworthy changes in version 2.4.2 (unreleased) [C7/A7/R_]
------------------------------------------------
+ * The nPth version of the connect system hook does now wrap the call
+ with npth_unprotec/npth_protect to avoid blocking during a connect.
+
Noteworthy changes in version 2.4.1 (2015-11-23) [C7/A7/R1]
------------------------------------------------
diff --git a/src/assuan.h.in b/src/assuan.h.in
index 67a1c20..da1af25 100644
--- a/src/assuan.h.in
+++ b/src/assuan.h.in
@@ -571,13 +571,18 @@ extern struct assuan_system_hooks _assuan_system_pth;
{ pid_t res; (void) ctx; npth_unprotect(); \
res = __assuan_waitpid (ctx, pid, nowait, status, options); \
npth_protect(); return res; } \
+ static int _assuan_npth_connect (assuan_context_t ctx, int sock, \
+ struct sockaddr *addr, socklen_t len)\
+ { int res; npth_unprotect(); \
+ res = __assuan_connect (ctx, sock, addr, len); \
+ npth_protect(); return res; } \
\
struct assuan_system_hooks _assuan_system_npth = \
{ ASSUAN_SYSTEM_HOOKS_VERSION, _assuan_npth_usleep, __assuan_pipe, \
__assuan_close, _assuan_npth_read, _assuan_npth_write, \
_assuan_npth_recvmsg, _assuan_npth_sendmsg, \
__assuan_spawn, _assuan_npth_waitpid, __assuan_socketpair, \
- __assuan_socket, __assuan_connect }
+ __assuan_socket, _assuan_npth_connect }
extern struct assuan_system_hooks _assuan_system_npth;
#define ASSUAN_SYSTEM_NPTH &_assuan_system_npth