issue with ServerSocket::accept
David Daney
ddaney@avtrex.com
Fri May 14 18:37:00 GMT 2004
David Daney wrote:
> Bryce McKinlay wrote:
>>> Vladimir Leven wrote:
>>>>> Oops. It does seem to block -- my mistake. But there is still a
>>> problem. When I close the serverSocket, java generates a
>>> SocketException, but gcj does not appear to do so.
>>>>>>>>>> Looks like we don't implement blocking I/O interruption with
>> close(). I've set up a bug report to track this issue, with a
>> self-contained test case:
>>>> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15430
>>>> Does anyone know of a good way to implement this? Can select() do it?
>>>> I haven't gone through the exercise, but what does accept(2) do when
> close(2) is called on the socket from another thread?
>> Intuition tells me that something will happen on the thread that
> called accept(). Perhaps accept returns -1. If this is the case you
> could check to see if the socket was closed and throw the exception.
>Well maybe accept doesn't return when the socket is closed. Perhaps
each thread entering ServerSocket.accept() should put itself on a list
of blocked acceptors. Then when close() is called each thread on the
list is interrupted...
David Daney.
More information about the Java
mailing list