ustream: only report a write error once via state_change callback
[project/libubox.git] / ustream.c
index 9c61806..88f1332 100644 (file)
--- a/ustream.c
+++ b/ustream.c
@@ -37,6 +37,7 @@ static void ustream_init_buf(struct ustream_buf *buf, int len)
 
 static void ustream_add_buf(struct ustream_buf_list *l, struct ustream_buf *buf)
 {
 
 static void ustream_add_buf(struct ustream_buf_list *l, struct ustream_buf *buf)
 {
+       l->buffers++;
        if (!l->tail)
                l->head = buf;
        else
        if (!l->tail)
                l->head = buf;
        else
@@ -329,8 +330,9 @@ char *ustream_get_read_buf(struct ustream *s, int *buflen)
 
 static void ustream_write_error(struct ustream *s)
 {
 
 static void ustream_write_error(struct ustream *s)
 {
+       if (!s->write_error)
+               ustream_state_change(s);
        s->write_error = true;
        s->write_error = true;
-       ustream_state_change(s);
 }
 
 bool ustream_write_pending(struct ustream *s)
 }
 
 bool ustream_write_pending(struct ustream *s)