diff options
author | Marcus Brinkmann <[email protected]> | 2002-04-24 01:55:58 +0000 |
---|---|---|
committer | Marcus Brinkmann <[email protected]> | 2002-04-24 01:55:58 +0000 |
commit | a559c32a55e3077ee42f82d8794e6383adbb1e41 (patch) | |
tree | 0ca7955cbbf3bbf5e60e9b588b93499ab163f0b9 /assuan/assuan-socket-server.c | |
parent | * key.c (gpgme_key_get_ulong_attr): Swapped use of can_encrypt and (diff) | |
download | gpgme-a559c32a55e3077ee42f82d8794e6383adbb1e41.tar.gz gpgme-a559c32a55e3077ee42f82d8794e6383adbb1e41.zip |
Update assuan and jnlib to 20020424 from newpg.
Diffstat (limited to 'assuan/assuan-socket-server.c')
-rw-r--r-- | assuan/assuan-socket-server.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/assuan/assuan-socket-server.c b/assuan/assuan-socket-server.c index 6ad6455e..39dd84a1 100644 --- a/assuan/assuan-socket-server.c +++ b/assuan/assuan-socket-server.c @@ -25,6 +25,9 @@ #include <sys/socket.h> #include <sys/un.h> #include <unistd.h> +#ifdef USE_GNU_PTH +# include <pth.h> +#endif #include "assuan-defs.h" @@ -35,13 +38,28 @@ accept_connection (ASSUAN_CONTEXT ctx) struct sockaddr_un clnt_addr; size_t len = sizeof clnt_addr; + ctx->client_pid = (pid_t)-1; +#ifdef USE_GNU_PTH + fd = pth_accept (ctx->listen_fd, (struct sockaddr*)&clnt_addr, &len ); +#else fd = accept (ctx->listen_fd, (struct sockaddr*)&clnt_addr, &len ); +#endif if (fd == -1) { ctx->os_errno = errno; return ASSUAN_Accept_Failed; } +#ifdef HAVE_SO_PEERCRED + { + struct ucred cr; + int cl = sizeof cr; + + if ( !getsockopt (fd, SOL_SOCKET, SO_PEERCRED, &cr, &cl) ) + ctx->client_pid = cr.pid; + } +#endif + ctx->inbound.fd = fd; ctx->inbound.eof = 0; ctx->inbound.linelen = 0; |