aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/ChangeLog10
-rw-r--r--src/assuan-domain-connect.c22
-rw-r--r--src/assuan-domain-server.c10
3 files changed, 23 insertions, 19 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 2a2355f..eeb286d 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,15 @@
2002-11-24 Neal H. Walfield <[email protected]>
+ * assuan-domain-connect.c (do_finish): Remove.
+ (_assuan_domain_init): Use default handlers where possible.
+ Add an assert and update comments.
+ * assuan-domain-server.c (accept_connection): Remove.
+ (assuan_init_domain_server): Use default handlers where possible.
+ Put the server in pipe mode: it can only be used by a single
+ client.
+
+2002-11-24 Neal H. Walfield <[email protected]>
+
* assuan.h: Add prototype for assuan_domain_connect and
assuan_init_domain_server.
* assuan-defs.h: Include <unistd.h>.
diff --git a/src/assuan-domain-connect.c b/src/assuan-domain-connect.c
index 86f85e2..d50ba1e 100644
--- a/src/assuan-domain-connect.c
+++ b/src/assuan-domain-connect.c
@@ -49,12 +49,6 @@
#define LOGERRORX(a) fputs ((a), stderr)
#endif
-static int
-do_finish (ASSUAN_CONTEXT ctx)
-{
- return 0;
-}
-
static void
do_deinit (ASSUAN_CONTEXT ctx)
{
@@ -69,7 +63,6 @@ do_deinit (ASSUAN_CONTEXT ctx)
free (ctx->domainbuffer);
}
- /* XXX: Do we want to do this? Most likely. */
unlink (ctx->myaddr.sun_path);
}
@@ -191,7 +184,7 @@ domain_reader (ASSUAN_CONTEXT ctx, void *buf, size_t buflen)
return len;
}
-/* Write to the pipe server. */
+/* Write to the domain server. */
static ssize_t
domain_writer (ASSUAN_CONTEXT ctx, const void *buf, size_t buflen)
{
@@ -245,8 +238,11 @@ _assuan_domain_init (ASSUAN_CONTEXT *r_ctx,
/* Save it in case we need it later. */
ctx->pid = peer;
+
+ /* Override the default (NOP) handlers. */
ctx->deinit_handler = do_deinit;
- ctx->finish_handler = do_finish;
+
+ /* Setup the socket. */
fd = socket (PF_LOCAL, SOCK_DGRAM, 0);
if (fd == -1)
@@ -258,8 +254,10 @@ _assuan_domain_init (ASSUAN_CONTEXT *r_ctx,
ctx->inbound.fd = fd;
ctx->outbound.fd = fd;
- ctx->io = &io;
+ /* And the io buffers. */
+
+ ctx->io = &io;
ctx->domainbuffer = 0;
ctx->domainbufferoffset = 0;
ctx->domainbuffersize = 0;
@@ -270,9 +268,11 @@ _assuan_domain_init (ASSUAN_CONTEXT *r_ctx,
for (tries = 0; tries < TMP_MAX; tries ++)
{
char *p;
- /* XXX: L_tmpnam must be shorter than sizeof (sun_path)! */
char buf[L_tmpnam];
+ /* XXX: L_tmpnam must be shorter than sizeof (sun_path)! */
+ assert (L_tmpnam < sizeof (ctx->myaddr.sun_path));
+
p = tmpnam (buf);
if (! p)
{
diff --git a/src/assuan-domain-server.c b/src/assuan-domain-server.c
index 506ee05..b62b140 100644
--- a/src/assuan-domain-server.c
+++ b/src/assuan-domain-server.c
@@ -26,13 +26,6 @@
#include "assuan-defs.h"
-static int
-accept_connection (ASSUAN_CONTEXT ctx)
-{
- /* NOP. */
- return 0;
-}
-
/* Initialize a server. */
AssuanError
assuan_init_domain_server (ASSUAN_CONTEXT *r_ctx,
@@ -46,7 +39,8 @@ assuan_init_domain_server (ASSUAN_CONTEXT *r_ctx,
return err;
(*r_ctx)->is_server = 1;
- (*r_ctx)->accept_handler = accept_connection;
+ /* A domain server can only be used once. */
+ (*r_ctx)->pipe_mode = 1;
return 0;
}