From 9092ba24a339e5cacc4ac76f1765d4b487ede68c Mon Sep 17 00:00:00 2001 From: Peng Tao Date: Wed, 7 Jul 2021 19:12:17 +0800 Subject: [PATCH] haha: haha haha Signed-off-by: Peng Tao --- .../com/github/dockerjava/transport/DomainSocket.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docker-java-transport/src/main/java/com/github/dockerjava/transport/DomainSocket.java b/docker-java-transport/src/main/java/com/github/dockerjava/transport/DomainSocket.java index ff77c3830..94a154dc9 100644 --- a/docker-java-transport/src/main/java/com/github/dockerjava/transport/DomainSocket.java +++ b/docker-java-transport/src/main/java/com/github/dockerjava/transport/DomainSocket.java @@ -23,7 +23,9 @@ import java.nio.ByteBuffer; import com.github.dockerjava.transport.FileDescriptor.Handle; +import com.sun.jna.ptr.IntByReference; import com.sun.jna.LastErrorException; +import com.sun.jna.Pointer; import com.sun.jna.Native; import com.sun.jna.Platform; @@ -66,6 +68,10 @@ public abstract class DomainSocket extends AbstractSocket { private FileDescriptor open(String path) { int handle = socket(PF_LOCAL, SOCK_STREAM, 0); + setsockopt(handle, 1/*SOL_SOCKET*/, 20/*SO_RCVTIMEO*/, new IntByReference(1000).getPointer(), 4); + setsockopt(handle, 1/*SOL_SOCKET*/, 21/*SO_SNDTIMEO*/, new IntByReference(1000).getPointer(), 4); + setsockopt(handle, 1/*SOL_SOCKET*/, 66/*SO_RCVTIMEO_NEW*/, new IntByReference(1000).getPointer(), 4); + setsockopt(handle, 1/*SOL_SOCKET*/, 67/*SO_SNDTIMEO_NEW*/, new IntByReference(1000).getPointer(), 4); connect(path, handle); return new FileDescriptor(handle, this::close); } @@ -119,6 +125,8 @@ public void close() throws IOException { private native int socket(int domain, int type, int protocol) throws LastErrorException; + private static native int setsockopt(int fd, int level, int option, Pointer value, int len) throws LastErrorException; + private native int read(int fd, ByteBuffer buffer, int count) throws LastErrorException; private native int write(int fd, ByteBuffer buffer, int count) throws LastErrorException;