fix SIGINT handling
[project/ubus.git] / ubusd.c
diff --git a/ubusd.c b/ubusd.c
index a1636aa..491659d 100644 (file)
--- a/ubusd.c
+++ b/ubusd.c
@@ -95,7 +95,7 @@ static void ubus_msg_enqueue(struct ubus_client *cl, struct ubus_msg_buf *ub)
        if (cl->tx_queue[cl->txq_tail])
                return;
 
-       cl->tx_queue[cl->txq_tail] = ub;
+       cl->tx_queue[cl->txq_tail] = ubus_msg_ref(ub);
        cl->txq_tail = (cl->txq_tail + 1) % ARRAY_SIZE(cl->tx_queue);
 }
 
@@ -180,8 +180,6 @@ static void client_cb(struct uloop_fd *sock, unsigned int events)
                        }
                        break;
                }
-               if (written == 0)
-                       break;
 
                cl->txq_ofs += written;
                if (cl->txq_ofs < ub->len + sizeof(ub->hdr))