diff options
Diffstat (limited to 'src/engine-assuan.c')
-rw-r--r-- | src/engine-assuan.c | 13 |
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)); } |