X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/b57f37fb6a4d30ac9aaba3bbca06f5a3307c804a..1386c9a7c0bff4fc00e882e4ac7c24a9541c47c7:/libratbox/src/linebuf.c diff --git a/libratbox/src/linebuf.c b/libratbox/src/linebuf.c index 613e3b2..a6c05f3 100644 --- a/libratbox/src/linebuf.c +++ b/libratbox/src/linebuf.c @@ -21,7 +21,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA * - * $Id: linebuf.c 25038 2008-01-23 16:03:08Z androsyn $ + * $Id: linebuf.c 25375 2008-05-16 15:19:51Z androsyn $ */ #include @@ -368,7 +368,6 @@ rb_linebuf_parse(buf_head_t * bufhead, char *data, int len, int raw) { /* Check we're doing the partial buffer thing */ bufline = bufhead->list.tail->data; - lrb_assert(!bufline->flushing); /* just try, the worst it could do is *reject* us .. */ if(!raw) cpylen = rb_linebuf_copy_line(bufhead, bufline, data, len); @@ -548,13 +547,13 @@ rb_linebuf_putmsg(buf_head_t * bufhead, const char *format, va_list * va_args, c bufline->terminated = 1; /* Truncate the data if required */ - if(unlikely(len > 510)) + if(rb_unlikely(len > 510)) { len = 510; bufline->buf[len++] = '\r'; bufline->buf[len++] = '\n'; } - else if(unlikely(len == 0)) + else if(rb_unlikely(len == 0)) { bufline->buf[len++] = '\r'; bufline->buf[len++] = '\n'; @@ -594,19 +593,19 @@ rb_linebuf_putbuf(buf_head_t *bufhead, const char *buffer) /* Create a new line */ bufline = rb_linebuf_new_line(bufhead); - if(unlikely(buffer != NULL)) + if(rb_unlikely(buffer != NULL)) len = rb_strlcpy(bufline->buf, buffer, BUF_DATA_SIZE); bufline->terminated = 1; /* Truncate the data if required */ - if(unlikely(len > 510)) + if(rb_unlikely(len > 510)) { len = 510; bufline->buf[len++] = '\r'; bufline->buf[len++] = '\n'; } - else if(unlikely(len == 0)) + else if(rb_unlikely(len == 0)) { bufline->buf[len++] = '\r'; bufline->buf[len++] = '\n'; @@ -649,7 +648,7 @@ rb_linebuf_put(buf_head_t * bufhead, const char *format, ...) /* Create a new line */ bufline = rb_linebuf_new_line(bufhead); - if(unlikely(format != NULL)) + if(rb_unlikely(format != NULL)) { va_start(args, format); len = rb_vsnprintf(bufline->buf, BUF_DATA_SIZE, format, args); @@ -659,13 +658,13 @@ rb_linebuf_put(buf_head_t * bufhead, const char *format, ...) bufline->terminated = 1; /* Truncate the data if required */ - if(unlikely(len > 510)) + if(rb_unlikely(len > 510)) { len = 510; bufline->buf[len++] = '\r'; bufline->buf[len++] = '\n'; } - else if(unlikely(len == 0)) + else if(rb_unlikely(len == 0)) { bufline->buf[len++] = '\r'; bufline->buf[len++] = '\n'; @@ -739,12 +738,9 @@ rb_linebuf_flush(rb_fde_t *F, buf_head_t * bufhead) } - if(bufline->flushing) - { - vec[x].iov_base = bufline->buf + bufhead->writeofs; - vec[x++].iov_len = bufline->len - bufhead->writeofs; - ptr = ptr->next; - } + vec[x].iov_base = bufline->buf + bufhead->writeofs; + vec[x++].iov_len = bufline->len - bufhead->writeofs; + ptr = ptr->next; do { @@ -777,29 +773,18 @@ rb_linebuf_flush(rb_fde_t *F, buf_head_t * bufhead) { bufline = ptr->data; - if(bufline->flushing) - { - if(xret >= bufline->len - bufhead->writeofs) - { - xret = xret - (bufline->len - bufhead->writeofs); - ptr = ptr->next; - rb_linebuf_done_line(bufhead, bufline, bufhead->list.head); - continue; - } - } - if(xret >= bufline->len) + if(xret >= bufline->len - bufhead->writeofs) { - xret = xret - bufline->len; + xret -= bufline->len - bufhead->writeofs; ptr = ptr->next; rb_linebuf_done_line(bufhead, bufline, bufhead->list.head); + bufhead->writeofs = 0; } else { - bufline->flushing = 1; - bufhead->writeofs = xret; + bufhead->writeofs += xret; break; } - } return retval; @@ -825,13 +810,6 @@ rb_linebuf_flush(rb_fde_t *F, buf_head_t * bufhead) return -1; } - /* Check we're flushing the first buffer */ - if(!bufline->flushing) - { - bufline->flushing = 1; - bufhead->writeofs = 0; - } - /* Now, try writing data */ retval = rb_write(F, bufline->buf + bufhead->writeofs, bufline->len - bufhead->writeofs);