I got a problem about handle the passive close. After connect to the server, I have a Client thread like this:
......
for(;;) {
......
llen = lwip_recv( sockClient, buff, buff_LEN, 0 ); // wait for data
if( llen ) {
// some data recived, handle data
}
// do other works...
......
}
......
It works good except this problem:
I found
that lwip_recv() will suspend Client thread at sys_arch_mbox_fetch() in function netconn_recv() of api_lib.c line 347, wait the message forever. In this situation, I have no idea how to handle the passive close. The tcp_thread() have acked the first FIN, change the tcp_pcb->state to CLOSE_WAIT.
I'm less experence in multi-threaded programing, If there is any other way to implement my Client thread, please tell me, thanks.