From 729da3c873b9604266e855e254f450cabb1e6dd1 Mon Sep 17 00:00:00 2001 From: christiaans Date: Tue, 10 Oct 2006 07:48:27 +0000 Subject: [PATCH] Fixed Nagle algorithm as reported by Bob Grice. --- CHANGELOG | 3 +++ src/api/api_msg.c | 6 ++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index fb863974..a1038d77 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -56,6 +56,9 @@ HISTORY ++ Bug fixes: + 2006-10-10 Christiaan Simons + * api_msg.c: Fixed Nagle algorithm as reported by Bob Grice. + 2006-08-17 Christiaan Simons * udp.c: Fixed bug #17200, added check for broadcast destinations for PCBs bound to a unicast address. diff --git a/src/api/api_msg.c b/src/api/api_msg.c index 09bafda3..b7cf03ba 100644 --- a/src/api/api_msg.c +++ b/src/api/api_msg.c @@ -719,8 +719,10 @@ do_write(struct api_msg_msg *msg) segments when new outgoing data arrives from the user if any previously transmitted data on the connection remains unacknowledged. */ - if(err == ERR_OK && (msg->conn->pcb.tcp->unacked == NULL || (msg->conn->pcb.tcp->flags & TF_NODELAY)) ) { - tcp_output(msg->conn->pcb.tcp); + if(err == ERR_OK && (msg->conn->pcb.tcp->unacked == NULL || + (msg->conn->pcb.tcp->flags & TF_NODELAY) || + (msg->conn->pcb.tcp->snd_queuelen) > 1)) { + tcp_output(msg->conn->pcb.tcp); } msg->conn->err = err; if (msg->conn->callback)