aboutsummaryrefslogtreecommitdiffstats
path: root/src/assuan-handler.c
diff options
context:
space:
mode:
authorMarcus Brinkmann <[email protected]>2007-10-05 16:44:08 +0000
committerMarcus Brinkmann <[email protected]>2007-10-05 16:44:08 +0000
commitd0395d1de508b960fa8d7c83e404d7aacb617c9c (patch)
treef22047c0e0076ccdbb0299cc60f702c8b1861582 /src/assuan-handler.c
parentMap WSANOTINITIALIZED to ENOSYS. (diff)
downloadlibassuan-d0395d1de508b960fa8d7c83e404d7aacb617c9c.tar.gz
libassuan-d0395d1de508b960fa8d7c83e404d7aacb617c9c.zip
2007-10-05 Marcus Brinkmann <[email protected]>
* assuan-defs.h (_assuan_error_is_eagain): New prototype. * mkerrors (_assuan_error_is_eagain): New function. * assuan-handler.c (process_next): Leave on EAGAIN. * assuan-handler.c (process_request), assuan-client.c (_assuan_read_from_server), assuan-buffer.c (assuan_read_line): Busy loop over EAGAIN.
Diffstat (limited to 'src/assuan-handler.c')
-rw-r--r--src/assuan-handler.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/assuan-handler.c b/src/assuan-handler.c
index 4c02608..0b9700e 100644
--- a/src/assuan-handler.c
+++ b/src/assuan-handler.c
@@ -612,6 +612,8 @@ process_next (assuan_context_t ctx)
required to write full lines without blocking long after starting
a partial line. */
rc = _assuan_read_line (ctx);
+ if (_assuan_error_is_eagain (rc))
+ return 0;
if (rc)
return rc;
if (*ctx->inbound.line == '#' || !ctx->inbound.linelen)
@@ -683,7 +685,11 @@ process_request (assuan_context_t ctx)
if (ctx->in_inquire)
return _assuan_error (ASSUAN_Nested_Commands);
- rc = _assuan_read_line (ctx);
+ do
+ {
+ rc = _assuan_read_line (ctx);
+ }
+ while (_assuan_error_is_eagain (rc));
if (rc)
return rc;
if (*ctx->inbound.line == '#' || !ctx->inbound.linelen)