You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by tr...@apache.org on 2007/07/09 06:04:58 UTC
svn commit: r554521 - in /mina/branches:
1.0/core/src/main/java/org/apache/mina/transport/socket/nio/support/
1.1/core/src/main/java/org/apache/mina/common/
1.1/core/src/main/java/org/apache/mina/filter/codec/
1.1/core/src/main/java/org/apache/mina/tra...
Author: trustin
Date: Sun Jul 8 21:04:55 2007
New Revision: 554521
URL: http://svn.apache.org/viewvc?view=rev&rev=554521
Log:
Fixed issue: DIRMINA-395 (DatagramSessionImpl getLocalAddress doesn't return the local address)
* Applied Adam's patch. It seems like trunk is OK from this bug.
Modified:
mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java
mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java
mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java
mina/branches/1.1/core/src/main/java/org/apache/mina/common/ByteBuffer.java
mina/branches/1.1/core/src/main/java/org/apache/mina/common/ByteBufferProxy.java
mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java
mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java
mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java
mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java
Modified: mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java
URL: http://svn.apache.org/viewvc/mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java?view=diff&rev=554521&r1=554520&r2=554521
==============================================================================
--- mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java (original)
+++ mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java Sun Jul 8 21:04:55 2007
@@ -226,10 +226,16 @@
}
// If a new session needs to be created.
+ // Note that the local address is the service address in the
+ // acceptor side, and I didn't call getLocalSocketAddress().
+ // This avoids strange cases where getLocalSocketAddress() on the
+ // underlying socket would return an IPv6 address while the
+ // specified service address is an IPv4 address.
DatagramSessionImpl datagramSession = new DatagramSessionImpl(
- wrapper, this,
- req.config, ch, req.handler,
- req.address );
+ wrapper, this,
+ req.config, ch, req.handler,
+ req.address,
+ req.address );
datagramSession.setRemoteAddress( remoteAddress );
datagramSession.setSelectionKey( key );
Modified: mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java
URL: http://svn.apache.org/viewvc/mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java?view=diff&rev=554521&r1=554520&r2=554521
==============================================================================
--- mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java (original)
+++ mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java Sun Jul 8 21:04:55 2007
@@ -585,7 +585,8 @@
wrapper, this,
req.config,
req.channel, req.handler,
- req.channel.socket().getRemoteSocketAddress() );
+ req.channel.socket().getRemoteSocketAddress(),
+ req.channel.socket().getLocalSocketAddress());
// AbstractIoFilterChain will notify the connect future.
session.setAttribute( AbstractIoFilterChain.CONNECT_FUTURE, req );
Modified: mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java
URL: http://svn.apache.org/viewvc/mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java?view=diff&rev=554521&r1=554520&r2=554521
==============================================================================
--- mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java (original)
+++ mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java Sun Jul 8 21:04:55 2007
@@ -69,7 +69,8 @@
DatagramService managerDelegate,
IoServiceConfig serviceConfig,
DatagramChannel ch, IoHandler defaultHandler,
- SocketAddress serviceAddress )
+ SocketAddress serviceAddress,
+ SocketAddress localAddress)
{
this.wrapperManager = wrapperManager;
this.managerDelegate = managerDelegate;
@@ -79,10 +80,8 @@
this.handler = defaultHandler;
this.remoteAddress = ch.socket().getRemoteSocketAddress();
- // We didn't set the localhost by calling getLocalSocketAddress() to avoid
- // the case that getLocalSocketAddress() returns IPv6 address while
- // serviceAddress represents the same address in IPv4.
- this.localAddress = this.serviceAddress = serviceAddress;
+ this.serviceAddress = serviceAddress;
+ this.localAddress = localAddress;
this.serviceConfig = serviceConfig;
// Apply the initial session settings
Modified: mina/branches/1.1/core/src/main/java/org/apache/mina/common/ByteBuffer.java
URL: http://svn.apache.org/viewvc/mina/branches/1.1/core/src/main/java/org/apache/mina/common/ByteBuffer.java?view=diff&rev=554521&r1=554520&r2=554521
==============================================================================
--- mina/branches/1.1/core/src/main/java/org/apache/mina/common/ByteBuffer.java (original)
+++ mina/branches/1.1/core/src/main/java/org/apache/mina/common/ByteBuffer.java Sun Jul 8 21:04:55 2007
@@ -152,7 +152,7 @@
* @noinspection StaticNonFinalField
* @see ByteBufferAllocator
*/
-public abstract class ByteBuffer implements Comparable
+public abstract class ByteBuffer implements Comparable<ByteBuffer>
{
private static ByteBufferAllocator allocator = new PooledByteBufferAllocator();
@@ -614,9 +614,8 @@
return true;
}
- public int compareTo( Object o )
+ public int compareTo( ByteBuffer that )
{
- ByteBuffer that = (ByteBuffer)o;
int n = this.position() + Math.min( this.remaining(), that.remaining() );
for( int i = this.position(), j = that.position(); i < n; i ++, j ++ )
{
@@ -1644,7 +1643,7 @@
protected ObjectStreamClass readClassDescriptor() throws IOException, ClassNotFoundException
{
String className = readUTF();
- Class clazz = Class.forName( className, true, classLoader );
+ Class<?> clazz = Class.forName( className, true, classLoader );
return ObjectStreamClass.lookup( clazz );
}
};
Modified: mina/branches/1.1/core/src/main/java/org/apache/mina/common/ByteBufferProxy.java
URL: http://svn.apache.org/viewvc/mina/branches/1.1/core/src/main/java/org/apache/mina/common/ByteBufferProxy.java?view=diff&rev=554521&r1=554520&r2=554521
==============================================================================
--- mina/branches/1.1/core/src/main/java/org/apache/mina/common/ByteBufferProxy.java (original)
+++ mina/branches/1.1/core/src/main/java/org/apache/mina/common/ByteBufferProxy.java Sun Jul 8 21:04:55 2007
@@ -252,9 +252,9 @@
return buf.equals( ob );
}
- public int compareTo( Object o )
+ public int compareTo( ByteBuffer that )
{
- return buf.compareTo( o );
+ return buf.compareTo( that );
}
public ByteOrder order()
Modified: mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java
URL: http://svn.apache.org/viewvc/mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java?view=diff&rev=554521&r1=554520&r2=554521
==============================================================================
--- mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java (original)
+++ mina/branches/1.1/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java Sun Jul 8 21:04:55 2007
@@ -46,7 +46,7 @@
private static final String DECODER_LOCK = ProtocolCodecFilter.class.getName() + ".decoderLock";
- private static final Class[] EMPTY_PARAMS = new Class[0];
+ private static final Class<?>[] EMPTY_PARAMS = new Class[0];
private static final ByteBuffer EMPTY_BUFFER = ByteBuffer.wrap( new byte[0] );
private final ProtocolCodecFactory factory;
Modified: mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java
URL: http://svn.apache.org/viewvc/mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java?view=diff&rev=554521&r1=554520&r2=554521
==============================================================================
--- mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java (original)
+++ mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java Sun Jul 8 21:04:55 2007
@@ -217,9 +217,15 @@
}
// If a new session needs to be created.
+ // Note that the local address is the service address in the
+ // acceptor side, and I didn't call getLocalSocketAddress().
+ // This avoids strange cases where getLocalSocketAddress() on the
+ // underlying socket would return an IPv6 address while the
+ // specified service address is an IPv4 address.
DatagramSessionImpl datagramSession = new DatagramSessionImpl(
wrapper, this,
req.config, ch, req.handler,
+ req.address,
req.address );
datagramSession.setRemoteAddress( remoteAddress );
datagramSession.setSelectionKey( key );
Modified: mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java
URL: http://svn.apache.org/viewvc/mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java?view=diff&rev=554521&r1=554520&r2=554521
==============================================================================
--- mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java (original)
+++ mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java Sun Jul 8 21:04:55 2007
@@ -545,7 +545,8 @@
wrapper, this,
req.config,
req.channel, req.handler,
- req.channel.socket().getRemoteSocketAddress() );
+ req.channel.socket().getRemoteSocketAddress(),
+ req.channel.socket().getLocalSocketAddress());
// AbstractIoFilterChain will notify the connect future.
session.setAttribute( AbstractIoFilterChain.CONNECT_FUTURE, req );
Modified: mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java
URL: http://svn.apache.org/viewvc/mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java?view=diff&rev=554521&r1=554520&r2=554521
==============================================================================
--- mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java (original)
+++ mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java Sun Jul 8 21:04:55 2007
@@ -71,7 +71,8 @@
DatagramService managerDelegate,
IoServiceConfig serviceConfig,
DatagramChannel ch, IoHandler defaultHandler,
- SocketAddress serviceAddress )
+ SocketAddress serviceAddress,
+ SocketAddress localAddress)
{
this.wrapperManager = wrapperManager;
this.managerDelegate = managerDelegate;
@@ -81,10 +82,8 @@
this.handler = defaultHandler;
this.remoteAddress = ch.socket().getRemoteSocketAddress();
- // We didn't set the localhost by calling getLocalSocketAddress() to avoid
- // the case that getLocalSocketAddress() returns IPv6 address while
- // serviceAddress represents the same address in IPv4.
- this.localAddress = this.serviceAddress = serviceAddress;
+ this.serviceAddress = serviceAddress;
+ this.localAddress = localAddress;
this.serviceConfig = serviceConfig;
// Apply the initial session settings