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

Reply via email to