summaryrefslogtreecommitdiff
path: root/src/assuan-pipe-connect.c
diff options
context:
space:
mode:
authorMarcus Brinkmann <mb@g10code.com>2009-11-19 23:57:35 +0000
committerMarcus Brinkmann <mb@g10code.com>2009-11-19 23:57:35 +0000
commitcb53f862ff2a864da822d1c16d3df6a02157608b (patch)
tree7e2dc047048fe7053ef795f275537f899c986092 /src/assuan-pipe-connect.c
parent7cceb82f044654adccc7c998c979eca5af0f903b (diff)
downloadlibassuan-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.c41
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);