aboutsummaryrefslogtreecommitdiffstats
path: root/src/engine-assuan.c
diff options
context:
space:
mode:
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));
}