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 [classlib][luni] Sending datagrams with 0 length
Date Mon, 19 Feb 2007 10:38:10 GMT
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