Moved the nagle algorithm from netconn_write/do_write into a define (tcp_output_nagle) in tcp.h to provide it to raw api users, too.

This commit is contained in:
goldsimon 2007-06-21 18:55:09 +00:00
parent 9f05cabf87
commit 2aef8bad55
3 changed files with 16 additions and 9 deletions

View File

@ -19,6 +19,10 @@ HISTORY
++ New features:
2007-06-21 Simon Goldschmidt
* tcp.h, api_msg.c: Moved the nagle algorithm from netconn_write/do_write
into a define (tcp_output_nagle) in tcp.h to provide it to raw api users, too.
2007-06-21 Simon Goldschmidt
* api.h, api_lib.c, api_msg.c: Fixed bug #20021: Moved sendbuf-processing in
netconn_write from api_lib.c to api_msg.c to also prevent multiple context-

View File

@ -752,15 +752,7 @@ do_writemore(struct netconn *conn)
conn->write_msg = NULL;
conn->write_offset = 0;
}
/* This is the Nagle algorithm: inhibit the sending of new TCP
segments when new outgoing data arrives from the user if any
previously transmitted data on the connection remains
unacknowledged. */
if ((conn->pcb.tcp->unacked == NULL ||
(conn->pcb.tcp->flags & TF_NODELAY) ||
(conn->pcb.tcp->snd_queuelen) > 1)) {
err = tcp_output(conn->pcb.tcp);
}
err = tcp_output_nagle(conn->pcb.tcp);
conn->err = err;
if ((conn->callback) && (err == ERR_OK) &&
(tcp_sndbuf(conn->pcb.tcp) <= TCP_SNDLOWAT)) {

View File

@ -111,6 +111,17 @@ err_t tcp_output (struct tcp_pcb *pcb);
void tcp_rexmit (struct tcp_pcb *pcb);
void tcp_rexmit_rto (struct tcp_pcb *pcb);
/**
* This is the Nagle algorithm: inhibit the sending of new TCP
* segments when new outgoing data arrives from the user if any
* previously transmitted data on the connection remains
* unacknowledged.
*/
#define tcp_output_nagle(tpcb) ((((tpcb)->unacked == NULL) || \
((tpcb)->flags & TF_NODELAY) || \
((tpcb)->snd_queuelen > 1)) ? \
tcp_output(tpcb) : ERR_OK)
#define TCP_SEQ_LT(a,b) ((s32_t)((a)-(b)) < 0)