summaryrefslogtreecommitdiffstats
path: root/daemon/device.c
diff options
context:
space:
mode:
Diffstat (limited to 'daemon/device.c')
-rw-r--r--daemon/device.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/daemon/device.c b/daemon/device.c
index acedbdf..684e009 100644
--- a/daemon/device.c
+++ b/daemon/device.c
@@ -322,7 +322,12 @@ int device_start_connect(int device_id, uint16_t dport, struct mux_client *clien
static void update_connection(struct mux_connection *conn)
{
- conn->sendable = conn->rx_win - (conn->tx_seq - conn->rx_ack);
+ uint32_t sent = conn->tx_seq - conn->rx_ack;
+
+ if(conn->rx_win > sent)
+ conn->sendable = conn->rx_win - sent;
+ else
+ conn->sendable = 0;
if(conn->sendable > conn->ob_capacity)
conn->sendable = conn->ob_capacity;