mirror of
https://github.com/lwip-tcpip/lwip.git
synced 2024-12-28 09:19:53 +00:00
Fixed bug #28099 (API required to disable Nagle algorithm at PCB level): added tcp_nagele_*() function-like macros
This commit is contained in:
parent
6795aabecf
commit
c8d2d2a8ea
@ -46,6 +46,10 @@ HISTORY
|
|||||||
|
|
||||||
++ Bugfixes:
|
++ Bugfixes:
|
||||||
|
|
||||||
|
2009-11-26: Simon Goldschmidt
|
||||||
|
* tcp.h, sockets.c: Fixed bug #28099: API required to disable Nagle
|
||||||
|
algorithm at PCB level
|
||||||
|
|
||||||
2009-11-22: Simon Goldschmidt
|
2009-11-22: Simon Goldschmidt
|
||||||
* tcp_out.c: Fixed bug #27905: FIN isn't combined with data on unsent
|
* tcp_out.c: Fixed bug #27905: FIN isn't combined with data on unsent
|
||||||
|
|
||||||
|
@ -1492,7 +1492,7 @@ lwip_getsockopt_internal(void *arg)
|
|||||||
case IPPROTO_TCP:
|
case IPPROTO_TCP:
|
||||||
switch (optname) {
|
switch (optname) {
|
||||||
case TCP_NODELAY:
|
case TCP_NODELAY:
|
||||||
*(int*)optval = (sock->conn->pcb.tcp->flags & TF_NODELAY);
|
*(int*)optval = tcp_nagle_enabled(sock->conn->pcb.tcp);
|
||||||
LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_getsockopt(%d, IPPROTO_TCP, TCP_NODELAY) = %s\n",
|
LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_getsockopt(%d, IPPROTO_TCP, TCP_NODELAY) = %s\n",
|
||||||
s, (*(int*)optval)?"on":"off") );
|
s, (*(int*)optval)?"on":"off") );
|
||||||
break;
|
break;
|
||||||
@ -1853,9 +1853,9 @@ lwip_setsockopt_internal(void *arg)
|
|||||||
switch (optname) {
|
switch (optname) {
|
||||||
case TCP_NODELAY:
|
case TCP_NODELAY:
|
||||||
if (*(int*)optval) {
|
if (*(int*)optval) {
|
||||||
sock->conn->pcb.tcp->flags |= TF_NODELAY;
|
tcp_nagle_enable(sock->conn->pcb.tcp);
|
||||||
} else {
|
} else {
|
||||||
sock->conn->pcb.tcp->flags &= ~TF_NODELAY;
|
tcp_nagle_disable(sock->conn->pcb.tcp);
|
||||||
}
|
}
|
||||||
LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_setsockopt(%d, IPPROTO_TCP, TCP_NODELAY) -> %s\n",
|
LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_setsockopt(%d, IPPROTO_TCP, TCP_NODELAY) -> %s\n",
|
||||||
s, (*(int *)optval)?"on":"off") );
|
s, (*(int *)optval)?"on":"off") );
|
||||||
|
@ -78,6 +78,9 @@ void tcp_err (struct tcp_pcb *pcb,
|
|||||||
|
|
||||||
#define tcp_mss(pcb) ((pcb)->mss)
|
#define tcp_mss(pcb) ((pcb)->mss)
|
||||||
#define tcp_sndbuf(pcb) ((pcb)->snd_buf)
|
#define tcp_sndbuf(pcb) ((pcb)->snd_buf)
|
||||||
|
#define tcp_nagle_enable(pcb) ((pcb)->flags |= TF_NODELAY)
|
||||||
|
#define tcp_nagle_disable(pcb) ((pcb)->flags &= ~TF_NODELAY)
|
||||||
|
#define tcp_nagle_enabled(pcb) (((pcb)->flags & TF_NODELAY) != 0)
|
||||||
|
|
||||||
#if TCP_LISTEN_BACKLOG
|
#if TCP_LISTEN_BACKLOG
|
||||||
#define tcp_accepted(pcb) (((struct tcp_pcb_listen *)(pcb))->accepts_pending--)
|
#define tcp_accepted(pcb) (((struct tcp_pcb_listen *)(pcb))->accepts_pending--)
|
||||||
@ -137,7 +140,7 @@ u32_t tcp_update_rcv_ann_wnd(struct tcp_pcb *pcb);
|
|||||||
* than one unsent segment - with lwIP, this can happen although unsent->len < mss)
|
* than one unsent segment - with lwIP, this can happen although unsent->len < mss)
|
||||||
*/
|
*/
|
||||||
#define tcp_do_output_nagle(tpcb) ((((tpcb)->unacked == NULL) || \
|
#define tcp_do_output_nagle(tpcb) ((((tpcb)->unacked == NULL) || \
|
||||||
((tpcb)->flags & TF_NODELAY) || \
|
(tcp_nagle_enabled(tpcb)) || \
|
||||||
(((tpcb)->unsent != NULL) && (((tpcb)->unsent->next != NULL) || \
|
(((tpcb)->unsent != NULL) && (((tpcb)->unsent->next != NULL) || \
|
||||||
((tpcb)->unsent->len >= (tpcb)->mss))) \
|
((tpcb)->unsent->len >= (tpcb)->mss))) \
|
||||||
) ? 1 : 0)
|
) ? 1 : 0)
|
||||||
|
Loading…
Reference in New Issue
Block a user