harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mikhail Markov" <mikhail.a.mar...@gmail.com>
Subject Re: [classlib][luni] Sending datagrams with 0 length
Date Mon, 19 Feb 2007 14:08:19 GMT
1) Here is UDP rfc: http://www.ietf.org/rfc/rfc768.txt.
It's clearly says that: "Length is the length in octets of this user
datagram including this header and the data. (This means the minimum value
of the length is eight.)", i.e. allows packets with empty data part.
2) JAVA API spec for UDP says nothing about empty data buffers, it only
prohibits using null data buffers and negative or greater that the packet's
data buffer lengths.
3) I found no info in Windows API forbidding sending UDP packets with zero
data length.

I'm wondering why these failures were not detected on Windows before...
Perhaps i have a "special" version of WinXP :-) or it requires some
additional configuring.

Regards,
Mikhail

On 2/19/07, Alexey Petrenko <alexey.a.petrenko@gmail.com> wrote:
>
> > Yes.
> OK.
> Is it OK to send zero sized UDP packet according to UDP spec and Win32
> documentation?
>
> SY, Alexey
>
> > On 2/19/07, Alexey Petrenko <alexey.a.petrenko@gmail.com> wrote:
> > >
> > > I did not quite understand.
> > > Does your test fail on RI on Win?
> > >
> > > SY, Alexey
> > >
> > > 2007/2/19, Mikhail Markov <mikhail.a.markov@gmail.com>:
> > > > Hi!
> > > >
> > > > I found a difference between sending datagram packets with zero
> length
> > > on
> > > > Windows and Linux:
> > > > The test below passes both on RI and Harmony on Linux, but fails on
> my
> > > > WinXP:
> > > > RI: Exception in thread "main" java.net.SocketException: The message
> is
> > > > larger than the maximum supported by the underlying transport:
> Datagram
> > > send
> > > > failed
> > > >        at java.net.PlainDatagramSocketImpl.send(Native Method)
> > > >        at java.net.DatagramSocket.send(DatagramSocket.java:612)
> > > >        at Test.main(Test.java:9)
> > > >
> > > > Harmony: Exception in thread "main" java.net.SocketException:
> (10040) A
> > > > message sent on a datagram socket was larger than the internal
> message
> > > > buffer or some other network limit, or the buffer used to receive a
> > > datagram
> > > > into was smaller than the datagram itself.
> > > >        at
> > > org.apache.harmony.luni.platform.OSNetworkSystem.sendDatagramImpl
> (Native
> > > > Method)
> > > >        at
> org.apache.harmony.luni.platform.OSNetworkSystem.sendDatagram(
> > > > OSNetworkSystem.java:155)
> > > >        at org.apache.harmony.luni.net.PlainDatagramSocketImpl.send(
> > > > PlainDatagramSocketImpl.java:275)
> > > >        at java.net.DatagramSocket.send(DatagramSocket.java:450)
> > > >        at Test.main(Test.java:9)
> > > >
> > > > Due to this I have 9 constantly failed testcases from
> > > DatagramChannelTest
> > > > (nio module):
> > > >  testSend_NoServerTwice(),
> > > >  testSend_NoServerNonBlockingTwice(),
> > > >  testReceiveSend_Block_Empty(),
> > > >  testReceiveSend_NonBlock_Empty(),
> > > >  testReceiveSend_Block_Empty_S2C(),
> > > >  testReceiveSend_NonBlock_Empty_S2C(),
> > > >  testReceiveSend_Block_Empty_C2S(),
> > > >  testReceiveSend_NonBlock_Empty_C2S(),
> > > >  testReceiveSend_Empty_S2S()
> > > > trying to send empty datagrams.
> > > >
> > > > I've filed the appropriate JIRA
> > > > https://issues.apache.org/jira/browse/HARMONY-3185, and even
> provided
> > > the
> > > > patch (which seems not correct :-).
> > > >
> > > > What should we do with these tests? Perhaps it makes sense to rework
> > > them to
> > > > avoid sending empty datagrams?
> > > >
> > > > Regards,
> > > > Mikhail
> > > >
> > > > Here is the test:
> > > > import java.net.DatagramSocket;
> > > > import java.net.DatagramPacket;
> > > > import java.net.InetAddress;
> > > >
> > > > public class Test {
> > > >    public static void main(String[] args) throws Exception {
> > > >        DatagramSocket ds = new DatagramSocket();
> > > >        DatagramPacket dp = new DatagramPacket(new byte[0], 0,
> > > > InetAddress.getLocalHost(), 5555);
> > > >        ds.send(dp);
> > > >    }
> > > > }
> > > >
> > >
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message