You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by tr...@apache.org on 2005/03/24 03:16:01 UTC
svn commit: r158860 - in directory/network/trunk/src/java/org/apache/mina/io:
datagram/DatagramAcceptor.java socket/SocketAcceptor.java
Author: trustin
Date: Wed Mar 23 18:15:59 2005
New Revision: 158860
URL: http://svn.apache.org/viewcvs?view=rev&rev=158860
Log:
Fixed: Acceptor.unbind() blocks forever if user tried to unbind unbound address.
Modified:
directory/network/trunk/src/java/org/apache/mina/io/datagram/DatagramAcceptor.java
directory/network/trunk/src/java/org/apache/mina/io/socket/SocketAcceptor.java
Modified: directory/network/trunk/src/java/org/apache/mina/io/datagram/DatagramAcceptor.java
URL: http://svn.apache.org/viewcvs/directory/network/trunk/src/java/org/apache/mina/io/datagram/DatagramAcceptor.java?view=diff&r1=158859&r2=158860
==============================================================================
--- directory/network/trunk/src/java/org/apache/mina/io/datagram/DatagramAcceptor.java (original)
+++ directory/network/trunk/src/java/org/apache/mina/io/datagram/DatagramAcceptor.java Wed Mar 23 18:15:59 2005
@@ -460,25 +460,21 @@
}
DatagramChannel ch = ( DatagramChannel ) channels.get( request.address );
- if( ch == null )
+ // close the channel
+ try
{
- synchronized( request )
+ if( ch == null )
{
- request.done = true;
request.exception = new IllegalArgumentException(
"Address not bound: " + request.address );
}
- continue;
- }
-
- SelectionKey key = ch.keyFor( selector );
- key.cancel();
- selector.wakeup(); // wake up again to trigger thread death
-
- // close the channel
- try
- {
- ch.close();
+ else
+ {
+ SelectionKey key = ch.keyFor( selector );
+ key.cancel();
+ selector.wakeup(); // wake up again to trigger thread death
+ ch.close();
+ }
}
catch( IOException e )
{
Modified: directory/network/trunk/src/java/org/apache/mina/io/socket/SocketAcceptor.java
URL: http://svn.apache.org/viewcvs/directory/network/trunk/src/java/org/apache/mina/io/socket/SocketAcceptor.java?view=diff&r1=158859&r2=158860
==============================================================================
--- directory/network/trunk/src/java/org/apache/mina/io/socket/SocketAcceptor.java (original)
+++ directory/network/trunk/src/java/org/apache/mina/io/socket/SocketAcceptor.java Wed Mar 23 18:15:59 2005
@@ -317,25 +317,22 @@
}
ServerSocketChannel ssc = ( ServerSocketChannel ) channels.get( request.address );
- if( ssc == null )
+
+ // close the channel
+ try
{
- synchronized( request )
+ if( ssc == null )
{
- request.done = true;
request.exception = new IllegalArgumentException(
"Address not bound: " + request.address );
}
- continue;
- }
-
- SelectionKey key = ssc.keyFor( selector );
- key.cancel();
- selector.wakeup(); // wake up again to trigger thread death
-
- // close the channel
- try
- {
- ssc.close();
+ else
+ {
+ SelectionKey key = ssc.keyFor( selector );
+ key.cancel();
+ selector.wakeup(); // wake up again to trigger thread death
+ ssc.close();
+ }
}
catch( IOException e )
{