Index: src/test/java/tests/api/java/net/DatagramSocketTest.java =================================================================== --- src/test/java/tests/api/java/net/DatagramSocketTest.java (revision 492920) +++ src/test/java/tests/api/java/net/DatagramSocketTest.java (working copy) @@ -961,6 +961,18 @@ InetSocketAddress sa = InetSocketAddress.createUnresolved("localhost", 0); //no exception expected for next line new testDatagramSocket(new testDatagramSocketImpl()).send(new DatagramPacket(new byte[272], 3, sa)); + + // Regression test for Harmony-2938 + InetAddress i = InetAddress.getByName("127.0.0.1"); + DatagramSocket d = new DatagramSocket(80, i); + try { + d.send(new DatagramPacket(new byte[] { 1 }, 1)); + fail("should throw NPE."); + } catch (NullPointerException e) { + // expected; + } finally { + d.close(); + } } /** Index: src/main/java/java/net/DatagramSocket.java =================================================================== --- src/main/java/java/net/DatagramSocket.java (revision 492920) +++ src/main/java/java/net/DatagramSocket.java (working copy) @@ -407,6 +407,10 @@ } } else { // not connected so the target address cannot be null + if (packAddr == null && pack.port == -1) { + // KA019 Destination address is null + throw new NullPointerException(Msg.getString("KA019")); + } if (packAddr == null) { return; } Index: src/main/java/org/apache/harmony/luni/util/ExternalMessages.properties =================================================================== --- src/main/java/org/apache/harmony/luni/util/ExternalMessages.properties (revision 492920) +++ src/main/java/org/apache/harmony/luni/util/ExternalMessages.properties (working copy) @@ -311,3 +311,4 @@ KA016=Received authentication challenge is null KA017=Received HTTP_PROXY_AUTH (407) code while not using proxy KA018=Received authentication challenge is null +KA019=Destination address is null