History log of /libcore/ojluni/src/main/java/java/net/PlainDatagramSocketImpl.java
Revision Date Author Comments
ba17b532f644b7caed6d08671d492edfee8b6f37 13-Jan-2017 Yi Kong <yikong@google.com> Revert "Revert "Move PlainDatagramSocketImpl away from JNI""

Fixed a issue introduced as part of Libcore change 5e0df135, that caused
calling DatagramSocket.receive() with a reused DatagramPacket to fail.
This was due to calling system recvfrom(2) with packet's content length
instead of its buffer length.

This reverts commit fba26224db3ed354a0b42c4bee5ed4ddc4d52f9a and fixes
the above issue.

org.apache.harmony.tests.java.net.DatagramSocketTest#testReceiveTwice is
a regression test.

Test: Manual testing
Test: org.apache.harmony.tests.java.net.DatagramSocketTest#testReceiveTwice
Test: CtsLibcoreTestCases
Bug: 33957878
Change-Id: I64daaf6cf099e9af6bdee56f29da48627111ae25
fba26224db3ed354a0b42c4bee5ed4ddc4d52f9a 11-Jan-2017 Yi Kong <yikong@google.com> Revert "Move PlainDatagramSocketImpl away from JNI"

The PlainDatagramSocketImpl rewrite change set caused a regression in
casting device discovery mechanism. Revert these changes while
investigating the root cause.

This reverts the following commits:
77110aac1821ca512c3d2b05f2f6b1f5ab7091f6 DatagramSocket should set IP_MULTICAST_ALL to 0
0c38d180ead8b6d9bf3268979ac0967cb7e29283 Move PlainDatagramSocketImpl away from JNI (part 3)
0cda0594094f792c4ff923ea55311e0bd51a37c1 Move PlainDatagramSocketImpl away from JNI (part 2)
5e0df13532a902abc72c267a92bf3d83e71b0b1c Move PlainDatagramSocketImpl away from JNI (part 1)

Test: Manual testing
Bug: 33957878
Change-Id: I3d27e642ab77cb01ba6f1eb619847f67b47e44d8
77110aac1821ca512c3d2b05f2f6b1f5ab7091f6 10-Jan-2017 Yi Kong <yikong@google.com> DatagramSocket should set IP_MULTICAST_ALL to 0

Incorrectly removed explicit setting of IP_MULTICAST_ALL in
DatagramSocket rewrite (Libcore change 5e0df135) due to
misinterpretation of the spec, and broke apps that uses Multicast
socket. This change reintroduces the explicit setsockopt during
socket creation.

Tests will be added in a follow-up change.

Test: Manual testing
Bug: 33957878
Change-Id: I665c59372c803df81800ef1a19fca88fd49425ae
0c38d180ead8b6d9bf3268979ac0967cb7e29283 07-Jan-2017 Yi Kong <yikong@google.com> Move PlainDatagramSocketImpl away from JNI (part 3)

Remove unused static variables and their initializers, and some code
clean ups.

No functionality change.

Test: Build
Bug: 28609551
Change-Id: I2cb3f1cfc85d28207750c76b67e7f4887c11189c
0cda0594094f792c4ff923ea55311e0bd51a37c1 19-Dec-2016 Yi Kong <yikong@google.com> Move PlainDatagramSocketImpl away from JNI (part 2)

Rewrites remaining JNI methods in PlainDatagramSocketImpl
(socket{Get,Set}Option) on top of IoBridge.

Adapted IoBridge behaviour to work with OpenJDK code. Since the only
other user of the affected method does not depend on the changed
behaviour, this won't introduce any side effect.

Test: CtsLibcoreTestCases
Bug: 28609551
Change-Id: I6310edd9ec3b48bb51a8cc86ecbe757d1096f5a1
5e0df13532a902abc72c267a92bf3d83e71b0b1c 14-Dec-2016 Yi Kong <yikong@google.com> Move PlainDatagramSocketImpl away from JNI (part 1)

Rewrites all JNI methods in PlainDatagramSocketImpl apart from
socket{Get,Set}Option on top of IoBridge.

There are some differences comparing to JNI code:
bind:
* We don't set setDefaultScopeID, since that's not necessary for
Linux.
send:
* OpenJDK sets sin6_flowinfo field, but this is against RFC3493 and is
not used by the kernel. We don't set this field.
peek:
* Temporary DatagramPacket object has zero length instead of one in
original implementation. These is no need to have that one byte and
has better performance by avoid allocating a buffer.
datagramSocketCreate:
* We don't need to explicitly setsockopt IP_MULTICAST_ALL to 0, as
this is default for AF_INET6 sockets and we always create sockets
with AF_INET6 in Android libcore.
* We also don't explicitly setsockopt IPV6_MULTICAST_HOPS, since this
is to workaround a bug in old Linux kernels (< 2.4) and no longer
relevant.

Also while rewriting, several behaviour changes from M were found and
the rewrite keeps the N behaviour:
send:
* If sendto(2) sets errno as ECONNREFUSED, we now throw
PortUnreachableException instead of ignoring, and if it set errno
as ECONNRESET, we throw IOException instead of ignoring.
In all the other cases, we throw IOException instead of
SocketException.
recv/peek:
* packet.address should only be updated if source address is
different, and should be the same object if address is the same.

Test: CtsLibcoreTestCases
Bug: 28609551
Change-Id: I9a5c65cce8dee9695966012f8f2e3ddf9d84bae4
780a0e6392567eb5d1c3425043b092d29590976b 19-Aug-2016 Yi Kong <yikong@google.com> Revert "Revert "Import upstream change: Setting IP_TOS on java.net sockets not working on unix""

Fixes a bug in upstream code which uses out-dated RFC 1349 TOS scheme
while modern Linux uses imcompatiable Diffserv/ECN scheme.

Update test expectation to expect ECN bits not set for STREAM sockets.

This reverts commit e706f546a18f06b58345ee64afd884a01f0d38ff.

Bug: 30909505
Bug: 29067535
Test: libcore.java.net.SocketTest, libcore.java.net.DatagramSocketTest
Change-Id: I92de46a4abb5dbb8874fa01504cdd63c6890d0f7
e706f546a18f06b58345ee64afd884a01f0d38ff 19-Aug-2016 Yi Kong <yikong@google.com> Revert "Import upstream change: Setting IP_TOS on java.net sockets not working on unix"

This change broke libcore.java.net.SocketTest#test_setTrafficClass.

Reverts commit e646d79e87319f70e32b9e3233435e9d8d8df761.

Bug: 30909505
Change-Id: I4278917c761053af33cd95cb5e84013f43e8d003
e646d79e87319f70e32b9e3233435e9d8d8df761 01-Jul-2016 Yi Kong <yikong@google.com> Import upstream change: Setting IP_TOS on java.net sockets not working on unix

Upstream change:

8072384: Setting IP_TOS on java.net sockets not working on unix
Reviewed-by: michaelm

http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/rev/3767befecb32

Bug: 29067535
Test: Passes CTS tests
Change-Id: I08dc3bdee860062d23e181a43bcde88a728d44c2
5dd14d677fbbc0ad77b4eefa82a6f7c0a17f9a37 11-Jul-2016 Yi Kong <yikong@google.com> Add missing SO_FLOW_SLA changes

Add back some overridden methods missed in commit
e573e88e89daf5efb323719c54117c5a423eb245.

Bug: 29067535
Test: Passes java.net CTS tests
Change-Id: I0333b6b87972a40212de4fa0569102ebb118b622
49965c1dc9da104344f4893a05e45795a5740d20 30-Jun-2016 Ganesh Mahendran <opensource.ganesh@gmail.com> remove x attribute of java file

java file does not need x attribute. This patch removes it.

Change-Id: I2a7170d99f4bee7a7b819621c84dd197ded37fa2
Signed-off-by: Ganesh Mahendran <opensource.ganesh@gmail.com>
74062e1c405d0943159bb52dcacd4df240e60621 05-May-2016 Przemyslaw Szczepaniak <pszczepaniak@google.com> Revert "Move more clinit code to registration functions"

This reverts commit 97d726e8f74b80a567ff3cc7fd18270fa6a7f3ca.

This cl breaks art 119-noimage-patchoat test.

Change-Id: If8b8c7b4a555ead5ac6a8fe4a32002658ea52644
28a7080264c820a9f54f4de84c83b0ddb1701dcb 05-May-2016 Przemyslaw Szczepaniak <pszczepaniak@google.com> Revert "Move more clinit code to registration functions"

This reverts commit 607fcf911f63035e238accb21eb4648e9a0d2b8f.

This cl breaks art 119-noimage-patchoat test.

Change-Id: I9dccfeed4c1a510ddf45aab55ddc2d04d45fe009
97d726e8f74b80a567ff3cc7fd18270fa6a7f3ca 03-May-2016 Przemyslaw Szczepaniak <pszczepaniak@google.com> Move more clinit code to registration functions

Moved clinit code that fetches field/method ids
to JNI registration funcitons. This will allow to
compile-time initialize these classes.

Moved more classes in java.net.* and java.io.*
packages.

Removed sun.nio.ch.Util#load() method that
was preventing many sun.nio.ch.* classes from
being compile-time initialized.

More clinit code moving changes will follow.

Bug: 28153851
Change-Id: I661bea4d04470366ea589a9308cb2767000c687c
(cherry picked from commit 607fcf911f63035e238accb21eb4648e9a0d2b8f)
607fcf911f63035e238accb21eb4648e9a0d2b8f 03-May-2016 Przemyslaw Szczepaniak <pszczepaniak@google.com> Move more clinit code to registration functions

Moved clinit code that fetches field/method ids
to JNI registration funcitons. This will allow to
compile-time initialize these classes.

Moved more classes in java.net.* and java.io.*
packages.

Removed sun.nio.ch.Util#load() method that
was preventing many sun.nio.ch.* classes from
being compile-time initialized.

More clinit code moving changes will follow.

Bug: 28153851
Change-Id: I661bea4d04470366ea589a9308cb2767000c687c
51b1b6997fd3f980076b8081f7f1165ccc2a4008 16-Feb-2015 Piotr Jastrzebski <haaawk@google.com> Initial import of OpenJdk files.

Create new libcore/ojluni directory with src/main/java and
src/main/native subdirectiories.

Build ojluni into core-oj jar.

Use openjdk classes from java.awt.font package.

Copy all files from jdk/src/share/classes and jdk/src/solaris/classes
directories in openjdk into libcore/ojluni/src/main/java.

Copy following native files from openjdk to
libcore/ojluni/src/main/native:
jdk/src/solaris/native/java/io/canonicalize_md.c
build/linux-amd64/include/classfile_constants.h
jdk/src/share/native/java/net/DatagramPacket.c
jdk/src/solaris/native/sun/net/spi/DefaultProxySelector.c
jdk/src/share/native/java/lang/Double.c
jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h
jdk/src/solaris/native/sun/nio/ch/FileChannelImpl.c
jdk/src/solaris/native/java/io/FileDescriptor_md.c
jdk/src/solaris/native/sun/nio/ch/FileDispatcherImpl.c
jdk/src/share/native/java/io/FileInputStream.c
jdk/src/solaris/native/sun/nio/ch/FileKey.c
jdk/src/solaris/native/java/io/FileOutputStream_md.c
jdk/src/solaris/native/java/io/FileSystem_md.c
jdk/src/share/native/java/lang/Float.c
jdk/src/share/native/java/net/Inet4Address.c
jdk/src/solaris/native/java/net/Inet4AddressImpl.c
jdk/src/share/native/java/net/Inet6Address.c
jdk/src/solaris/native/java/net/Inet6AddressImpl.c
jdk/src/share/native/java/net/InetAddress.c
jdk/src/solaris/native/java/net/InetAddressImplFactory.c
jdk/src/share/native/java/io/io_util.c
jdk/src/solaris/native/sun/nio/ch/IOUtil.c
jdk/src/share/native/java/io/io_util.h
jdk/src/solaris/native/java/io/io_util_md.c
jdk/src/solaris/native/java/io/io_util_md.h
build/linux-amd64/tmp/java/java.nio/nio/CClassHeaders/java_io_FileDescriptor.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_io_FileInputStream.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_io_FileOutputStream.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_io_FileSystem.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_io_ObjectStreamClass.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_io_UnixFileSystem.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_Double.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_Float.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_Integer.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_Long.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_Runtime.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_Shutdown.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_StrictMath.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_String.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_System.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_Thread.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_Throwable.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_DatagramPacket.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_Inet4Address.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_Inet4AddressImpl.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_Inet6Address.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_Inet6AddressImpl.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_InetAddress.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_InetAddressImplFactory.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_NetworkInterface.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_PlainDatagramSocketImpl.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_PlainSocketImpl.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_SocketInputStream.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_SocketOptions.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_SocketOutputStream.h
jdk/src/share/native/java/lang/java_props.h
jdk/src/solaris/native/java/lang/java_props_md.c
jdk/src/share/native/java/util/zip/Adler32.c as java_util_zip_Adler32.c
jdk/src/share/native/java/util/zip/CRC32.c as java_util_zip_CRC32.c
build/linux-amd64/tmp/sun/java.util.zip/zip/CClassHeaders/java_util_zip_CRC32.h
jdk/src/share/native/java/util/zip/Deflater.c as java_util_zip_Deflater.c
build/linux-amd64/tmp/sun/java.util.zip/zip/CClassHeaders/java_util_zip_Deflater.h
jdk/src/share/native/java/util/zip/Inflater.c as java_util_zip_Inflater.c
build/linux-amd64/tmp/sun/java.util.zip/zip/CClassHeaders/java_util_zip_Inflater.h
jdk/src/share/native/java/util/zip/ZipFile.c as java_util_zip_ZipFile.c
build/linux-amd64/tmp/sun/java.util.zip/zip/CClassHeaders/java_util_zip_ZipFile.h
jdk/src/share/native/java/lang/fdlibm/include/jfdlibm.h
jdk/src/share/native/common/jlong.h
jdk/src/solaris/native/common/jlong_md.h
jdk/src/share/native/common/jni_util.c
jdk/src/share/native/common/jni_util.h
jdk/src/solaris/native/common/jni_util_md.c
jdk/src/share/javavm/export/jvm.h
jdk/src/solaris/javavm/export/jvm_md.h
jdk/src/solaris/native/java/net/linux_close.c
jdk/src/share/native/sun/misc/NativeSignalHandler.c
jdk/src/solaris/native/sun/nio/ch/NativeThread.c
jdk/src/share/native/java/net/net_util.c
jdk/src/share/native/java/net/net_util.h
jdk/src/solaris/native/java/net/net_util_md.c
jdk/src/solaris/native/java/net/net_util_md.h
jdk/src/solaris/native/java/net/NetworkInterface.c
jdk/src/share/native/sun/nio/ch/nio.h
jdk/src/solaris/native/sun/nio/ch/nio_util.h
jdk/src/share/native/java/io/ObjectStreamClass.c
jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c
jdk/src/solaris/native/java/net/PlainSocketImpl.c
jdk/src/solaris/native/java/lang/ProcessEnvironment_md.c
jdk/src/share/native/java/lang/Runtime.c
jdk/src/share/native/java/lang/Shutdown.c
jdk/src/share/native/sun/misc/Signal.c
jdk/src/solaris/native/java/net/SocketInputStream.c
jdk/src/solaris/native/java/net/SocketOutputStream.c
jdk/src/share/native/java/lang/StrictMath.c
jdk/src/share/native/java/lang/String.c
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/sun_misc_NativeSignalHandler.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/sun_misc_Signal.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/sun_net_spi_DefaultProxySelector.h
build/linux-amd64/tmp/java/java.nio/nio/CClassHeaders/sun_nio_ch_FileChannelImpl.h
build/linux-amd64/tmp/java/java.nio/nio/CClassHeaders/sun_nio_ch_FileDispatcherImpl.h
build/linux-amd64/tmp/java/java.nio/nio/CClassHeaders/sun_nio_ch_FileKey.h
build/linux-amd64/tmp/java/java.nio/nio/CClassHeaders/sun_nio_ch_IOStatus.h
build/linux-amd64/tmp/java/java.nio/nio/CClassHeaders/sun_nio_ch_IOUtil.h
build/linux-amd64/tmp/java/java.nio/nio/CClassHeaders/sun_nio_ch_NativeThread.h
jdk/src/share/native/java/lang/System.c
jdk/src/share/native/java/lang/Thread.c
jdk/src/share/native/java/lang/Throwable.c
jdk/src/solaris/native/java/io/UnixFileSystem_md.c
jdk/src/solaris/native/java/lang/UNIXProcess_md.c
jdk/src/share/native/java/util/zip/zip_util.c
jdk/src/share/native/java/util/zip/zip_util.h

Change-Id: Ib237df4e1b7b5b4d9f12e74d189e6ec9eed3c31d