From 28f7b6e0413097e91d9f28da028064d1ba9071eb Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Tue, 2 Oct 2007 08:44:21 +0000 Subject: Add new API assuan_set_sock_nonce. Fixed a blocking problem on Windows. --- src/assuan-socket-server.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'src/assuan-socket-server.c') 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; +} -- cgit v1.2.3