summaryrefslogtreecommitdiff
path: root/src/assuan-pipe-server.c
diff options
context:
space:
mode:
authorNIIBE Yutaka <gniibe@fsij.org>2022-11-07 11:46:35 +0900
committerNIIBE Yutaka <gniibe@fsij.org>2022-11-07 11:46:35 +0900
commita1f480468a3b41f3843833654c0b56c33552519c (patch)
tree4baf51ae7ac5669c2c268868db909f684f3eb805 /src/assuan-pipe-server.c
parent07adf41f0f49233cc4842bad1e6d2fdc9dc431af (diff)
downloadlibassuan-a1f480468a3b41f3843833654c0b56c33552519c.tar.gz
w32: Support fd passing through pipe.
* src/assuan-pipe-connect.c (initial_handshake): Get peer's PID from the initial interaction. * src/assuan-pipe-server.c (assuan_init_pipe_server): Handle the case of FILEDES == NULL on Windows. * tests/Makefile.am [HAVE_W32_SYSTEM] (TESTS): Add fdpassing. * tests/fdpassing.c: Remove including sys/socket.h and sys/wait.h. (cmd_echo): Output to stder, as stdout is /dev/null. (main): Support Windows. -- GnuPG-bug-id: 6236 Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
Diffstat (limited to 'src/assuan-pipe-server.c')
-rw-r--r--src/assuan-pipe-server.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/assuan-pipe-server.c b/src/assuan-pipe-server.c
index 8da54ad..5c960a6 100644
--- a/src/assuan-pipe-server.c
+++ b/src/assuan-pipe-server.c
@@ -82,8 +82,16 @@ assuan_init_pipe_server (assuan_context_t ctx, assuan_fd_t filedes[2])
return TRACE_ERR (rc);
#ifdef HAVE_W32_SYSTEM
- infd = filedes[0];
- outfd = filedes[1];
+ if (filedes)
+ {
+ infd = filedes[0];
+ outfd = filedes[1];
+ }
+ else
+ {
+ infd = assuan_fd_from_posix_fd (0);
+ outfd = assuan_fd_from_posix_fd (1);
+ }
#else
s = getenv ("_assuan_connection_fd");
if (s && *s && is_valid_socket (s))