|
From: | xcbman |
Subject: | [lwip-users] about lwip_close() and lwip_connect() problem |
Date: | Tue, 20 May 2008 12:14:48 +0800 |
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
|
[Prev in Thread] | Current Thread | [Next in Thread] |