aboutsummaryrefslogtreecommitdiffstats
path: root/src/engine-assuan.c
diff options
context:
space:
mode:
authorMarcus Brinkmann <[email protected]>2009-04-08 18:53:57 +0000
committerMarcus Brinkmann <[email protected]>2009-04-08 18:53:57 +0000
commitd255b4bec9a1fdf0864640750161ea12999e43a5 (patch)
tree75e870ff7e07cb4f2bf30dc8a136c72eb4bf6bd4 /src/engine-assuan.c
parent2009-03-23 Marcus Brinkmann <[email protected]> (diff)
downloadgpgme-d255b4bec9a1fdf0864640750161ea12999e43a5.tar.gz
gpgme-d255b4bec9a1fdf0864640750161ea12999e43a5.zip
assuan/
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.
Diffstat (limited to 'src/engine-assuan.c')
-rw-r--r--src/engine-assuan.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/engine-assuan.c b/src/engine-assuan.c
index bfe7a037..12de042f 100644
--- a/src/engine-assuan.c
+++ b/src/engine-assuan.c
@@ -415,7 +415,18 @@ llass_status_handler (void *opaque, int fd)
err = assuan_read_line (llass->assuan_ctx, &line, &linelen);
if (err)
{
- TRACE2 (DEBUG_CTX, "gpgme:llass_status_handler", llass,
+ /* Reading a full line may not be possible when
+ communicating over a socket in nonblocking mode. In this
+ case, we are done for now. */
+ if (gpg_err_code (err) == GPG_ERR_EAGAIN)
+ {
+ TRACE1 (DEBUG_CTX, "gpgme:llass_status_handler", llass,
+ "fd 0x%x: EAGAIN reading assuan line (ignored)", fd);
+ err = 0;
+ continue;
+ }
+
+ TRACE2 (DEBUG_CTX, "gpgme:llass_status_handler", llass,
"fd 0x%x: error reading assuan line: %s",
fd, gpg_strerror (err));
}