aboutsummaryrefslogtreecommitdiffstats
path: root/src/assuan-socket-server.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2007-10-02 08:44:21 +0000
committerWerner Koch <[email protected]>2007-10-02 08:44:21 +0000
commit28f7b6e0413097e91d9f28da028064d1ba9071eb (patch)
tree0bb5bd56293ab5f3a7548cece238c35696d47513 /src/assuan-socket-server.c
parentAdd socket wrapper API. (diff)
downloadlibassuan-28f7b6e0413097e91d9f28da028064d1ba9071eb.tar.gz
libassuan-28f7b6e0413097e91d9f28da028064d1ba9071eb.zip
Add new API assuan_set_sock_nonce.
Fixed a blocking problem on Windows.
Diffstat (limited to 'src/assuan-socket-server.c')
-rw-r--r--src/assuan-socket-server.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/assuan-socket-server.c b/src/assuan-socket-server.c
index d346f66..b754b81 100644
--- a/src/assuan-socket-server.c
+++ b/src/assuan-socket-server.c
@@ -1,5 +1,5 @@
/* assuan-socket-server.c - Assuan socket based server
- * Copyright (C) 2002 Free Software Foundation, Inc.
+ * Copyright (C) 2002, 2007 Free Software Foundation, Inc.
*
* This file is part of Assuan.
*
@@ -98,6 +98,12 @@ accept_connection (assuan_context_t ctx)
ctx->os_errno = errno;
return _assuan_error (ASSUAN_Accept_Failed);
}
+ if (_assuan_sock_check_nonce (fd, &ctx->listen_nonce))
+ {
+ _assuan_close (fd);
+ ctx->os_errno = EACCES;
+ return _assuan_error (ASSUAN_Accept_Failed);
+ }
ctx->connected_fd = fd;
return accept_connection_bottom (ctx);
@@ -190,3 +196,14 @@ assuan_init_socket_server_ext (assuan_context_t *r_ctx, assuan_fd_t fd,
*r_ctx = ctx;
return rc;
}
+
+
+/* Save a copy of NONCE in context CTX. This should be used to
+ register the server's nonce with an context established by
+ assuan_init_socket_server. */
+void
+assuan_set_sock_nonce (assuan_context_t ctx, assuan_sock_nonce_t *nonce)
+{
+ if (ctx && nonce)
+ ctx->listen_nonce = *nonce;
+}