diff options
author | Marcus Brinkmann <[email protected]> | 2009-11-19 23:57:35 +0000 |
---|---|---|
committer | Marcus Brinkmann <[email protected]> | 2009-11-19 23:57:35 +0000 |
commit | cb53f862ff2a864da822d1c16d3df6a02157608b (patch) | |
tree | 7e2dc047048fe7053ef795f275537f899c986092 /src/assuan-socket-server.c | |
parent | 2009-11-10 Marcus Brinkmann <[email protected]> (diff) | |
download | libassuan-cb53f862ff2a864da822d1c16d3df6a02157608b.tar.gz libassuan-cb53f862ff2a864da822d1c16d3df6a02157608b.zip |
2009-11-19 Marcus Brinkmann <[email protected]>
* 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-socket-server.c')
-rw-r--r-- | src/assuan-socket-server.c | 46 |
1 files changed, 7 insertions, 39 deletions
diff --git a/src/assuan-socket-server.c b/src/assuan-socket-server.c index 2dbfa9f..a4431fa 100644 --- a/src/assuan-socket-server.c +++ b/src/assuan-socket-server.c @@ -61,7 +61,7 @@ accept_connection_bottom (assuan_context_t ctx) /* This overrides any already set PID if the function returns a valid one. */ - if (cr.pid != (pid_t)-1 && cr.pid) + if (cr.pid != ASSUAN_INVALID_PID && cr.pid) ctx->pid = cr.pid; } } @@ -107,37 +107,6 @@ accept_connection (assuan_context_t ctx) } -static void -finish_connection (assuan_context_t ctx) -{ - if (ctx->inbound.fd != ASSUAN_INVALID_FD) - { - _assuan_close (ctx, ctx->inbound.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; - } -} - - -static void -deinit_socket_server (assuan_context_t ctx) -{ - finish_connection (ctx); - - _assuan_inquire_release (ctx); - _assuan_free (ctx, ctx->hello_line); - ctx->hello_line = NULL; - _assuan_free (ctx, ctx->okay_line); - ctx->okay_line = NULL; - _assuan_free (ctx, ctx->cmdtbl); - ctx->cmdtbl = NULL; -} - - /* Flag bits: 0 - use sendmsg/recvmsg to allow descriptor passing 1 - FD has already been accepted. @@ -152,13 +121,13 @@ assuan_init_socket_server (assuan_context_t ctx, assuan_fd_t fd, if (rc) return rc; - ctx->engine.release = deinit_socket_server; + ctx->engine.release = _assuan_server_release; ctx->engine.readfnc = _assuan_simple_read; ctx->engine.writefnc = _assuan_simple_write; ctx->engine.sendfd = NULL; ctx->engine.receivefd = NULL; ctx->is_server = 1; - if (flags & 2) + if (flags & ASSUAN_SOCKET_SERVER_ACCEPTED) ctx->pipe_mode = 1; /* We want a second accept to indicate EOF. */ ctx->input_fd = ASSUAN_INVALID_FD; ctx->output_fd = ASSUAN_INVALID_FD; @@ -166,7 +135,7 @@ assuan_init_socket_server (assuan_context_t ctx, assuan_fd_t fd, ctx->inbound.fd = ASSUAN_INVALID_FD; ctx->outbound.fd = ASSUAN_INVALID_FD; - if ((flags & 2)) + if (flags & ASSUAN_SOCKET_SERVER_ACCEPTED) { ctx->listen_fd = ASSUAN_INVALID_FD; ctx->connected_fd = fd; @@ -176,13 +145,12 @@ assuan_init_socket_server (assuan_context_t ctx, assuan_fd_t fd, ctx->listen_fd = fd; ctx->connected_fd = ASSUAN_INVALID_FD; } - ctx->deinit_handler = (flags & 1)? _assuan_uds_deinit:deinit_socket_server; - ctx->accept_handler = ((flags & 2) + ctx->accept_handler = ((flags & ASSUAN_SOCKET_SERVER_ACCEPTED) ? accept_connection_bottom : accept_connection); - ctx->finish_handler = finish_connection; + ctx->finish_handler = _assuan_server_finish; - if ((flags & 1)) + if (flags & ASSUAN_SOCKET_SERVER_FDPASSING) _assuan_init_uds_io (ctx); rc = _assuan_register_std_commands (ctx); |