aboutsummaryrefslogtreecommitdiffstats
path: root/src/w32-io.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* w32: Add extra diagnostic about possible missing gpgme-w32spawn.exe.Werner Koch2015-10-281-2/+7
| | | | | | * src/w32-io.c (_gpgme_io_spawn): Add a new diagnostic. Signed-off-by: Werner Koch <[email protected]>
* w32: Fix another memleak on error.Werner Koch2014-04-161-0/+1
| | | | | | | * src/w32-io.c (create_reader): free CTX. -- Found by Hans-Christoph Steiner with cppcheck.
* w32: Fix memleak in an error code paths.Werner Koch2014-04-151-0/+1
| | | | | | | | | * src/w32-io.c (create_writer): Free CTX in cased of bad FD. * src/w32-util.c (_gpgme_mkstemp): Free TMPNAME in case of a failed mkstemp. -- Found by Hans-Christoph Steiner with cppcheck.
* Make use of internal iospawn flags more flexible.Werner Koch2014-04-101-1/+2
| | | | | | | | | | | | | * src/priv-io.h (IOSPAWN_FLAG_DETACHED): New. Renumber the others. * src/w32-io.c (_gpgme_io_spawn): Use DETACHED_PROCESS process only if IOSPAWN_FLAG_DETACHED is given. * src/w32-qt-io.cpp (_gpgme_io_spawn): Ditto. * src/w32-glib-io.c (_gpgme_io_spawn): Ditto. * src/assuan-support.c (my_spawn): Pass IOSPAWN_FLAG_DETACHED flags. * src/dirinfo.c (read_gpgconf_dirs): Ditto. * src/engine-gpg.c (start): Ditto. * src/engine-gpgconf.c (gpgconf_read, gpgconf_write): Ditto. * src/version.c (_gpgme_get_program_version): Ditto.
* w32: Change the way the I/O threads are cleaned up.Werner Koch2013-05-111-90/+73
| | | | | | | | | | | | | | | | | * src/w32-io.c (reader_context_s, create_reader) (writer_context_s, create_writer): Rename STOPPED to CLOSE_EV. (reader, writer): Remove setting of STOPPED. Wait for CLOSE_EV and then release the context. (destroy_reader, destroy_writer): Do not wait but set the CLOSE_EV. (kill_reader, kill_writer): Remove. (_gpgme_io_close): Add code from kill_reader and kill_writer. -- The old code was prone to deadlocks which were actually exhibited at Kleopatra startup. The new code is much more straightforward and easier to understand. The reason for the complex old code was probably due to our former idea to allow re-use of the I/O threads. However we have long given up on this.
* Fix hang in socket closing.Werner Koch2013-05-081-0/+36
| | | | | * src/w32-io.c (destroy_reader): Call shutdown. (reader): Do not print an error in the shutdown case.
* Improve debug output of the I/O reader and writer.Werner Koch2013-05-081-5/+17
| | | | * src/w32-io.c (reader, writer): Also print file_sock.
* Remove all trailing whitespace from source filesWerner Koch2012-09-251-61/+61
| | | | | -- Command used: sed -i 's,[ \t]*$,,' FILE
* Fix socket implementation on Windows.Marcus Brinkmann2011-02-031-1/+1
| | | | | | 2011-02-03 Marcus Brinkmann <[email protected]> * w32-io.c (_gpgme_io_socket): Return fd, not res.
* Fix Windows port (spawn and assuan engine).Marcus Brinkmann2011-02-021-43/+9
| | | | | | | | | | | | | | | | | 2011-02-02 Marcus Brinkmann <[email protected]> * configure.ac (NEED_LIBASSUAN_VERSION): Bump to 2.0.2 for system hooks. src/ 2011-02-02 Marcus Brinkmann <[email protected]> * assuan-support.c (my_socket, my_connect): New functions. (_gpgme_assuan_system_hooks): Add my_Socket, my_connect. * priv-io.h (_gpgme_io_socket): New prototype. * w32-io.c (pid_to_handle, handle_to_oid, fd_to_handle): Remove macros. (is_socket): Remove function. (_gpgme_io_spawn) [HAVE_W32CE_SYSTEM]: Remove some dead code. (_gpgme_io_spawn): Translate handles before DuplicateHandle them.
* 2010-11-23 Marcus Brinkmann <[email protected]>Marcus Brinkmann2010-11-231-0/+12
| | | | | | | * w32-io.c (create_reader, create_writer): Use small stack size on Windows CE.
* More include guards.Werner Koch2010-11-031-1/+3
| | | | | | Provide access for Wince. Install dummy sehmap.h
* First take on changes to allow building with MSC for W32CE.Werner Koch2010-11-021-3/+7
| | | | | Fixed regression in plain W32 build.
* 2010-09-01 Marcus Brinkmann <[email protected]>Marcus Brinkmann2010-09-011-58/+11
| | | | | | | * w32-io.c: Revert change from 2009-06-18, as it created a race condition.
* Are you ready already?Marcus Brinkmann2010-08-041-3/+2
|
* 2010-08-03 Marcus Brinkmann <[email protected]>Marcus Brinkmann2010-08-031-2/+33
| | | | | | | * w32-io.c (GPGCEDEV_IOCTL_ASSIGN_RVID): New macro. (_gpgme_io_spawn): Use ASSIGN_RVID.
* 2010-06-11 Marcus Brinkmann <[email protected]>Marcus Brinkmann2010-06-101-2/+0
| | | | | * w32-io.c (_gpgme_io_spawn): Remove debug printf.
* 2010-06-10 Marcus Brinkmann <[email protected]>Marcus Brinkmann2010-06-101-130/+262
| | | | | | | | | | | | | | | | | | | | | | | | | | * debug.h (TRACE_SUC6): New macro. * w32-io.c (MAX_SLAFD): New macro. (fd_table): New static variable. (new_fd, release_fd): New functions. (fd_to_handle, handle_to_fd, handle_to_socket): Remove macros. (MAX_READERS, MAX_WRITERS): Increase to 64. (notify_table): Increase to MAX_SLAFD. (struct reader_context_s, struct writer_context_s): Add member file_sock. (reader, writer): Use file_hd vs file_sock to decide if socket operations to use. Remove auto-detect mode. (create_reader, create_writer): Set file_sock. Unblock pending thread only if this is a pipe fd. (_gpgme_io_pipe): Allocate fds from table and return slot indices instead of windows handles. This allows to properly handle RVIDs. (_gpgme_io_close): Handle dup'ed file descriptors. (build_commandline) [HAVE_W32_SYSTEM]: Use RVID from fd table now. (_gpgme_io_spawn): Use fd table now. (_gpgme_io_fd2str): Use RVID from fd table now. (_gpgme_io_dup): Implement using fd table. (_gpgme_io_socket): Allocate fds from table. (_gpgme_io_connect): Use fd from table.
* 2010-06-09 Marcus Brinkmann <[email protected]>Marcus Brinkmann2010-06-091-32/+344
| | | | | | | | | | | | | | | | | | | | | | * w32-io.c [HAVE_W32CE_SYSTEM]: Include assuan.h and winioctl.h. (GPGCEDEV_IOCTL_UNBLOCK) [HAVE_W32CE_SYSTEM]: Define. (set_synchronize) [HAVE_W32CE_SYSTEM]: Stub it out. (is_socket): Allow to return -1 for auto-detect (old behaviour). (is_socket) [HAVE_W32CE_SYSTEM]: Return -1. (reader): Handle auto-detect case. Handle ctx->stop_me before checking for EOF. (destroy_reader) [HAVE_W32CE_SYSTEM]: Unblock a pending reader. (writer): Handle auto-detect case. Handle ctx->stop_me with ERROR_BUSY. (destroy_writer) [HAVE_W32CE_SYSTEM]: Unblock a pending writer. (_gpgme_io_pipe) [HAVE_W32CE_SYSTEM]: Implement in terms of a half-pipe. (build_commandline) [HAVE_W32CE_SYSTEM]: New function. (_gpgme_io_spawn) [HAVE_W32CE_SYSTEM]: Implement it differently for this platform. (_gpgme_io_fd2str) [HAVE_W32CE_SYSTEM]: Implement it for RVIDs. (_gpgme_io_dup) [HAVE_W32CE_SYSTEM]: Stub it out.
* 2010-05-06 Marcus Brinkmann <[email protected]>Marcus Brinkmann2010-05-061-1/+0
| | | | | | * w32-glib-io.c, w32-io.c, w32-qt-io.cpp, w32-sema.c, w32-util.c: Do not include <signal.h>.
* 2010-05-06 Marcus Brinkmann <[email protected]>Marcus Brinkmann2010-05-061-26/+26
| | | | | | | | | | | | | | | | | | | * configure.ac: Require libgpg-error 1.8. src/ 2010-05-06 Marcus Brinkmann <[email protected]> * sign.c, data-user.c, conversion.c, debug.c, verify.c, data.c, decrypt.c, delete.c, assuan-support.c, import.c, engine-gpgsm.c, data-mem.c, op-support.c, w32-io.c, w32-util.c, data-compat.c: Use gpg_error_from_syserror instead gpg_error_from_errno, and use gpg_err_set_errno to set error number. * setenv.c: Include <gpg-error.h> and define __set_errno to use gpg_err_set_errno. * gpgme-tool.c (ARGP_ERR_UNKNOWN): Define to EDEADLOCK (which is mapped in Windows CE) instead of E2BIG (which is not). (gt_import_keys): Initialize err.
* More robust detection of handle and socketsWerner Koch2010-04-161-20/+46
|
* Allow the native W32 version to properly work with sockets.Werner Koch2010-01-251-22/+79
|
* 2009-11-10 Marcus Brinkmann <[email protected]>Marcus Brinkmann2009-11-101-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * configure.ac: Activate UIServer if FD passing is enabled and Assuan is available. m4/ 2009-11-10 Marcus Brinkmann <[email protected]> * libassuan.m4: Fix LIBASSUAN_VERSION. src/ 2009-11-10 Marcus Brinkmann <[email protected]> * Makefile.am (uiserver_components): New variable. (main_sources): Add it. * ops.h, key.c (_gpgme_key_append_name): Take CONVERT argument, implement it. Adjust callers. (gpgme_key_from_uid): New function. * gpgme.h.in (gpgme_protocol_t): Add GPGME_PROTOCOL_DEFAULT. (gpgme_encrypt_flags_t): Add GPGME_ENCRYPT_PREPARE, GPGME_ENCRYPT_EXPECT_SIGN. (gpgme_set_sub_protocol, gpgme_key_from_uid): New functions. * libgpgme.vers, gpgme.def: Add new functions. * gpgme.c (gpgme_set_protocol): Add UIServer protocol. (gpgme_set_sub_protocol): New function. (gpgme_get_protocol_name): Add UIServer and default protocol. * assuan-support.c: Return correct error values, implement socketpair for POSIX. * priv-io.h, posix-io.c, w32-io.c, w32-glib-io.c, w32-qt-io.cpp (_gpgme_io_spawn): Add ATFORK and ATFORKVALUE arguments. Implement it for POSIX. Adjust all callers. * engine.h, engine-backend.h (_gpgme_engine_set_protocol) (_gpgme_engine_op_decrypt_verify): New prototypes. Adjust all users. * engine.c (engine_ops, gpgme_get_engine_info): Add UIServer engine. (_gpgme_engine_set_protocol, _gpgme_engine_op_decrypt_verify): New function. * decrypt-verify.c (decrypt_verify_start): Call _gpgme_engine_op_decrypt_verify. * util.h, posix-util.c, w32-util.c (_gpgme_get_uiserver_socket_path): New function. * engine-gpgsm.c (gpgsm_set_fd): Fix _gpgme_io_pipe invocation. * gpgme-tool.c: Some support for UIServer protocol. * engine-uiserver.c: New file.
* 2009-11-05 Marcus Brinkmann <[email protected]>Marcus Brinkmann2009-11-051-2/+5
| | | | | | | | | * priv-io.h (IOSPAWN_FLAG_NOCLOSE): New flag. * w32-io.c (_gpgme_io_spawn): Implement this flag. * posix-io.c (_gpgme_io_spawn): Likewise. * w32-glib-io.c (_gpgme_io_spawn): Likewise. * assuan-support.c (my_spawn): Set this flag.
* 2009-06-18 Marcus Brinkmann <[email protected]>Marcus Brinkmann2009-06-181-0/+1
| | | | | | * gpgme.def: Fix stupid typo. * w32-io.c (_gpgme_io_pipe): Add missing declaration.
* 2009-06-18 Marcus Brinkmann <[email protected]>Marcus Brinkmann2009-06-181-11/+42
| | | | | | | | | | | | * gpgme.h.in (GPGME_CONF_PATHNAME): Remove obsolete macro. * w32-io.c (_gpgme_io_pipe): Allocate reader/writer thread right away. (_gpgme_io_read, _gpgme_io_write, _gpgme_io_select) (_gpgme_io_dup): Never allocate threads here. (find_writer, find_reader): Check return value of thread creation function.
* Improved W32 SetForegroundWindow hacks.Werner Koch2009-06-121-6/+12
|
* 2009-04-15 Marcus Brinkmann <[email protected]>Marcus Brinkmann2009-04-151-2/+1
| | | | | | * posix-io.c (_gpgme_io_socket, _gpgme_io_connect): New functions. * w32-io.c (_gpgme_io_connect): Fix stupid error.
* assuan/Marcus Brinkmann2009-04-081-2/+62
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2009-04-08 Marcus Brinkmann <[email protected]> * assuan.h (_gpgme_io_socket): New prototype. (_ASSUAN_CUSTOM_IO, _assuan_custom_close, _assuan_custom_read) (_assuan_custom_write, _assuan_custom_pipe, _assuan_custom_socket) (_assuan_custom_connect): New macros. * assuan-socket.c (_assuan_close, _assuan_sock_new) (_assuan_sock_connect) [_ASSUAN_CUSTOM_IO]: Use custom I/O function. * assuan-buffer.c (assuan_read_line): Do not handle EAGAIN anymore. * assuan-client.c (_assuan_read_from_server): Likewise. * assuan-handler.c (process_next): Likewise * assuan-inquire.c (assuan_inquire): Likewise. src/ 2009-04-08 Marcus Brinkmann <[email protected]> * w32-glib-io.c (giochannel_table): New members used, fd, socket. (find_channel): Drop CREATE argument. (new_dummy_channel_from_fd, new_channel_from_fd) (new_channel_from_socket): New functions. (_gpgm_io_fd2str): Implement for sockets. (_gpgme_io_write, _gpgme_io_read): Translate EAGAIN errors correctly. (_gpgme_io_pipe): Fix for new channel bookkeeping. (_gpgme_io_close, _gpgme_io_dup): Likewise. (wsa2errno, _gpgme_io_socket, _gpgme_io_connect): New. * w32-io.c (MAX_READERS, MAX_WRITERS): Bump up to 40. (wsa2errno, _gpgme_io_socket, _gpgme_io_connect): New. * w32-qt-io.cpp (_gpgme_io_socket, _gpgme_io_connect): New stubs. * version.c [HAVE_W32_SYSTEM]: Include "windows.h. (do_subsystem_inits) [HAVE_W32_SYSTEM]: Call WSAStartup. * engine-assuan.c (llass_status_handler): Ignore EAGAIN errors.
* 008-11-03 Marcus Brinkmann <[email protected]>Marcus Brinkmann2008-11-031-0/+1471
* configure.ac: Replace gpgme paths with src. * gpgme: Move to ... * src: ... this new directory. assuan/ 2008-11-03 Marcus Brinkmann <[email protected]> * Makefile.am (INCLUDES): Replace gpgme path with src. tests/ 2008-11-03 Marcus Brinkmann <[email protected]> * gpgsm/Makefile.am (INCLUDES, LDADD): Replace gpgme path with src. * gpg/Makefile.am (INCLUDES, LDADD, t_thread1_LDADD): Likewise. * Makefile.am (LDADD): Likewise.