X-Git-Url: http://git.archive.openwrt.org/?p=project%2Flibubox.git;a=blobdiff_plain;f=ustream.c;h=37fbaf76d03111d05a352f4891d47d1f8b5d0741;hp=9c14678b059ad656ddc5b318cac23953615ba968;hb=300a809a7a6b30595962308c4215ead6ec361053;hpb=84822fd6d529abc35bf8023403d547f8001bf5f3 diff --git a/ustream.c b/ustream.c index 9c14678..37fbaf7 100644 --- a/ustream.c +++ b/ustream.c @@ -341,7 +341,7 @@ bool ustream_write_pending(struct ustream *s) if (s->write_error) return false; - while (buf) { + while (buf && s->w.data_bytes) { struct ustream_buf *next = buf->next; int maxlen = buf->tail - buf->data; @@ -379,6 +379,7 @@ static int ustream_write_buffered(struct ustream *s, const char *data, int len, struct ustream_buf_list *l = &s->w; struct ustream_buf *buf; int maxlen; + bool has_data = !!s->w.data_bytes; while (len) { if (!ustream_prepare_buf(s, &s->w, len)) @@ -398,6 +399,9 @@ static int ustream_write_buffered(struct ustream *s, const char *data, int len, l->data_bytes += maxlen; } + if (s->poll && !has_data) + s->poll(s); + return wr; }