diff options
| author | 2017-01-04 12:45:11 +0000 | |
|---|---|---|
| committer | 2017-01-04 12:45:11 +0000 | |
| commit | 88c9e31fd378a24c3bcd5353f03becd93aca51a5 (patch) | |
| tree | 538422ea136d201cb7a59952ca397125e997131b | |
| parent | daa72ea3ab725841bd07e21f34d38b729f76184f (diff) | |
| parent | df49ab557678d177214432b89d76e5f44caf470a (diff) | |
Merge "Set isConnected, isBound, implCreated on server-side LocalSockets" am: 75ba827a4e am: 6a29676687
am: df49ab5576
Change-Id: I6aac69506e00ec9f0fdb431191a94b7b9b9fc0df
| -rw-r--r-- | core/java/android/net/LocalServerSocket.java | 4 | ||||
| -rw-r--r-- | core/java/android/net/LocalSocket.java | 17 | ||||
| -rw-r--r-- | core/java/android/net/LocalSocketImpl.java | 46 |
3 files changed, 37 insertions, 30 deletions
diff --git a/core/java/android/net/LocalServerSocket.java b/core/java/android/net/LocalServerSocket.java index 9464222f091d..e1eaf00d0f20 100644 --- a/core/java/android/net/LocalServerSocket.java +++ b/core/java/android/net/LocalServerSocket.java @@ -87,9 +87,9 @@ public class LocalServerSocket { { LocalSocketImpl acceptedImpl = new LocalSocketImpl(); - impl.accept (acceptedImpl); + impl.accept(acceptedImpl); - return new LocalSocket(acceptedImpl, LocalSocket.SOCKET_UNKNOWN); + return LocalSocket.createLocalSocketForAccept(acceptedImpl, LocalSocket.SOCKET_UNKNOWN); } /** diff --git a/core/java/android/net/LocalSocket.java b/core/java/android/net/LocalSocket.java index e14facb1abb5..3f8d9d3b6723 100644 --- a/core/java/android/net/LocalSocket.java +++ b/core/java/android/net/LocalSocket.java @@ -75,17 +75,24 @@ public class LocalSocket implements Closeable { isConnected = true; } - /** - * for use with AndroidServerSocket - * @param impl a SocketImpl - */ - /*package*/ LocalSocket(LocalSocketImpl impl, int sockType) { + private LocalSocket(LocalSocketImpl impl, int sockType) { this.impl = impl; this.sockType = sockType; this.isConnected = false; this.isBound = false; } + /** + * for use with LocalServerSocket.accept() + */ + static LocalSocket createLocalSocketForAccept(LocalSocketImpl impl, int sockType) { + LocalSocket socket = new LocalSocket(impl, sockType); + socket.isConnected = true; + socket.isBound = true; + socket.implCreated = true; + return socket; + } + /** {@inheritDoc} */ @Override public String toString() { diff --git a/core/java/android/net/LocalSocketImpl.java b/core/java/android/net/LocalSocketImpl.java index 0f0e9c49a0b0..d8f782115cf8 100644 --- a/core/java/android/net/LocalSocketImpl.java +++ b/core/java/android/net/LocalSocketImpl.java @@ -235,29 +235,29 @@ class LocalSocketImpl * @throws IOException */ public void create(int sockType) throws IOException { - // no error if socket already created - // need this for LocalServerSocket.accept() - if (fd == null) { - int osType; - switch (sockType) { - case LocalSocket.SOCKET_DGRAM: - osType = OsConstants.SOCK_DGRAM; - break; - case LocalSocket.SOCKET_STREAM: - osType = OsConstants.SOCK_STREAM; - break; - case LocalSocket.SOCKET_SEQPACKET: - osType = OsConstants.SOCK_SEQPACKET; - break; - default: - throw new IllegalStateException("unknown sockType"); - } - try { - fd = Os.socket(OsConstants.AF_UNIX, osType, 0); - mFdCreatedInternally = true; - } catch (ErrnoException e) { - e.rethrowAsIOException(); - } + if (fd != null) { + throw new IOException("LocalSocketImpl already has an fd"); + } + + int osType; + switch (sockType) { + case LocalSocket.SOCKET_DGRAM: + osType = OsConstants.SOCK_DGRAM; + break; + case LocalSocket.SOCKET_STREAM: + osType = OsConstants.SOCK_STREAM; + break; + case LocalSocket.SOCKET_SEQPACKET: + osType = OsConstants.SOCK_SEQPACKET; + break; + default: + throw new IllegalStateException("unknown sockType"); + } + try { + fd = Os.socket(OsConstants.AF_UNIX, osType, 0); + mFdCreatedInternally = true; + } catch (ErrnoException e) { + e.rethrowAsIOException(); } } |