diff options
author | NIIBE Yutaka <gniibe@fsij.org> | 2022-10-12 12:18:54 +0900 |
---|---|---|
committer | NIIBE Yutaka <gniibe@fsij.org> | 2022-10-12 12:18:54 +0900 |
commit | 017d2a33d57e45d6f24740f1a7db91eff918803b (patch) | |
tree | d2a21310f93da85993295be65d98684fe87ee5d9 | |
parent | 29950e3387ecdaadbd61727e74abc3e79e575852 (diff) | |
download | libassuan-017d2a33d57e45d6f24740f1a7db91eff918803b.tar.gz |
experiment: sendfd/recvfd on Windows, part 2/N.
* src/assuan-defs.h (w32_fdpass_send): New.
* src/assuan-socket-connect.c (_assuan_connect_finalize)
[HAVE_W32_SYSTEM]: Use w32_fdpass_send.
* src/system-w32.c (w32_fdpass_send): New.
--
GnuPG-bug-id: 6236
Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
-rw-r--r-- | src/assuan-defs.h | 1 | ||||
-rw-r--r-- | src/assuan-socket-connect.c | 4 | ||||
-rw-r--r-- | src/system-w32.c | 15 |
3 files changed, 20 insertions, 0 deletions
diff --git a/src/assuan-defs.h b/src/assuan-defs.h index 47ff4ef..de2a6d4 100644 --- a/src/assuan-defs.h +++ b/src/assuan-defs.h @@ -327,6 +327,7 @@ int _assuan_error_is_eagain (assuan_context_t ctx, gpg_error_t err); #ifdef HAVE_W32_SYSTEM char *_assuan_w32_strerror (assuan_context_t ctx, int ec); +gpg_error_t w32_fdpass_send (assuan_context_t ctx, assuan_fd_t fd); #endif /*HAVE_W32_SYSTEM*/ diff --git a/src/assuan-socket-connect.c b/src/assuan-socket-connect.c index 019a41c..d7adc31 100644 --- a/src/assuan-socket-connect.c +++ b/src/assuan-socket-connect.c @@ -115,8 +115,12 @@ _assuan_connect_finalize (assuan_context_t ctx, assuan_fd_t fd, ctx->max_accepts = -1; ctx->flags.is_socket = 1; +#ifdef HAVE_W32_SYSTEM + ctx->engine.sendfd = w32_fdpass_send; +#else if (flags & ASSUAN_SOCKET_CONNECT_FDPASSING) _assuan_init_uds_io (ctx); +#endif /* initial handshake */ { diff --git a/src/system-w32.c b/src/system-w32.c index 87b0f9e..9694481 100644 --- a/src/system-w32.c +++ b/src/system-w32.c @@ -167,6 +167,21 @@ __assuan_close (assuan_context_t ctx, assuan_fd_t fd) +gpg_error_t +w32_fdpass_send (assuan_context_t ctx, assuan_fd_t fd) +{ + char fdpass_msg[256]; + size_t msglen; + int res; + + /* not yet implemented. */ + (void)fd; + msglen = 6; + strcpy (fdpass_msg, "hello!"); + res = send (HANDLE2SOCKET (ctx->outbound.fd), fdpass_msg, msglen, MSG_OOB); + return 0; +} + static int process_fdpass_msg (const char *fdpass_msg, size_t msglen, assuan_fd_t *r_fd) { |