harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Regis <xu.re...@gmail.com>
Subject Re: [general] Code Freeze for Milestone 5.0M14 and 6.0M2
Date Thu, 20 May 2010 08:58:12 GMT
On 2010-05-20 16:46, Mark Hindess wrote:
>
> In message<4BF4EC09.3090407@gmail.com>, Regis writes:
>>
>> On 2010-05-19 20:45, Catherine Hope wrote:
>>> I also see these 2 tests failing in the same way.  It seems to be
>>> caused by Regis' commit 944119 "SocketChannelImpl.SocketAdapter's
>>> remote address should be updated after channel connected" on
>>> 14/05/2010.  It could be that the tests are invalid though -
>>> the first one is checking that the SocketAddress returned by
>>> getRemoteAddress() is a different object to the one that was passed
>>> to connect(), though as SocketAddress is immutable would this cause
>>> a problem?
>>>
>>
>> The test case expect behaviors to be exactly same with RI, but I don't
>> think it's a big deal, I intend to delete this assert.
>>
>> for - testSocket_NonBlock_BasicStatusAfterConnect, isConnected()
>> should check first, following patch can fix it. And again, the test
>> failed at same line as BasicStatusAfterConnect.
>>
>> Following patch can fix these failures, I'd like to commit it if
>> second committer agree this.
>
> -1
>
> I am +1 for the patch to SocketChannelImpl.java because this fixes
> behaviour.
>
> However, I am -1 for the patch to SocketChannelTest.java because we
> don't fix broken tests during code freeze.
>
> -Mark.
>

All right, how about this (create new InetSocketAddress instance everytime):

Index: 
modules/nio/src/main/java/common/org/apache/harmony/nio/internal/SocketChannelImpl.java
=====================================================================
--- 
modules/nio/src/main/java/common/org/apache/harmony/nio/internal/SocketChannelImpl.java
+++ 
modules/nio/src/main/java/common/org/apache/harmony/nio/internal/SocketChannelImpl.java
@@ -1008,6 +1008,10 @@ class SocketChannelImpl extends SocketChannel implements 
FileDescriptorHandler {

          @Override
          public InetAddress getInetAddress() {
+            if (!isConnected()) {
+                return null;
+            }
+
              if (channel.connectAddress == null && super.getInetAddress() != 
null) {
                  channel.connectAddress = new 
InetSocketAddress(super.getInetAddress(), super.getPort());
              }
@@ -1019,14 +1023,20 @@ class SocketChannelImpl extends SocketChannel implements 
FileDescriptorHandler {

          @Override
          public SocketAddress getRemoteSocketAddress() {
+            if (!isConnected()) {
+                return null;
+            }
              if (channel.connectAddress == null && super.getInetAddress() != 
null) {
                  channel.connectAddress = new 
InetSocketAddress(super.getInetAddress(), super.getPort());
              }
-            return channel.connectAddress;
+            return new InetSocketAddress(channel.connectAddress.getAddress(), 
channel.connectAddress.getPort());
          }

          @Override
          public int getPort() {
+            if (!isConnected()) {
+                return 0;
+            }
              if (channel.connectAddress == null && super.getInetAddress() != 
null) {
                  channel.connectAddress = new 
InetSocketAddress(super.getInetAddress(), super.getPort());
              }



-- 
Best Regards,
Regis.

Mime
View raw message