Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8053479

(dc) DatagramChannel.read() throws exception instead of discarding data when buffer too small

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: P4
    • Resolution: Fixed
    • Affects Version/s: 7, 8, 11, 15
    • Fix Version/s: 15
    • Component/s: core-libs
    • Subcomponent:
    • Resolved In Build:
      b07
    • CPU:
      x86
    • OS:
      windows

      Description

      If a DG channel is connected to a remote destination and read is called with a buffer that is smaller than the packet to be received, it is supposed to fill the buffer and discard the remaining data. On Windows, instead you get an exception with EMSGSIZE error ("Result too large")

      receive() works as expected. Given the different call paths, it might just require different flags to WSARecv() than are currently used.

      Test that shows the problem:

      import java.net.*;
      import java.nio.*;
      import java.nio.channels.*;
      import java.io.IOException;

      public class NioTest {
          public static void main (String[] args) throws Exception {

              InetAddress local = InetAddress.getLocalHost();
              InetSocketAddress bindaddr = new InetSocketAddress(local, 0);

              String host = local.getHostName();

              DatagramChannel c1 = DatagramChannel.open().bind(bindaddr);
              DatagramChannel c2 = DatagramChannel.open().bind(bindaddr);

              InetSocketAddress ad1 = (InetSocketAddress)c1.getLocalAddress();
              InetSocketAddress ad2 = (InetSocketAddress)c2.getLocalAddress();

              ByteBuffer bb = ByteBuffer.wrap("Hello world".getBytes());
              ByteBuffer bbb = ByteBuffer.allocate(1);

      c2.connect(ad1);
              c1.send(bb, ad2);

              c2.read(bbb);
          }
      }

        Attachments

          Activity

            People

            Assignee:
            alanb Alan Bateman
            Reporter:
            michaelm Michael McMahon
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved: