mirror of
https://github.com/lwip-tcpip/lwip.git
synced 2024-07-04 20:08:57 +00:00
bug #28127: remove call to tcp_output() from tcp_ack(_now)()
This commit is contained in:
parent
d85a18752f
commit
f4a9d173a1
|
@ -37,6 +37,9 @@ HISTORY
|
||||||
|
|
||||||
++ Bugfixes:
|
++ Bugfixes:
|
||||||
|
|
||||||
|
2010-01-10: Simon Goldschmidt
|
||||||
|
* tcp.h/.c: bug #28127 (remove call to tcp_output() from tcp_ack(_now)())
|
||||||
|
|
||||||
2010-01-08: Simon Goldschmidt
|
2010-01-08: Simon Goldschmidt
|
||||||
* api_msg.h/.c, api_lib.c: Fixed bug #26672 (close connection when receive
|
* api_msg.h/.c, api_lib.c: Fixed bug #26672 (close connection when receive
|
||||||
window = 0) by correctly draining recvmbox/acceptmbox
|
window = 0) by correctly draining recvmbox/acceptmbox
|
||||||
|
|
|
@ -454,8 +454,10 @@ tcp_recved(struct tcp_pcb *pcb, u16_t len)
|
||||||
* watermark is TCP_WND/2), then send an explicit update now.
|
* watermark is TCP_WND/2), then send an explicit update now.
|
||||||
* Otherwise wait for a packet to be sent in the normal course of
|
* Otherwise wait for a packet to be sent in the normal course of
|
||||||
* events (or more window to be available later) */
|
* events (or more window to be available later) */
|
||||||
if (wnd_inflation >= TCP_WND_UPDATE_THRESHOLD)
|
if (wnd_inflation >= TCP_WND_UPDATE_THRESHOLD) {
|
||||||
tcp_ack_now(pcb);
|
tcp_ack_now(pcb);
|
||||||
|
tcp_output(pcb);
|
||||||
|
}
|
||||||
|
|
||||||
LWIP_DEBUGF(TCP_DEBUG, ("tcp_recved: recveived %"U16_F" bytes, wnd %"U16_F" (%"U16_F").\n",
|
LWIP_DEBUGF(TCP_DEBUG, ("tcp_recved: recveived %"U16_F" bytes, wnd %"U16_F" (%"U16_F").\n",
|
||||||
len, pcb->rcv_wnd, TCP_WND - pcb->rcv_wnd));
|
len, pcb->rcv_wnd, TCP_WND - pcb->rcv_wnd));
|
||||||
|
@ -836,6 +838,7 @@ tcp_fasttmr(void)
|
||||||
if (pcb->flags & TF_ACK_DELAY) {
|
if (pcb->flags & TF_ACK_DELAY) {
|
||||||
LWIP_DEBUGF(TCP_DEBUG, ("tcp_fasttmr: delayed ACK\n"));
|
LWIP_DEBUGF(TCP_DEBUG, ("tcp_fasttmr: delayed ACK\n"));
|
||||||
tcp_ack_now(pcb);
|
tcp_ack_now(pcb);
|
||||||
|
tcp_output();
|
||||||
pcb->flags &= ~(TF_ACK_DELAY | TF_ACK_NOW);
|
pcb->flags &= ~(TF_ACK_DELAY | TF_ACK_NOW);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -556,7 +556,6 @@ struct tcp_seg *tcp_seg_copy(struct tcp_seg *seg);
|
||||||
if((pcb)->flags & TF_ACK_DELAY) { \
|
if((pcb)->flags & TF_ACK_DELAY) { \
|
||||||
(pcb)->flags &= ~TF_ACK_DELAY; \
|
(pcb)->flags &= ~TF_ACK_DELAY; \
|
||||||
(pcb)->flags |= TF_ACK_NOW; \
|
(pcb)->flags |= TF_ACK_NOW; \
|
||||||
tcp_output(pcb); \
|
|
||||||
} \
|
} \
|
||||||
else { \
|
else { \
|
||||||
(pcb)->flags |= TF_ACK_DELAY; \
|
(pcb)->flags |= TF_ACK_DELAY; \
|
||||||
|
@ -566,7 +565,6 @@ struct tcp_seg *tcp_seg_copy(struct tcp_seg *seg);
|
||||||
#define tcp_ack_now(pcb) \
|
#define tcp_ack_now(pcb) \
|
||||||
do { \
|
do { \
|
||||||
(pcb)->flags |= TF_ACK_NOW; \
|
(pcb)->flags |= TF_ACK_NOW; \
|
||||||
tcp_output(pcb); \
|
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
err_t tcp_send_ctrl(struct tcp_pcb *pcb, u8_t flags);
|
err_t tcp_send_ctrl(struct tcp_pcb *pcb, u8_t flags);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user