diff options
author | Zhihai Xu <zhihaixu@google.com> | 2013-07-25 13:44:50 -0700 |
---|---|---|
committer | Zhihai Xu <zhihaixu@google.com> | 2013-07-25 13:44:50 -0700 |
commit | 118c85156a552440d41aaa396d42f5e938f6c38b (patch) | |
tree | 07d24b909758a87957ba323cafd73d4a8710fe6c /core | |
parent | df3cedab6fce59ce1dde4316bf63df7f7e488e23 (diff) | |
download | frameworks_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')
-rw-r--r-- | core/java/android/net/LocalSocketImpl.java | 8 |
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) { |