I use lwip1.3.0 in winxp. I have a problem(maybe is a bug) with socket (lwip_close() and lwip_connect() function) Two thread: Thread1: socket()->connect(sock)->send/recv()->close(); Thread2:close(sock) When thread1 calling socket connecting() ,before socket connected,thread2 calll close(sock),result is :thread1->connect() return connected(not real connected),and thread2->close() can’t return(maybe wait for sys_arch_sem_wait(apimsg->msg.conn->op_completed, 0);),this offen happen. Trace lWIP code,find: Connect() and close() call tcpip_apimsg(),but tcpip_apimsg() function is controled by “apimsg->msg.conn->op_completed”; Connect()=>netconn_connect()=>tcpip_apimsg()=>do_connect()=> sys_arch_sem_wait(apimsg->msg.conn->op_completed, 0); Close()=>netconn_delete()=>tcpip_apimsg()=>do_delconn()=>sys_arch_sem_wait(apimsg->msg.conn->op_completed, 0); do_delconn()=>do_close_internal(msg->conn);=> sys_sem_signal(conn->op_completed);//this signal call connect() return; and close() wait for “sys_arch_sem_wait(apimsg->msg.conn->op_completed, 0)” please check it and help me to resolve this problem.
xcbman 2008-05-20
_______________________________________________ lwip-users mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/lwip-users
