[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug classpath/31882] New: VMPlainDatagramSocketImpl.receive truncates m
From: |
robert dot dodier at gmail dot com |
Subject: |
[Bug classpath/31882] New: VMPlainDatagramSocketImpl.receive truncates messages to the length of the first message received |
Date: |
9 May 2007 18:21:21 -0000 |
VMPlainDatagramSocketImpl.receive effectively truncates messages to the length
of the first message received with a given DatagramPacket object.
VMPlainDatagramSocketImpl.receive calls nativeReceive with incorrect length
argument, namely the return value of DatagramPacket.getLength, which is not
necessarily the length of the datagram packet buffer. DatagramPacket.getLength
returns the instance variable length, which is modified by
DatagramPacket.setData (i.e. this.length can be modified to be something other
than the size of the buffer; that is the case if some data has been received
already).
I have determined empirically (by running the same code with Sun's
implementation and with Classpath) that Sun's Java implementation DOES NOT ACT
THE SAME AS CLASSPATH in this respect. DatagramSocket.receive can receive bytes
up to the size of the datagram packet buffer; it is not limited by the size of
a previously received message.
VMPlainDatagramSocketImpl.receive should call nativeReceive so that the entire
datagram packet buffer is available to receive data. I believe
packet.getData().length - packet.getOffset() is the correct quantity, not
getLength().
However I see that there has been some previous hacking on this. I wonder why
that is. The commit message for the following change says only "Use
packet.getLength()."
http://cvs.savannah.gnu.org/viewcvs/classpath/vm/reference/gnu/java/net/VMPlainDatagramSocketImpl.java?root=classpath&r1=1.1&r2=1.2
------------ begin diff ------------
nativeReceive(socket, packet.getData(), packet.getOffset(),
- packet.getData().length - packet.getOffset(),
+ packet.getLength(),
receiveFromAddress, receiveFromPort, receivedLength);
------------- end diff -------------
--
Summary: VMPlainDatagramSocketImpl.receive truncates messages to
the length of the first message received
Product: classpath
Version: 0.90
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: classpath
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: robert dot dodier at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31882
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Bug classpath/31882] New: VMPlainDatagramSocketImpl.receive truncates messages to the length of the first message received,
robert dot dodier at gmail dot com <=