diff options
author | Marcus Brinkmann <mb@g10code.com> | 2009-11-19 23:57:35 +0000 |
---|---|---|
committer | Marcus Brinkmann <mb@g10code.com> | 2009-11-19 23:57:35 +0000 |
commit | cb53f862ff2a864da822d1c16d3df6a02157608b (patch) | |
tree | 7e2dc047048fe7053ef795f275537f899c986092 /src/assuan-pipe-connect.c | |
parent | 7cceb82f044654adccc7c998c979eca5af0f903b (diff) | |
download | libassuan-cb53f862ff2a864da822d1c16d3df6a02157608b.tar.gz |
2009-11-19 Marcus Brinkmann <marcus@g10code.de>
* Makefile.am (common_sources): Remove assuan-connect.c and add
client.c.
* client.c, server.c: New file.
* assuan-defs.h (_assuan_disconnect): Remove.
(struct assuan_context_s): Remove members deinit_handler.
(_assuan_client_release, _assuan_client_finish)
(_assuan_server_finish, _assuan_server_release): New.
* assuan-socket-server.c (accept_connection_bottom): Use
ASSUAN_INVALID_PID, not -1.
(finish_connection, deinit_socket_server): Remove.
(assuan_init_socket_server): Use _assuan_server_release.
* assuan-socket-connect.c (do_finish, do_deinit): Remove.
(assuan_socket_connect): Use _assuan_client_release.
* assuan-pipe-connect.c (do_finish, do_deinit): Remove.
(pipe_connect): Update deinitialization.
(socketpair_connect): Here as well.
* context.c (assuan_get_pid): New from ...
* assuan-connect.c (assuan_get_pid): ... here. Remove this file.
* assuan-pipe-server.c (_assuan_deinit_server, accept_connection)
(deinit_pipe_server, finish_connection): Remove unused function.
* assuan-listen.c (assuan_accept): Check CTX->accept_handler
before calling. Initialize RC. Do not call finish handler for
pipe server.
* assuan-uds.c (_assuan_uds_deinit): Do not call finish handler.
Diffstat (limited to 'src/assuan-pipe-connect.c')
-rw-r--r-- | src/assuan-pipe-connect.c | 41 |
1 files changed, 5 insertions, 36 deletions
diff --git a/src/assuan-pipe-connect.c b/src/assuan-pipe-connect.c index 9e214a8..74f85f2 100644 --- a/src/assuan-pipe-connect.c +++ b/src/assuan-pipe-connect.c @@ -84,36 +84,6 @@ fix_signals (void) } -static void -do_finish (assuan_context_t ctx) -{ - if (ctx->inbound.fd != ASSUAN_INVALID_FD) - { - _assuan_close (ctx, ctx->inbound.fd); - if (ctx->inbound.fd == ctx->outbound.fd) - ctx->outbound.fd = ASSUAN_INVALID_FD; - ctx->inbound.fd = ASSUAN_INVALID_FD; - } - if (ctx->outbound.fd != ASSUAN_INVALID_FD) - { - _assuan_close (ctx, ctx->outbound.fd); - ctx->outbound.fd = ASSUAN_INVALID_FD; - } - if (ctx->pid != ASSUAN_INVALID_PID && ctx->pid) - { - _assuan_waitpid (ctx, ctx->pid, ctx->flags.no_waitpid, NULL, 0); - ctx->pid = ASSUAN_INVALID_PID; - } -} - - -static void -do_deinit (assuan_context_t ctx) -{ - do_finish (ctx); -} - - /* Helper for pipe_connect. */ static gpg_error_t initial_handshake (assuan_context_t ctx) @@ -220,16 +190,15 @@ pipe_connect (assuan_context_t ctx, _assuan_close (ctx, rp[1]); _assuan_close (ctx, wp[0]); - ctx->engine.release = _assuan_disconnect; + ctx->engine.release = _assuan_client_release; ctx->engine.readfnc = _assuan_simple_read; ctx->engine.writefnc = _assuan_simple_write; ctx->engine.sendfd = NULL; ctx->engine.receivefd = NULL; + ctx->finish_handler = _assuan_client_finish; ctx->pipe_mode = 1; ctx->inbound.fd = rp[0]; /* Our inbound is read end of read pipe. */ ctx->outbound.fd = wp[1]; /* Our outbound is write end of write pipe. */ - ctx->deinit_handler = do_deinit; - ctx->finish_handler = do_finish; ctx->pid = pid; rc = initial_handshake (ctx); @@ -370,11 +339,11 @@ socketpair_connect (assuan_context_t ctx, _assuan_close (ctx, fds[1]); + ctx->engine.release = _assuan_client_release; + ctx->finish_handler = _assuan_client_finish; ctx->pipe_mode = 1; ctx->inbound.fd = fds[0]; ctx->outbound.fd = fds[0]; - ctx->deinit_handler = _assuan_uds_deinit; - ctx->finish_handler = do_finish; _assuan_init_uds_io (ctx); err = initial_handshake (ctx); @@ -424,7 +393,7 @@ assuan_pipe_connect (assuan_context_t ctx, TRACE2 (ctx, ASSUAN_LOG_CTX, "assuan_pipe_connect_ext", ctx, "name=%s,flags=0x%x", name ? name : "(null)", flags); - if ((flags & 1)) + if (flags & ASSUAN_PIPE_CONNECT_FDPASSING) { #ifdef HAVE_W32_SYSTEM return _assuan_error (ctx, GPG_ERR_NOT_IMPLEMENTED); |