[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lwip-users] fix for tcp_slowtmr
From: |
Oleg Tychev |
Subject: |
[lwip-users] fix for tcp_slowtmr |
Date: |
Thu, 22 Jun 2006 17:44:16 +0200 |
User-agent: |
Thunderbird 1.5.0.4 (Windows/20060516) |
Hello, All!
In processing of keepalive timers we can see following code:
/* Check if KEEPALIVE should be sent */
if((pcb->so_options & SOF_KEEPALIVE) && ((pcb->state == ESTABLISHED) ||
(pcb->state == CLOSE_WAIT))) {
if((u32_t)(tcp_ticks - pcb->tmr) > (pcb->keepalive + TCP_MAXIDLE) /
TCP_SLOW_INTERVAL) {
LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: KEEPALIVE timeout. Aborting
connection to %"U16_F".%"U16_F".%"U16_F".%"U16_F".\n",
ip4_addr1(&pcb->remote_ip),
ip4_addr2(&pcb->remote_ip),
ip4_addr3(&pcb->remote_ip),
ip4_addr4(&pcb->remote_ip)));
tcp_abort(pcb);
}
else if((u32_t)(tcp_ticks - pcb->tmr) > (pcb->keepalive +
pcb->keep_cnt * TCP_KEEPINTVL) / TCP_SLOW_INTERVAL) {
tcp_keepalive(pcb);
pcb->keep_cnt++;
}
}
tcp_abort destroys pcb, but processing goes further.
Poka poka,
Oleg
I suggest following patch against version lwip-1.1.1:
*** lwip-1.1.1/src/core/1/tcp.c Tue Dec 20 11:03:18 2005
--- lwip-1.1.1/src/core/2/tcp.c Thu Jun 22 17:38:30 2006
***************
*** 531,537 ****
--- 531,540 ----
ip4_addr1(&pcb->remote_ip),
ip4_addr2(&pcb->remote_ip),
ip4_addr3(&pcb->remote_ip),
ip4_addr4(&pcb->remote_ip)));
+ pcb2 = pcb->next;
tcp_abort(pcb);
+ pcb = pcb2;
+ continue;
}
else if((u32_t)(tcp_ticks - pcb->tmr) > (pcb->keepalive +
pcb->keep_cnt * TCP_KEEPINTVL) / TCP_SLOW_INTERVAL) {
tcp_keepalive(pcb);
*** lwip-1.1.1/src/core/1/tcp.c Tue Dec 20 11:03:18 2005
--- lwip-1.1.1/src/core/2/tcp.c Thu Jun 22 17:38:30 2006
***************
*** 531,537 ****
--- 531,540 ----
ip4_addr1(&pcb->remote_ip),
ip4_addr2(&pcb->remote_ip),
ip4_addr3(&pcb->remote_ip),
ip4_addr4(&pcb->remote_ip)));
+ pcb2 = pcb->next;
tcp_abort(pcb);
+ pcb = pcb2;
+ continue;
}
else if((u32_t)(tcp_ticks - pcb->tmr) > (pcb->keepalive + pcb->keep_cnt
* TCP_KEEPINTVL) / TCP_SLOW_INTERVAL) {
tcp_keepalive(pcb);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [lwip-users] fix for tcp_slowtmr,
Oleg Tychev <=