diff options
author | Mark Wielaard <mark@klomp.org> | 2006-01-12 11:56:07 +0000 |
---|---|---|
committer | Mark Wielaard <mark@klomp.org> | 2006-01-12 11:56:07 +0000 |
commit | d3e81786e764124c1fefb3842dc48a806accc297 (patch) | |
tree | 53424353a00c1a3117728525eccbf4d2552aad30 | |
parent | 119217eccad563009f38a13ca4060ed08d07c40a (diff) | |
download | classpath-d3e81786e764124c1fefb3842dc48a806accc297.tar.gz |
* 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.
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | native/jni/java-net/gnu_java_net_VMPlainDatagramSocketImpl.c | 6 | ||||
-rw-r--r-- | vm/reference/gnu/java/net/VMPlainDatagramSocketImpl.java | 2 |
3 files changed, 14 insertions, 1 deletions
@@ -1,5 +1,12 @@ 2006-01-12 Mark Wielaard <mark@klomp.org> + * 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. + +2006-01-12 Mark Wielaard <mark@klomp.org> + * native/jni/java-net/javanet.c (_javanet_recvfrom): Return -1 when other side orderly closed connection. * vm/reference/gnu/java/net/VMPlainSocketImpl.java diff --git a/native/jni/java-net/gnu_java_net_VMPlainDatagramSocketImpl.c b/native/jni/java-net/gnu_java_net_VMPlainDatagramSocketImpl.c index 6d6dace6f..1b3cb97e0 100644 --- a/native/jni/java-net/gnu_java_net_VMPlainDatagramSocketImpl.c +++ b/native/jni/java-net/gnu_java_net_VMPlainDatagramSocketImpl.c @@ -211,6 +211,12 @@ Java_gnu_java_net_VMPlainDatagramSocketImpl_nativeReceive(JNIEnv *env, /* 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); diff --git a/vm/reference/gnu/java/net/VMPlainDatagramSocketImpl.java b/vm/reference/gnu/java/net/VMPlainDatagramSocketImpl.java index 1df675476..958c21874 100644 --- a/vm/reference/gnu/java/net/VMPlainDatagramSocketImpl.java +++ b/vm/reference/gnu/java/net/VMPlainDatagramSocketImpl.java @@ -155,7 +155,7 @@ public final class VMPlainDatagramSocketImpl 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)); |