[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[cp-patches] Re: FYI: Some more net regression fixes
From: |
Mark Wielaard |
Subject: |
[cp-patches] Re: FYI: Some more net regression fixes |
Date: |
Thu, 12 Jan 2006 12:56:15 +0100 |
On Thu, 2006-01-12 at 11:35 +0100, Mark Wielaard wrote:
> There are only 2 regressions left which I still need to investigate:
>
> -PASS: gnu.testlet.java.net.DatagramPacket.DatagramPacketReceive2:
> DatagramPacket receive Test B errorCount=0 (number 1)
> +FAIL: gnu.testlet.java.net.DatagramPacket.DatagramPacketReceive2:
> DatagramPacket receive Test B errorCount=15 (number 1)
Found this one. DatagramPacket has a getLength() method that should be
used to determine how much bytes we want.
2006-01-12 Mark Wielaard <address@hidden>
* vm/reference/gnu/java/net/VMPlainDatagramSocketImpl.java
(receive): Use packet.getLength().
* native/jni/java-net/gnu_java_net_VMPlainDatagramSocketImpl.c
(nativeReceive): Check whether the receiver wants zero bytes.
It also accounts for the somewhat strange situation where someone
explicitly doesn't want to receive no bytes (although I am not sure that
actually happens in real code, it looks like something that only happens
in regression suites).
> -PASS: gnu.testlet.java.net.DatagramSocket.DatagramSocketTest2:
> invalid_send_addr (number 2)
> +FAIL: gnu.testlet.java.net.DatagramSocket.DatagramSocketTest2:
> invalid_send_addr: test 2 - Should NOT throw IOException (number 1)
This is another stupid corner case that I am not fixing for now. The
test explicitly gives a null address and expects a NullPointerException,
but gets an IOException.
Cheers,
Mark
Index: native/jni/java-net/gnu_java_net_VMPlainDatagramSocketImpl.c
===================================================================
RCS file:
/cvsroot/classpath/classpath/native/jni/java-net/gnu_java_net_VMPlainDatagramSocketImpl.c,v
retrieving revision 1.4
diff -u -r1.4 gnu_java_net_VMPlainDatagramSocketImpl.c
--- native/jni/java-net/gnu_java_net_VMPlainDatagramSocketImpl.c 12 Jan
2006 09:37:31 -0000 1.4
+++ native/jni/java-net/gnu_java_net_VMPlainDatagramSocketImpl.c 12 Jan
2006 11:55:39 -0000
@@ -211,6 +211,12 @@
/* Receive the packet */
/* should we try some sort of validation on the length? */
(*bytes_read) = _javanet_recvfrom(env, obj, arr, offset, length, &addr,
port);
+
+ /* Special case the strange situation where the receiver didn't want any
+ bytes. */
+ if (length == 0 && (*bytes_read) == -1)
+ *bytes_read = 0;
+
if ((*bytes_read) == -1)
{
(*env)->ReleaseIntArrayElements(env, receivedFromPort, (jint*)port, 0);
Index: vm/reference/gnu/java/net/VMPlainDatagramSocketImpl.java
===================================================================
RCS file:
/cvsroot/classpath/classpath/vm/reference/gnu/java/net/VMPlainDatagramSocketImpl.java,v
retrieving revision 1.1
diff -u -r1.1 VMPlainDatagramSocketImpl.java
--- vm/reference/gnu/java/net/VMPlainDatagramSocketImpl.java 4 Jan 2006
20:46:47 -0000 1.1
+++ vm/reference/gnu/java/net/VMPlainDatagramSocketImpl.java 12 Jan 2006
11:55:39 -0000
@@ -155,7 +155,7 @@
int[] receivedLength = new int[1];
nativeReceive(socket, packet.getData(), packet.getOffset(),
- packet.getData().length - packet.getOffset(),
+ packet.getLength(),
receiveFromAddress, receiveFromPort, receivedLength);
packet.setAddress(InetAddress.getByAddress(receiveFromAddress));
signature.asc
Description: This is a digitally signed message part