aboutsummaryrefslogtreecommitdiffstats
path: root/src/system-w32.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* w32: Enable "w32_error" for assuan_sock_get_flag.NIIBE Yutaka2024-12-161-3/+3
| | | | | | | | | | | | | | | | | * src/assuan-defs.h (struct assuan_context_s): Have w32_error field. (_assuan_sock_wsa2errno): Supply CTX argument. * src/assuan-socket.c (_assuan_sock_wsa2errno): Put ERR to the field in CTX argument. (_assuan_sock_get_flag): Support "w32_error" string. (_assuan_sock_accept, _assuan_sock_bind): Follow the change. * src/assuan-uds.c (uds_reader, uds_writer): Likewise. * src/system-w32.c (__assuan_close, __assuan_socket): Likewise. (__assuan_connect): Likewise. -- GnuPG-bug-id: 7456 Signed-off-by: NIIBE Yutaka <[email protected]>
* Add new pipe functions to control its server process.NIIBE Yutaka2023-07-241-2/+24
| | | | | | | | | | | | | | | | * src/assuan-pipe-connect.c (assuan_pipe_wait_server_termination) (assuan_pipe_kill_server): New. * src/assuan.h.in: Add new functions. * src/libassuan.def: Add symbols for those functions. * src/libassuan.vers: Likewise. * src/system-posix.c (__assuan_waitpid): Extend the semantics for OPTIONS. * src/system-w32.c (__assuan_waitpid): Likewise. -- GnuPG-bug-id: T6487 Signed-off-by: NIIBE Yutaka <[email protected]>
* w32: Fix closing for non-socket HANDLE.NIIBE Yutaka2023-06-061-9/+4
| | | | | | | | | | | | * src/system-w32.c (__assuan_close): Revert the change. -- There are use cases where closing output_fd / input_fd which may be not socket. Fixes-commit: c93eb901e58d5b31294c2d452659b5150d95ec59 Signed-off-by: NIIBE Yutaka <[email protected]>
* w32: Fix error return for sending fd.NIIBE Yutaka2023-05-311-6/+16
| | | | | | | | * src/system-w32.c (get_file_handle): Have a CTX to compose an error. (w32_fdpass_send): Check PROCESS_ID. Compose an error with _assuan_error. Signed-off-by: NIIBE Yutaka <[email protected]>
* w32: Cleaner semantics for PID and Process handle.NIIBE Yutaka2023-05-171-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | * src/assuan-defs.h (struct assuan_context_s): Introduce SERVER_PROC member. Clarify the use of PROCESS_ID and PID. Introduce assuan_pid_t for internal use of process id or handle. * src/assuan.h.in: Follow the change. * src/assuan.c (assuan_new_ext): Likewise. * src/client.c (_assuan_client_finish): Likewise. * src/assuan-pipe-connect.c (pipe_connect): Likewise. * src/server.c (_assuan_server_finish): Likewise. * src/system-posix.c: Likewise. * src/system-w32.c: Likewise. * src/system.c: Likewise. * src/assuan-pipe-server.c (assuan_init_pipe_server) [HAVE_W32_SYSTEM]: Exclude the use of _assuan_pipe_connect_pid. * src/assuan-socket-server.c (accept_connection_bottom) [HAVE_W32_SYSTEM]: Exclude the use of the member peercred.pid. * src/assuan-socket.c (_assuan_sock_check_nonce): Support Cygwin Unix domain emulation for having valid client process ID. * src/context.c (assuan_get_pid): Clarify the use cases. * src/posix-types.inc.h, src/w32-types.inc.h: Introduce assuan_pid_t. -- GnuPG-bug-id: 6487 Signed-off-by: NIIBE Yutaka <[email protected]>
* w32: Fix the semantics of sending FD, it's Windows HANDLE.NIIBE Yutaka2023-05-101-14/+7
| | | | | | | | | | | | * src/assuan-handler.c (w32_handler_sendfd): It's Windows HANDLE. * src/system-w32.c (get_file_handle, w32_fdpass_send): Likewise. * tests/fdpassing.c (cmd_echo): Received FD is Windows HANDLE. (client): Use Windows HANDLE for assuan_sendfd. -- GnuPG-bug-id: 6236 Signed-off-by: NIIBE Yutaka <[email protected]>
* w32: Fix confusion between process ID and process HANDLE.NIIBE Yutaka2022-11-151-3/+3
| | | | | | | | | | | | | | | * src/assuan-defs.h (struct assuan_context_s): Rename to process_id. * src/assuan-pipe-connect.c (initial_handshake): Fix variable name and access to the member field. * src/assuan-socket-connect.c (_assuan_connect_finalize): Likewise. * src/system-w32.c (get_file_handle): Likewise. (w32_fdpass_send): Likewise. -- Fixes-commit: ba84b780df973ba7ca7f7c51fbd1b6d1a69b8c01 GnuPG-bug-id: 6236 Signed-off-by: NIIBE Yutaka <[email protected]>
* w32: Have PROCESS_HANDLE in struct assuan_context_s.NIIBE Yutaka2022-11-091-1/+1
| | | | | | | | | | | | | | | | | | * src/assuan-defs.h (struct assuan_context_s): Add process_handle field. It's "int" instead of DWORD, because of getpid function. * src/assuan-pipe-connect.c (initial_handshake): Set ->process_handle, not override ->pid. * src/assuan-socket-connect.c (assuan_connect_finalize): Likewise. * src/system-w32.c (w32_fdpass_send): Use ->process_handle. -- In the client code, ctx->pid (by the function assuan_get_pid) may be used to watch the finish of server process. Thus, it should not be overridden. See: gnupg/agent/call-daemon.c. GnuPG-bug-id: 6236 Signed-off-by: NIIBE Yutaka <[email protected]>
* w32: Support sendfd/recvfd through pipe connection.NIIBE Yutaka2022-11-041-0/+77
| | | | | | | | | | | | | | | | | * src/assuan-defs.h (w32_fdpass_send, w32_fdpass_recv): New. * src/assuan-pipe-connect.c [HAVE_W32_SYSTEM] (pipe_connect): Set w32_fdpass_send. [!HAVE_W32_SYSTEM] (assuan_pipe_connect): Use socketpair_connect. * src/assuan-pipe-server.c [HAVE_W32_SYSTEM] (assuan_init_pipe_server): Set w32_fdpass_recv. * src/system-w32.c (get_file_handle): New. (w32_fdpass_send): New, using "SENDFD" internal command. (w32_fdpass_recv): New, using the result of "SENDFD" internal command. -- GnuPG-bug-id: 6236 Signed-off-by: NIIBE Yutaka <[email protected]>
* w32: Store a flag if it's socket or not in Assuan CTX.NIIBE Yutaka2022-04-061-34/+11
| | | | | | | | | | | | | | * src/assuan-defs.h (struct assuan_context_s): Add is_socket flag. * src/assuan-socket.c (assuan_sock_init): Set the flag. * src/assuan-socket-connect.c (_assuan_connect_finalize): Likewise. * src/assuan-socket-server.c (assuan_init_socket_server): Likewise. * src/system-w32.c (__assuan_close): Use the flag. (is_socket): Remove. (__assuan_read, __assuan_write): Use the flag. -- Signed-off-by: NIIBE Yutaka <[email protected]>
* Fix API break.NIIBE Yutaka2022-04-051-10/+0
| | | | | | | | | | | | | * src/posix-fd-t.inc.h (assuan_fd_from_posix_fd): Revert. * src/w32-fd-t.inc.h (assuan_fd_from_posix_fd): Revert. * src/system-w32.c (assuan_fd_from_posix_fd): Revert. -- Note that assuan_fd_from_posix_fd is exposed inline function. Fixes-commit: 28a40a298661877e1bbeb3eb9ac58a85bdd85b02 Signed-off-by: NIIBE Yutaka <[email protected]>
* Take advantage of gpgrt_get_syscall_clamp function.NIIBE Yutaka2022-04-051-1/+1
| | | | | | | | | | | | | | | | | | | | | | | * src/assuan-defs.h (_assuan_pre_syscall, _assuan_post_syscall): New. * src/assuan.c (_assuan_pre_syscall, _assuan_post_syscall): New. (pre_syscall_func, post_syscall_func): New. (_assuan_syscall_func_initialized): New. (assuan_new_ext): Call gpgrt_get_syscall_clamp to get clamp functions. * src/system-posix.c (_assuan_system_hooks): Use version 0. * src/system-w32.c (_assuan_system_hooks): Likewise. * src/system.c (_assuan_usleep): Call clamp functions if no hooks. (_assuan_close, _assuan_close_inheritable, _assuan_read): Likewise. (_assuan_write, _assuan_recvmsg, _assuan_sendmsg): Likewise. (_assuan_waitpid, _assuan_connect): Likewise. (_assuan_pipe): Call __assuan_pipe directly if no hooks. (_assuan_spawn): Call __assuan_spawn directly if no hooks. (_assuan_socketpair): Call __assuan_socketpair directly if no hooks. (_assuan_socket): Call __assuan_socket directly if no hooks. -- GnuPG-bug-id: 5914 Signed-off-by: NIIBE Yutaka <[email protected]>
* w32: Fix assuan_socket_connect_fd to be usable.NIIBE Yutaka2022-04-041-0/+10
| | | | | | | | | | | | | | | | | | | | | | * src/assuan.h.in (assuan_socket_connect_fd): Second arg assuan_fd_t. * src/assuan-socket-connect.c (assuan_socket_connect_fd): Second arg should be an object of type SOCKET. * src/posix-fd-t.inc.h (assuan_fd_from_posix_fd): Remove. * src/w32-fd-t.inc.h (assuan_fd_from_posix_fd): Move to... * src/system-w32.c (assuan_fd_from_posix_fd): ... here. -- On Windows, when an application has an already-connected socket, it must be an object of type SOCKET. In this case, it is wrong to use _get_osfhandle. This does not constitute any ABI/API change for POSIX system. This is an API change for Windows, as assuan_fd_t on Windows is pointer type, but it's a fix from non-correctly-usable API. Signed-off-by: NIIBE Yutaka <[email protected]>
* Fix internal socket API to be consistent for SOCKET.NIIBE Yutaka2022-03-311-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/assuan-defs.h (_assuan_socket): Return value has type assuan_fd_t. (_assuan_connect): Second argument has type assuan_fd_t. [HAVE_W64_SYSTEM] (SOCKET2HANDLE): Revert the change before. * src/assuan-socket.c (_assuan_sock_new): No type coercion for _assuan_socket. (socks5_connect): No type coercion for _assuan_connect. (_assuan_sock_connect): Likewise. * src/assuan.h.in (struct assuan_system_hooks): Fix method signature of socket for return value type and of connect for the second argument. (__assuan_socket): Return value has type assuan_fd_t. (__assuan_connect): Second argument has type assuan_fd_t. (ASSUAN_SYSTEM_NPTH_IMPL): Fix for _assuan_npth_connect for its second argument. * src/system-w32.c (__assuan_socket): Return value has type assuan_fd_t. Use SOCKET2HANDLE for type coercion for socket. Use INVALID_SOCKET. (__assuan_connect): Second argument has type assuan_fd_t. Use HANDLE2SOCKET for type coercion for sock. * src/system.c (_assuan_socket): Return value has type assuan_fd_t. (_assuan_connect): Second argument has type assuan_fd_t. -- Note that this change does *NOT* constitute any ABI change, no API change, either. It is fix for internal consistency for socket. The change of SOCKET2HANDLE in the past for HAVE_W64_SYSTEM was done, because of internal use of 'int' which represents the type for socket. Instead of fixing that part of code for 'int', I touched another part to silence warnings. That's not correct fix, but a work around. This time, with the changes, whole parts are now consisitent. Fixes-commit: 6c736325c028647dc3283bf723e2e28199e7f45b Signed-off-by: NIIBE Yutaka <[email protected]>
* Support Unicode when starting servers on Windows.Werner Koch2021-03-091-17/+31
| | | | | | | | | * src/assuan-socket.c (utf8_to_wchar): Rename to (_assuan_utf8_to_wchar): this and give global scope. * src/system-w32.c (__assuan_spawn): Use CreateProcessW. -- GnuPG-bug-id: 4398
* Add an SPDX tag to all core files.Werner Koch2017-11-151-16/+17
| | | | --
* Fix typos found by codespell.Justus Winter2015-12-011-1/+1
| | | | | -- Signed-off-by: Justus Winter <[email protected]>
* w32: Remove I/O delays due to our 100ms delay after an EAGAIN.Werner Koch2014-11-071-0/+37
| | | | | | | * src/system-w32.c (__assuan_read): Retry using select. Map WSAECONNRESET to EPIPE. (__assuan_write): Retry using select. * src/assuan-buffer.c (readline) [W32]: Return EOF instead of EPIPE.
* w32: Fix header inclusion order for newer toolchain.Werner Koch2013-02-221-13/+12
| | | | | | | | * src/system-w32.c: Do not include windows.h here. -- winsock2.h must now be included before windows.h. This is already properly handled by assuan-defs.h.
* Fix npth port file handle use.Marcus Brinkmann2012-01-241-5/+5
| | | | | | | | | * assuan.h.in (ASSUAN_SYSTEM_NPTH_IMPL): Use npth_unprotect and npth_protect with actual assuan functions instead of npth wrappers. * libassuan.def: Add __assuan_read, __assuan_write, __assuan_sendmsg, __assuan_recvmsg, __assuan_waitpid exports. * system-w32.c (__assuan_read, __assuan_write, __assuan_sendmsg, __assuan_recvmsg, __assuan_waitpid): Make non-static.
* Reroute all socket and connect through the nonce implemenation in ↵Marcus Brinkmann2011-02-031-3/+13
| | | | | | | | | | | | | | | | assuan-socket.c. 2011-02-03 Marcus Brinkmann <[email protected]> * assuan-socket.c (_assuan_sock_new): Call _assuan_socket instead of socket. (_assuan_sock_connect): Call _assuan_connect instead of connect. * assuan-socket-connect.c (assuan_socket_connect): Call _assuan_sock_new and _assuan_sock_connect instead of _assuan_socket and assuan_connect. * src/system-w32.c, src/system-w32ce.c (__assuan_socket): Call socket instead of _assuan_sock_new. (__assuan_connect): Call connect instead of _assuan_sock_connect.
* Extend system hooks table by socket and connect functions.Marcus Brinkmann2011-02-021-1/+18
| | | | | | | | | | | | | | | | | | | | | | | | | 2011-02-02 Marcus Brinkmann <[email protected]> * assuan-defs.h (_assuan_socket, _assuan_connect): New prototypes. * assuan.h.in (ASSUAN_SYSTEM_HOOKS_VERSION): Bumped to 2. (struct assuan_system_hooks): Add socket and connect members. (__assuan_socket, __assuan_connect): New prototypes. (_ASSUAN_SYSTEM_PTH_IMPL): Add socket and connect members. * assuan-socket-connect.c (assuan_socket_connect): Call _assuan_socket and _assuan_connect instead _assuan_sock_new and _assuan_sock_connect. (libassuan.def, libassuan.vers): Add __assuan_socket and __assuan_connect. * system.c (_assuan_system_hooks_copy): Initialize destination from system hooks, so we don't get any NULL pointers if there is a version mismatch. Support version 2 of the system hook structure. (_assuan_socket, _assuan_connect): New functions. * system-posix.c (__assuan_socket, __assuan_connect): New functions. (_assuan_system_hooks): Add __assuan_socketm, __assuan_connect. * system-w32.c (__assuan_socket, __assuan_connect): New functions. (_assuan_system_hooks): Add __assuan_socketm, __assuan_connect. * system-w32ce.c (__assuan_socket, __assuan_connect): New functions. (_assuan_system_hooks): Add __assuan_socketm, __assuan_connect.
* More robust detection of socketsWerner Koch2010-04-191-47/+85
|
* Changes for W32CEWerner Koch2010-04-141-1/+2
|
* Changed the implementation of CreatePipe under W32CE.Werner Koch2010-03-221-0/+27
| | | | | Reorganized the source.
* Refactored platform system code.Werner Koch2010-03-161-0/+466