diff options
author | Mark Wielaard <mark@klomp.org> | 2003-11-28 23:43:18 +0000 |
---|---|---|
committer | Mark Wielaard <mark@klomp.org> | 2003-11-28 23:43:18 +0000 |
commit | 051fbd476799474c9d9f017812892bcba37bb4f3 (patch) | |
tree | de0fead09e53bc49543dd59acabcdffafb868ddf | |
parent | 3bb32f3d21d5df673dfb61e4d1f1a7f037590127 (diff) | |
download | classpath-051fbd476799474c9d9f017812892bcba37bb4f3.tar.gz |
2003-11-28 Michael Koch <konqueror@gmx.de>
* gnu/java/net/PlainDatagramSocketImpl.java
(sendTo): Added offset argument.
* include/gnu_java_net_PlainDatagramSocketImpl.h: Regenerated.
* native/jni/java-net/gnu_java_net_PlainDatagramSocketImpl.c
(receive0): Use completely available space in buffer array.
(sendTo): Use offset.
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | gnu/java/net/PlainDatagramSocketImpl.java | 5 | ||||
-rw-r--r-- | include/gnu_java_net_PlainDatagramSocketImpl.h | 2 | ||||
-rw-r--r-- | native/jni/java-net/gnu_java_net_PlainDatagramSocketImpl.c | 26 |
4 files changed, 28 insertions, 14 deletions
@@ -1,3 +1,12 @@ +2003-11-28 Michael Koch <konqueror@gmx.de> + + * gnu/java/net/PlainDatagramSocketImpl.java + (sendTo): Added offset argument. + * include/gnu_java_net_PlainDatagramSocketImpl.h: Regenerated. + * native/jni/java-net/gnu_java_net_PlainDatagramSocketImpl.c + (receive0): Use completely available space in buffer array. + (sendTo): Use offset. + 2003-11-28 Ito Kazumitsu <kaz@maczuka.gcd.org> * java/text/SimpleDateFormat.java (compileFormat): diff --git a/gnu/java/net/PlainDatagramSocketImpl.java b/gnu/java/net/PlainDatagramSocketImpl.java index d7f78660b..358205fac 100644 --- a/gnu/java/net/PlainDatagramSocketImpl.java +++ b/gnu/java/net/PlainDatagramSocketImpl.java @@ -169,12 +169,13 @@ public final class PlainDatagramSocketImpl extends DatagramSocketImpl * @param addr The address to send to * @param port The port to send to * @param buf The buffer to send + * @param offset The offset of the data in the buffer to send * @param len The length of the data to send * * @exception IOException If an error occurs */ private native void sendto (InetAddress addr, int port, - byte[] buf, int len) + byte[] buf, int offset, int len) throws IOException; /** @@ -189,7 +190,7 @@ public final class PlainDatagramSocketImpl extends DatagramSocketImpl synchronized(SEND_LOCK) { sendto(packet.getAddress(), packet.getPort(), packet.getData(), - packet.getLength()); + packet.getOffset(), packet.getLength()); } } diff --git a/include/gnu_java_net_PlainDatagramSocketImpl.h b/include/gnu_java_net_PlainDatagramSocketImpl.h index 40a5a033b..9d1aa8ba4 100644 --- a/include/gnu_java_net_PlainDatagramSocketImpl.h +++ b/include/gnu_java_net_PlainDatagramSocketImpl.h @@ -12,7 +12,7 @@ extern "C" extern JNIEXPORT void JNICALL Java_gnu_java_net_PlainDatagramSocketImpl_bind (JNIEnv *env, jobject, jint, jobject); extern JNIEXPORT void JNICALL Java_gnu_java_net_PlainDatagramSocketImpl_create (JNIEnv *env, jobject); -extern JNIEXPORT void JNICALL Java_gnu_java_net_PlainDatagramSocketImpl_sendto (JNIEnv *env, jobject, jobject, jint, jbyteArray, jint); +extern JNIEXPORT void JNICALL Java_gnu_java_net_PlainDatagramSocketImpl_sendto (JNIEnv *env, jobject, jobject, jint, jbyteArray, jint, jint); extern JNIEXPORT void JNICALL Java_gnu_java_net_PlainDatagramSocketImpl_receive0 (JNIEnv *env, jobject, jobject); extern JNIEXPORT void JNICALL Java_gnu_java_net_PlainDatagramSocketImpl_setOption (JNIEnv *env, jobject, jint, jobject); extern JNIEXPORT jobject JNICALL Java_gnu_java_net_PlainDatagramSocketImpl_getOption (JNIEnv *env, jobject, jint); diff --git a/native/jni/java-net/gnu_java_net_PlainDatagramSocketImpl.c b/native/jni/java-net/gnu_java_net_PlainDatagramSocketImpl.c index 0380adb51..779ad5679 100644 --- a/native/jni/java-net/gnu_java_net_PlainDatagramSocketImpl.c +++ b/native/jni/java-net/gnu_java_net_PlainDatagramSocketImpl.c @@ -161,7 +161,7 @@ Java_gnu_java_net_PlainDatagramSocketImpl_receive0(JNIEnv *env, jobject this, jobject packet) { #ifndef WITHOUT_NETWORK - unsigned int addr, port, len, bytes_read; + unsigned int addr, port, maxlen, offset, bytes_read; jclass cls, addr_cls; jmethodID mid; jarray arr; @@ -174,7 +174,8 @@ Java_gnu_java_net_PlainDatagramSocketImpl_receive0(JNIEnv *env, jobject this, addr = 0; port = 0; - len = 0; + maxlen = 0; + offset = 0; bytes_read = 0; if(packet == NULL) @@ -205,26 +206,29 @@ Java_gnu_java_net_PlainDatagramSocketImpl_receive0(JNIEnv *env, jobject this, return; } - /* Now get the length from the packet */ - mid = (*env)->GetMethodID(env, cls, "getLength", "()I"); + /* Now get the offset from the packet */ + mid = (*env)->GetMethodID(env, cls, "getOffset", "()I"); if (mid == NULL) { - JCL_ThrowException(env, IO_EXCEPTION, "Internal error: getLength"); + JCL_ThrowException(env, IO_EXCEPTION, "Internal error: getOffset"); return; } - len = (*env)->CallIntMethod(env, packet, mid); + offset = (*env)->CallIntMethod(env, packet, mid); if ((*env)->ExceptionOccurred(env)) { - JCL_ThrowException(env, IO_EXCEPTION, "Internal error: call getLength"); + JCL_ThrowException(env, IO_EXCEPTION, "Internal error: call getOffset"); return; } - DBG("PlainDatagramSocketImpl.receive(): Got the length\n"); + DBG("PlainDatagramSocketImpl.receive(): Got the offset\n"); + + /* Now get the maximal available length from the packet */ + maxlen = (*env)->GetArrayLength(env,arr) - offset; /* Receive the packet */ /* should we try some sort of validation on the length? */ - bytes_read = _javanet_recvfrom(env, this, arr, 0, len, &addr, &port); + bytes_read = _javanet_recvfrom(env, this, arr, offset, maxlen, &addr, &port); if ((bytes_read == -1) || (*env)->ExceptionOccurred(env)) { JCL_ThrowException(env, IO_EXCEPTION, "Internal error: receive"); @@ -341,7 +345,7 @@ Java_gnu_java_net_PlainDatagramSocketImpl_receive0(JNIEnv *env, jobject this, JNIEXPORT void JNICALL Java_gnu_java_net_PlainDatagramSocketImpl_sendto(JNIEnv *env, jobject this, jobject addr, jint port, jarray buf, - jint len) + jint offset, jint len) { #ifndef WITHOUT_NETWORK jint netAddress; @@ -355,7 +359,7 @@ Java_gnu_java_net_PlainDatagramSocketImpl_sendto(JNIEnv *env, jobject this, DBG("PlainDatagramSocketImpl.sendto(): have addr\n"); - _javanet_sendto(env, this, buf, 0, len, netAddress, port); + _javanet_sendto(env, this, buf, offset, len, netAddress, port); if ((*env)->ExceptionOccurred(env)) { JCL_ThrowException(env, IO_EXCEPTION, "Internal error: send data"); return; } |