summaryrefslogtreecommitdiffstats
path: root/core/java/android/net/LocalSocketImpl.java
diff options
context:
space:
mode:
authorZhihai Xu <zhihaixu@google.com>2013-07-25 13:44:50 -0700
committerZhihai Xu <zhihaixu@google.com>2013-07-25 13:44:50 -0700
commit118c85156a552440d41aaa396d42f5e938f6c38b (patch)
tree07d24b909758a87957ba323cafd73d4a8710fe6c /core/java/android/net/LocalSocketImpl.java
parentdf3cedab6fce59ce1dde4316bf63df7f7e488e23 (diff)
downloadframeworks_base-118c85156a552440d41aaa396d42f5e938f6c38b.zip
frameworks_base-118c85156a552440d41aaa396d42f5e938f6c38b.tar.gz
frameworks_base-118c85156a552440d41aaa396d42f5e938f6c38b.tar.bz2
Bluetooth stopped working in master - "bad file descriptor"
only close file descriptor which is created internally for LocalSocketImpl bug:9960585 Change-Id: I79492a05cc7c81ae6e134058840d5ca0b7663795
Diffstat (limited to 'core/java/android/net/LocalSocketImpl.java')
-rw-r--r--core/java/android/net/LocalSocketImpl.java8
1 files changed, 7 insertions, 1 deletions
diff --git a/core/java/android/net/LocalSocketImpl.java b/core/java/android/net/LocalSocketImpl.java
index fa3cf58..b2ee50a 100644
--- a/core/java/android/net/LocalSocketImpl.java
+++ b/core/java/android/net/LocalSocketImpl.java
@@ -39,6 +39,8 @@ class LocalSocketImpl
/** null if closed or not yet created */
private FileDescriptor fd;
+ /** whether fd is created internally */
+ private boolean mFdCreatedInternally;
// These fields are accessed by native code;
/** file descriptor array received during a previous read */
@@ -247,6 +249,7 @@ class LocalSocketImpl
}
try {
fd = Libcore.os.socket(OsConstants.AF_UNIX, osType, 0);
+ mFdCreatedInternally = true;
} catch (ErrnoException e) {
e.rethrowAsIOException();
}
@@ -260,7 +263,10 @@ class LocalSocketImpl
*/
public void close() throws IOException {
synchronized (LocalSocketImpl.this) {
- if (fd == null) return;
+ if ((fd == null) || (mFdCreatedInternally == false)) {
+ fd = null;
+ return;
+ }
try {
Libcore.os.close(fd);
} catch (ErrnoException e) {