diff -r 14e79683c48c -r 4147fae232d9 src/line_proto.c --- a/src/line_proto.c Sat Feb 28 17:39:37 2009 +0200 +++ b/src/line_proto.c Sat Feb 28 18:48:10 2009 +0200 @@ -154,7 +154,7 @@ size_t recv_offset = 0, peek_offset = 0, next_offset = 0; int ret; - // adjust offset from previous data + // adjust offset to beyond previous data (as will be moved next) recv_offset = lp->tail_len; // move trailing data from previous line to front of buffer @@ -183,23 +183,16 @@ assert(recv_offset < lp->buf_len); // otherwise, read more data - if ((ret = sock_stream_read(lp->sock, lp->buf + recv_offset, lp->buf_len - recv_offset)) < 0) { - // we can special-case EAGAIN, as it's expected - if (MATCH_ERROR(sock_stream_error(lp->sock), ERR_READ, EAGAIN)) { - // return a NULL *line_ptr - *line_ptr = NULL; - break; + if ((ret = sock_stream_read(lp->sock, lp->buf + recv_offset, lp->buf_len - recv_offset)) < 0) + // store and return NULL on errors + RETURN_SET_ERROR_INFO(&lp->err, sock_stream_error(lp->sock)); - } else { - // store and return NULL on errors - RETURN_SET_ERROR_INFO(&lp->err, sock_stream_error(lp->sock)); - - } + // EAGAIN? + if (ret == 0) { + // return a NULL *line_ptr + *line_ptr = NULL; + break; } - - // EOF? - if (ret == 0) - return SET_ERROR(&lp->err, ERR_READ_EOF); // update recv_offset recv_offset += ret;