On 2010-05-20 17:19, Mark Hindess wrote:
>
> In message<4BF4F9A4.6050201@gmail.com>, Regis writes:
>>
>> 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.
>>
>> All right, how about this (create new InetSocketAddress instance everytime):
>
> -1
>
> Fix the behaviour for testSocket_NonBlock_BasicStatusAfterConnect.
>
> Do not make any changes for the other failure - i.e. leave it failing -
> and remove it after the code freeze.
>
> -Mark.
>
>
>
Do you mean this?
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,6 +1023,9 @@ 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());
}
@@ -1027,6 +1034,9 @@ class SocketChannelImpl extends SocketChannel implements
FileDescriptorHandler {
@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.
|