From: Michael Koch Date: Thu, 4 Dec 2003 10:59:56 +0000 (+0000) Subject: 2003-12-04 Michael Koch X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=477913522a0768c5653299757a06e8de0a8a7f7a;p=gcc.git 2003-12-04 Michael Koch * java/net/DatagramPacket.java (length): Made packge-private to make it accessible via CNI. (maxlen): New field. (DatagramPacket): Cleaned up. (setSocketAddress): Add message to exception. (setData): Call other setData(). (setData): Call setLength(). (setLength): Initialize maxlen too. * gnu/java/net/natPlainDatagramSocketImplPosix.cc (peekData): Get maximal length from maxlen field, set length field directly. (receive): Likewise. * gnu/java/net/natPlainDatagramSocketImplWin32.cc (peekData): Get maximal length from maxlen field, set length field directly. (receive): Likewise. From-SVN: r74278 --- diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 3153305bc1c..cd359848242 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,20 @@ +2003-12-04 Michael Koch + + * java/net/DatagramPacket.java + (length): Made packge-private to make it accessible via CNI. + (maxlen): New field. + (DatagramPacket): Cleaned up. + (setSocketAddress): Add message to exception. + (setData): Call other setData(). + (setData): Call setLength(). + (setLength): Initialize maxlen too. + * gnu/java/net/natPlainDatagramSocketImplPosix.cc (peekData): + Get maximal length from maxlen field, set length field directly. + (receive): Likewise. + * gnu/java/net/natPlainDatagramSocketImplWin32.cc (peekData): + Get maximal length from maxlen field, set length field directly. + (receive): Likewise. + 2003-12-03 Mohan Embar * gnu/java/nio/natSelectorImplPosix.cc diff --git a/libjava/gnu/java/net/natPlainDatagramSocketImplPosix.cc b/libjava/gnu/java/net/natPlainDatagramSocketImplPosix.cc index f0e7ed7629f..f296d12dfe8 100644 --- a/libjava/gnu/java/net/natPlainDatagramSocketImplPosix.cc +++ b/libjava/gnu/java/net/natPlainDatagramSocketImplPosix.cc @@ -209,7 +209,7 @@ gnu::java::net::PlainDatagramSocketImpl::peekData (::java::net::DatagramPacket * union SockAddr u; socklen_t addrlen = sizeof(u); jbyte *dbytes = elements (p->getData()) + p->getOffset(); - jint maxlen = p->getData()->length - p->getOffset(); + jint maxlen = p->maxlen - p->getOffset(); ssize_t retlen = 0; // Do timeouts via select since SO_RCVTIMEO is not always available. @@ -255,7 +255,7 @@ gnu::java::net::PlainDatagramSocketImpl::peekData (::java::net::DatagramPacket * p->setAddress (new ::java::net::InetAddress (raddr, NULL)); p->setPort (rport); - p->setLength ((jint) retlen); + p->length = (int) retlen; return rport; error: @@ -329,7 +329,7 @@ gnu::java::net::PlainDatagramSocketImpl::receive (::java::net::DatagramPacket *p union SockAddr u; socklen_t addrlen = sizeof(u); jbyte *dbytes = elements (p->getData()) + p->getOffset(); - jint maxlen = p->getData()->length - p->getOffset(); + jint maxlen = p->maxlen - p->getOffset(); ssize_t retlen = 0; // Do timeouts via select since SO_RCVTIMEO is not always available. @@ -375,7 +375,7 @@ gnu::java::net::PlainDatagramSocketImpl::receive (::java::net::DatagramPacket *p p->setAddress (new ::java::net::InetAddress (raddr, NULL)); p->setPort (rport); - p->setLength ((jint) retlen); + p->length = (jint) retlen; return; error: diff --git a/libjava/gnu/java/net/natPlainDatagramSocketImplWin32.cc b/libjava/gnu/java/net/natPlainDatagramSocketImplWin32.cc index 15105b963cb..18906a04bc4 100644 --- a/libjava/gnu/java/net/natPlainDatagramSocketImplWin32.cc +++ b/libjava/gnu/java/net/natPlainDatagramSocketImplWin32.cc @@ -203,7 +203,7 @@ gnu::java::net::PlainDatagramSocketImpl::peekData(::java::net::DatagramPacket *p union SockAddr u; socklen_t addrlen = sizeof(u); jbyte *dbytes = elements (p->getData()) + p->getOffset(); - jint maxlen = p->getData()->length - p->getOffset(); + jint maxlen = p->maxlen - p->getOffset(); ssize_t retlen = 0; if (timeout > 0) @@ -241,7 +241,7 @@ gnu::java::net::PlainDatagramSocketImpl::peekData(::java::net::DatagramPacket *p p->setAddress (new ::java::net::InetAddress (raddr, NULL)); p->setPort (rport); - p->setLength ((jint) retlen); + p->length = (jint) retlen; return rport; error: @@ -318,7 +318,7 @@ gnu::java::net::PlainDatagramSocketImpl::receive (::java::net::DatagramPacket *p union SockAddr u; socklen_t addrlen = sizeof(u); jbyte *dbytes = elements (p->getData()) + p->getOffset(); - jint maxlen = p->getData()->length - p->getOffset(); + jint maxlen = p->maxlen - p->getOffset(); ssize_t retlen = 0; if (timeout > 0) @@ -359,7 +359,7 @@ gnu::java::net::PlainDatagramSocketImpl::receive (::java::net::DatagramPacket *p p->setAddress (new ::java::net::InetAddress (raddr, NULL)); p->setPort (rport); - p->setLength ((jint) retlen); + p->length = (jint) retlen; return; error: diff --git a/libjava/java/net/DatagramPacket.java b/libjava/java/net/DatagramPacket.java index f9a9cd5aef5..f23364cd0af 100644 --- a/libjava/java/net/DatagramPacket.java +++ b/libjava/java/net/DatagramPacket.java @@ -78,13 +78,18 @@ public final class DatagramPacket private int offset; /** - * The length of the data buffer to send + * The length of the data buffer to send. */ - private int length; + int length; + /** + * The maximal length of the buffer. + */ + int maxlen; + /** * The address to which the packet should be sent or from which it - * was received + * was received. */ private InetAddress address; @@ -106,21 +111,9 @@ public final class DatagramPacket */ public DatagramPacket(byte[] buf, int offset, int length) { - if (buf == null) - throw new NullPointerException("Null buffer"); - if (offset < 0) - throw new IllegalArgumentException("Invalid offset: " + offset); - if (length < 0) - throw new IllegalArgumentException("Invalid length: " + length); - if (offset + length > buf.length) - throw new IllegalArgumentException("Potential buffer overflow - offset: " - + offset + " length: " + length); - - buffer = buf; - this.offset = offset; - this.length = length; - this.address = null; - this.port = -1; + setData(buf, offset, length); + address = null; + port = -1; } /** @@ -150,25 +143,9 @@ public final class DatagramPacket public DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port) { - if (buf == null) - throw new NullPointerException("Null buffer"); - if (offset < 0) - throw new IllegalArgumentException("Invalid offset: " + offset); - if (length < 0) - throw new IllegalArgumentException("Invalid length: " + length); - if (offset + length > buf.length) - throw new IllegalArgumentException("Potential buffer overflow - offset: " - + offset + " length: " + length); - if (port < 0 || port > 65535) - throw new IllegalArgumentException("Invalid port: " + port); - if (address == null) - throw new NullPointerException("Null address"); - - buffer = buf; - this.offset = offset; - this.length = length; - this.address = address; - this.port = port; + setData(buf, offset, length); + setAddress(address); + setPort(port); } /** @@ -203,8 +180,13 @@ public final class DatagramPacket SocketAddress address) throws SocketException { - this(buf, offset, length, ((InetSocketAddress)address).getAddress(), - ((InetSocketAddress)address).getPort()); + if (! (address instanceof InetSocketAddress)) + throw new IllegalArgumentException("unsupported address type"); + + InetSocketAddress tmp = (InetSocketAddress) address; + setData(buf, offset, length); + setAddress(tmp.getAddress()); + setPort(tmp.getPort()); } /** @@ -223,8 +205,7 @@ public final class DatagramPacket public DatagramPacket(byte[] buf, int length, SocketAddress address) throws SocketException { - this(buf, 0, length, ((InetSocketAddress)address).getAddress(), - ((InetSocketAddress)address).getPort()); + this(buf, 0, length, address); } /** @@ -330,9 +311,10 @@ public final class DatagramPacket public void setSocketAddress(SocketAddress address) throws IllegalArgumentException { - if (address == null) throw new IllegalArgumentException(); + if (address == null) + throw new IllegalArgumentException("address may not be null"); - InetSocketAddress tmp = (InetSocketAddress)address; + InetSocketAddress tmp = (InetSocketAddress) address; this.address = tmp.getAddress(); this.port = tmp.getPort(); } @@ -359,14 +341,9 @@ public final class DatagramPacket * * @since 1.1 */ - public synchronized void setData(byte[] buf) + public void setData(byte[] buf) { - // This form of setData requires setLength to be called separately - // and subsequently. - if (buf == null) - throw new NullPointerException("Null buffer"); - - buffer = buf; + setData(buf, 0, buf.length); } /** @@ -388,15 +365,10 @@ public final class DatagramPacket throw new NullPointerException("Null buffer"); if (offset < 0) throw new IllegalArgumentException("Invalid offset: " + offset); - if (length < 0) - throw new IllegalArgumentException("Invalid length: " + length); - if (offset + length > buf.length) - throw new IllegalArgumentException("Potential buffer overflow - offset: " - + offset + " length: " + length); buffer = buf; this.offset = offset; - this.length = length; + setLength(length); } /** @@ -418,6 +390,6 @@ public final class DatagramPacket + offset + " length: " + length); this.length = length; + this.maxlen = length; } -} // class DatagramPacket - +}