summaryrefslogtreecommitdiff
path: root/src/assuan-socket-connect.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/assuan-socket-connect.c')
-rw-r--r--src/assuan-socket-connect.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/assuan-socket-connect.c b/src/assuan-socket-connect.c
index ac2df5b..21997f0 100644
--- a/src/assuan-socket-connect.c
+++ b/src/assuan-socket-connect.c
@@ -58,12 +58,12 @@ do_finish (assuan_context_t ctx)
{
if (ctx->inbound.fd != ASSUAN_INVALID_FD)
{
- _assuan_close (ctx->inbound.fd);
+ _assuan_close (ctx, ctx->inbound.fd);
ctx->inbound.fd = ASSUAN_INVALID_FD;
}
if (ctx->outbound.fd != ASSUAN_INVALID_FD)
{
- _assuan_close (ctx->outbound.fd);
+ _assuan_close (ctx, ctx->outbound.fd);
ctx->outbound.fd = ASSUAN_INVALID_FD;
}
}
@@ -96,8 +96,6 @@ assuan_socket_connect_ext (assuan_context_t ctx,
const char *name, pid_t server_pid,
unsigned int flags)
{
- static struct assuan_io io = { _assuan_simple_read, _assuan_simple_write,
- NULL, NULL };
gpg_error_t err;
assuan_fd_t fd;
struct sockaddr_un srvr_addr;
@@ -120,7 +118,7 @@ assuan_socket_connect_ext (assuan_context_t ctx,
if (strlen (name)+1 >= sizeof srvr_addr.sun_path)
return _assuan_error (ctx, GPG_ERR_ASS_INV_VALUE);
- fd = _assuan_sock_new (PF_LOCAL, SOCK_STREAM, 0);
+ fd = _assuan_sock_new (ctx, PF_LOCAL, SOCK_STREAM, 0);
if (fd == ASSUAN_INVALID_FD)
{
TRACE1 (ctx, ASSUAN_LOG_SYSIO, "assuan_socket_connect_ext", ctx,
@@ -135,17 +133,20 @@ assuan_socket_connect_ext (assuan_context_t ctx,
srvr_addr.sun_path[sizeof (srvr_addr.sun_path) - 1] = 0;
len = SUN_LEN (&srvr_addr);
- if ( _assuan_sock_connect (fd, (struct sockaddr *) &srvr_addr, len) == -1 )
+ if (_assuan_sock_connect (ctx, fd, (struct sockaddr *) &srvr_addr, len) == -1)
{
TRACE2 (ctx, ASSUAN_LOG_SYSIO, "assuan_socket_connect_ext", ctx,
"can't connect to `%s': %s\n", name, strerror (errno));
/* FIXME: Cleanup */
- _assuan_close (fd);
+ _assuan_close (ctx, fd);
return _assuan_error (ctx, GPG_ERR_ASS_CONNECT_FAILED);
}
- ctx->io = &io;
ctx->engine.release = _assuan_disconnect;
+ ctx->engine.readfnc = _assuan_simple_read;
+ ctx->engine.writefnc = _assuan_simple_write;
+ ctx->engine.sendfd = NULL;
+ ctx->engine.receivefd = NULL;
ctx->deinit_handler = ((flags&1))? _assuan_uds_deinit : do_deinit;
ctx->finish_handler = do_finish;
ctx->inbound.fd = fd;