Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.openwrt.org/project/libubox.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'ustream.c')
-rw-r--r--ustream.c6
1 files changed, 5 insertions, 1 deletions
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;
}