On Fri, 2007-03-16 at 23:48 +0800, geckook Xu wrote: > But the tcp_pcb haven't been free for a long time,and my stack can not work.
How long is a long time? It should take two minutes to timeout from the TIMEWAIT state if you haven't changed the default configuration for TCP_MSL. > When I add a new thread to do with the received data, then the tcp_pcb > would be free. In this cast, I use the message box to communicate > between the stack and the other thread. But when the tcp_pcb have been > exhausted, message box will block for a long time (about 2 seconds). > What is the metter? > but when I do with the received data in the tcp_rcvd callback > function, In this case, the tcp_pcb couldn't be free. > Are there anything should be take attention to? Sounds like it's possible your the timeouts aren't happening properly. Are you calling tcp_tmr() (or alternatively tcp_slowtmr() and tcp_fasttmr() directly) as described in the doc/rawapi.txt? "When the system is running, the two timer functions tcp_fasttmr() and tcp_slowtmr() must be called with regular intervals. The tcp_fasttmr() should be called every TCP_FAST_INTERVAL milliseconds (defined in tcp.h) and tcp_slowtmr() should be called every TCP_SLOW_INTERVAL milliseconds" The tcp_tmr() function simplifies things slightly. If you call this every TCP_FAST_INTERVAL it will call the other two at appropriate times. Kieran _______________________________________________ lwip-users mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/lwip-users
