This is the mail archive of the java-patches@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

FYI: Patch: gnu.java.net.PlainDatagramSocketImpl


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi list,



I will commit the attached patch to fix receiving and sending of udp 
packets reported by Norbert Freese.

I haven't looked at the Win32 code but it may have the same problems.


Michael
- -- 
Homepage: http://www.worldforge.org/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (GNU/Linux)

iD8DBQE/v6KwWSOgCCdjSDsRAow3AJ9R/o0iLkD6Vog0Cm8qLMt3BeeXRQCeM1xO
zilG+j1OcmbETqQRMkTfnKc=
=9bfl
-----END PGP SIGNATURE-----
Index: ChangeLog
===================================================================
RCS file: /cvs/gcc/gcc/libjava/ChangeLog,v
retrieving revision 1.2351
diff -u -b -B -r1.2351 ChangeLog
--- ChangeLog	22 Nov 2003 15:13:00 -0000	1.2351
+++ ChangeLog	22 Nov 2003 16:24:29 -0000
@@ -1,5 +1,12 @@
 2003-11-22  Michael Koch  <konqueror@gmx.de>
 
+	* gnu/java/net/natPlainDatagramSocketImplPosix.cc
+	(peekData): Use offset and maximal free space in datagram packet.
+	(receive): Likewise.
+	(send): Use offset in datagram packet.
+
+2003-11-22  Michael Koch  <konqueror@gmx.de>
+
 	* gnu/java/nio/DatagramChannelImpl.java
 	(getNativeFD): Use getPlainDatagramSocketImpl().
 	* gnu/java/nio/NIODatagramSocket.java
Index: gnu/java/net/natPlainDatagramSocketImplPosix.cc
===================================================================
RCS file: /cvs/gcc/gcc/libjava/gnu/java/net/natPlainDatagramSocketImplPosix.cc,v
retrieving revision 1.3
diff -u -b -B -r1.3 natPlainDatagramSocketImplPosix.cc
--- gnu/java/net/natPlainDatagramSocketImplPosix.cc	29 Oct 2003 10:33:57 -0000	1.3
+++ gnu/java/net/natPlainDatagramSocketImplPosix.cc	22 Nov 2003 16:24:29 -0000
@@ -208,7 +208,8 @@
   // FIXME: Deal with Multicast and if the socket is connected.
   union SockAddr u;
   socklen_t addrlen = sizeof(u);
-  jbyte *dbytes = elements (p->getData());
+  jbyte *dbytes = elements (p->getData()) + p->getOffset();
+  jint maxlen = p->getData()->length - p->getOffset();
   ssize_t retlen = 0;
 
   // Do timeouts via select since SO_RCVTIMEO is not always available.
@@ -228,7 +229,7 @@
     }
 
   retlen =
-    ::recvfrom (native_fd, (char *) dbytes, p->getLength(), MSG_PEEK, (sockaddr*) &u,
+    ::recvfrom (native_fd, (char *) dbytes, maxlen, MSG_PEEK, (sockaddr*) &u,
       &addrlen);
   if (retlen < 0)
     goto error;
@@ -290,7 +291,7 @@
   jbyte *bytes = elements (haddress);
   int len = haddress->length;
   struct sockaddr *ptr = (struct sockaddr *) &u.address;
-  jbyte *dbytes = elements (p->getData());
+  jbyte *dbytes = elements (p->getData()) + p->getOffset();
   if (len == 4)
     {
       u.address.sin_family = AF_INET;
@@ -327,7 +328,8 @@
   // FIXME: Deal with Multicast and if the socket is connected.
   union SockAddr u;
   socklen_t addrlen = sizeof(u);
-  jbyte *dbytes = elements (p->getData());
+  jbyte *dbytes = elements (p->getData()) + p->getOffset();
+  jint maxlen = p->getData()->length - p->getOffset();
   ssize_t retlen = 0;
 
   // Do timeouts via select since SO_RCVTIMEO is not always available.
@@ -347,7 +349,7 @@
     }
 
   retlen =
-    ::recvfrom (native_fd, (char *) dbytes, p->getLength(), 0, (sockaddr*) &u,
+    ::recvfrom (native_fd, (char *) dbytes, maxlen, 0, (sockaddr*) &u,
       &addrlen);
   if (retlen < 0)
     goto error;

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]