diff options
author | Marcus Brinkmann <[email protected]> | 2007-10-05 16:44:08 +0000 |
---|---|---|
committer | Marcus Brinkmann <[email protected]> | 2007-10-05 16:44:08 +0000 |
commit | d0395d1de508b960fa8d7c83e404d7aacb617c9c (patch) | |
tree | f22047c0e0076ccdbb0299cc60f702c8b1861582 /src/assuan-handler.c | |
parent | Map WSANOTINITIALIZED to ENOSYS. (diff) | |
download | libassuan-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.c | 8 |
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) |