History log of /libcore/ojluni/src/main/java/java/net/PlainSocketImpl.java
Revision Date Author Comments
e95428629d4f519567f113b92ed1b09009673a6e 11-Apr-2017 Yi Kong <yikong@google.com> Move PlainSocketImpl away from JNI (part 2)

This moves PlainSocketImpl#socket{Set,Get}Option from JNI to IoBridge.

Changed method signatures for these two methods, in order to simplify
the impementation. These are not public methods.

Removed field trafficClass, since we set the traffic class directly
through the socket, there is no need to store the value in Java side.

Added check for SO_TIMEOUT so that it does not call through to IoBridge,
since OpenJDK implementation does not use this socket option on Linux.

Test: CtsLibcoreTestCases
Bug: 28609551
Change-Id: If294bbba4fd21754734bf3b4ecca6c3da3ef26db
(cherry picked from commit f4d26eb1fcad9ae230c80ae20b59cc6bfa12816a)
1b9bccee24ea4d2545bda74ac1e399d789fbb798 09-Jan-2017 Yi Kong <yikong@google.com> Move PlainSocketImpl away from JNI (part 1)

Rewrites all JNI methods apart from socket{Get,Set}Option on top of
IoBridge and Libcore.os.

Test: CtsLibcoreTestCases
Bug: 28609551
Change-Id: Ia14e09eae372355f5e12bc38f3ba5b06f979c807
(cherry picked from commit 32c780f411b1fe3dec80c28a79fc5442fa8304eb)
d61baf5989fd43e2ca8fcbf98684264334541470 26-Sep-2016 Shubham Ajmera <shubhamajmera@google.com> Revert commit eeb3b74d18cc9066ec3068a06d95d314c464ea5f

The CL introduces back the pre-close mechanism for Sockets. When a
thread calls close on a socket, it pre-closes the fd, i.e. dup2-ed the
file descriptor to a marker_fd. Marker_fd is a AF_UNIX file descriptor
with both read and write disable. Now, other threads which have already
acquired the file descriptor tries to read/write to it get EOF/error
correspondingly. When all the threads finally stop using the file
descriptor i.e. releases file descriptor, fd finally gets closed.

Without the pre-close, there are chances that other threads which are
about to write to the file descriptor after the close might end up
writing to the wrong file descriptor as they recycle quickly.

Test: Introduced several new test failures. Will be fixed in follow up CLs.
Bug: 27376593

Change-Id: I81eddecdab3df59c9639da27ec242b311ef575e0
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
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>
264da741ca6bdf3a3b632364531374385699655c 12-May-2016 Przemyslaw Szczepaniak <pszczepaniak@google.com> Move even more clinit code to reg functions

This changes moves clinit code that was blocked
by failure of art test 119-noimage-patchoat.
This was solved by calling EnsureInitialized
on java.lang.reflect.Field class before
libcore JNI_OnLoad is called.

This changes allows 2 more classes to be
compile-time initialized.

Bug: 28153851
Bug: 27265238
Change-Id: I1308efa28ce08bbfba5da5567dcd0b0a75b1e066
(cherry picked from commit 0394295e90f2e9830a2cbcc279dd61e140f15226)
0394295e90f2e9830a2cbcc279dd61e140f15226 12-May-2016 Przemyslaw Szczepaniak <pszczepaniak@google.com> Move even more clinit code to reg functions

This changes moves clinit code that was blocked
by failure of art test 119-noimage-patchoat.
This was solved by calling EnsureInitialized
on java.lang.reflect.Field class before
libcore JNI_OnLoad is called.

This changes allows 2 more classes to be
compile-time initialized.

Bug: 28153851
Change-Id: I1308efa28ce08bbfba5da5567dcd0b0a75b1e066
2c87ad3a45cecf9e344487cad1abfdebe79f2c7c 21-Dec-2015 Narayan Kamath <narayan@google.com> Update file headers.

Change-Id: I8149f41585768a1a4b72ab7bb4a1452376c05cc2
379c07d7ca0c5022a77b2b10782f819f5cb84985 14-Dec-2015 Przemyslaw Szczepaniak <pszczepaniak@google.com> Make PlainSocketImpl instantiate with a non-null-FD

+ FileDescriptor object is preserved and updated
with the file descriptor value on bind and friends.

Bug: 25805791
Bug: 26169052
Bug: 26084000
Change-Id: Ibe7e69e638ae94ee93877bc42eca9f35011f2c2e
eeb3b74d18cc9066ec3068a06d95d314c464ea5f 10-Dec-2015 Przemyslaw Szczepaniak <pszczepaniak@google.com> Remove AbstractPlainSocketImpl deferred close by dup2

AbstractPlainSocket was maintaining a counter for
threads using the socket fd. If someone was using
the socket fd (expressed by calling acquireFD/releaseFD methods),
close() would call dup2(marker, socketFd) and defer real close to
be done on the last releaseFD call. Now, marker was a AF_UNIX
socket pointing to no-where, and SELinux is not happy with
the accept call happening on it.

Comments in the code explain how they are doing it, but there's no
hint of why. IMHO it's a defense mechanism for badly written socket code.
Probably.

Close from concurrent thread will wake up the accept
thread (blocked on poll in NET_Timeout) and dup2
the marker to the the socket file descriptor. SELinux
will cause the accept function to return EPERM. This was
interpreted as a failure in both libcore.java.net.ConcurrentCloseTest#test_accept
and #test_connect_timeout.

This change removes the deferred close mechanism completely,
we call close on the socket file descriptor and depend
on the OS to handle the situation properly.

All ConcurrentCloseTest tests are passing, so it looks like
code sections protected with acquireFD/releaseFD are fine
with a concurrent close called in the other thread.

There's a plan B in case where this change breaks something,
openjdk was using INET socket instead of UNIX one, we can
revert to this solution, but it's hideously complex and
I would prefer to avoid it.

Bug: 26024365
Bug: 26127752
Change-Id: I0634faa5f519cdabcd6db56607bf1ae5c185dc84
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