This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

TCP close(...) action


Hi Folks,

I have a simple program with two threads that send /
recv from a single TCP socket.  One thread blocks on a
recv call while the other thread sends data on the
same socket.

I put a close call in the send thread.  The expected
behavior was for the recv thread to wake (with 0 bytes
of data) and a FIN to be sent on the ethernet.  The
actual behavior was that the recv thread never woke
and the FIN was not sent.  (Is this intended or a
bug?).  I found the soclose function would not be
invoked because the recv was still using the file
handle.  Once the recv released the file handle, the
FIN flowed on the ethernet.

I worked around this issue by calling
cyg_thread_release from my application, which woke up
the recv thread.  But I wonder if there is better
solution?  Could (or should) the close call be made to
wake up blocked threads?  If so, any suggestions?

Thanks,
-- Matt

__________________________________
Do you Yahoo!?
The New Yahoo! Shopping - with improved product search
http://shopping.yahoo.com

-- 
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]