From 7a8c36aa4e6a1b5e48f0ee5a787f10bcfece7587 Mon Sep 17 00:00:00 2001 From: Ajay Panicker Date: Thu, 5 Jan 2017 15:38:52 -0800 Subject: Prevent LocalSocket from creating an fd if fd is already there Any LocalSocket created with a FileDescriptor will throw IOExceptions when performing most opperations due to the fact that the LocalSocket tries to create an implementation but fails since there is a FileDescriptor already set. Bug: 34095140 Test: Setup using tap&go Change-Id: Ie8f50def6156c16617697d939d6c0ab570281642 --- core/java/android/net/LocalSocket.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/core/java/android/net/LocalSocket.java b/core/java/android/net/LocalSocket.java index 3f8d9d3b6723..d9ad74beb016 100644 --- a/core/java/android/net/LocalSocket.java +++ b/core/java/android/net/LocalSocket.java @@ -73,6 +73,7 @@ public class LocalSocket implements Closeable { this(new LocalSocketImpl(fd), SOCKET_UNKNOWN); isBound = true; isConnected = true; + implCreated = true; } private LocalSocket(LocalSocketImpl impl, int sockType) { @@ -223,11 +224,11 @@ public class LocalSocket implements Closeable { implCreateIfNeeded(); impl.shutdownOutput(); } - + public void setReceiveBufferSize(int size) throws IOException { impl.setOption(SocketOptions.SO_RCVBUF, Integer.valueOf(size)); } - + public int getReceiveBufferSize() throws IOException { return ((Integer) impl.getOption(SocketOptions.SO_RCVBUF)).intValue(); } @@ -235,7 +236,7 @@ public class LocalSocket implements Closeable { public void setSoTimeout(int n) throws IOException { impl.setOption(SocketOptions.SO_TIMEOUT, Integer.valueOf(n)); } - + public int getSoTimeout() throws IOException { return ((Integer) impl.getOption(SocketOptions.SO_TIMEOUT)).intValue(); } @@ -243,7 +244,7 @@ public class LocalSocket implements Closeable { public void setSendBufferSize(int n) throws IOException { impl.setOption(SocketOptions.SO_SNDBUF, Integer.valueOf(n)); } - + public int getSendBufferSize() throws IOException { return ((Integer) impl.getOption(SocketOptions.SO_SNDBUF)).intValue(); } @@ -328,5 +329,5 @@ public class LocalSocket implements Closeable { */ public FileDescriptor getFileDescriptor() { return impl.getFileDescriptor(); - } + } } -- cgit v1.2.3-59-g8ed1b