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)