diff --git a/core/jni/android_server_BluetoothEventLoop.cpp b/core/jni/android_server_BluetoothEventLoop.cpp index d2e94546cbafe..fdc97eeb889e9 100644 --- a/core/jni/android_server_BluetoothEventLoop.cpp +++ b/core/jni/android_server_BluetoothEventLoop.cpp @@ -564,7 +564,10 @@ static void *eventLoopMain(void *ptr) { NULL, NULL, NULL, NULL, NULL); tearDownEventLoop(nat); nat->vm->DetachCurrentThread(); - shutdown(nat->controlFdR,SHUT_RDWR); + + int fd = nat->controlFdR; + nat->controlFdR = 0; + close(fd); return NULL; } case EVENT_LOOP_ADD: @@ -653,9 +656,12 @@ static jboolean startEventLoopNative(JNIEnv *env, jobject object) { done: if (JNI_FALSE == result) { - if (nat->controlFdW || nat->controlFdR) { - shutdown(nat->controlFdW, SHUT_RDWR); + if (nat->controlFdW) { + close(nat->controlFdW); nat->controlFdW = 0; + } + if (nat->controlFdR) { + close(nat->controlFdR); nat->controlFdR = 0; } if (nat->me) env->DeleteGlobalRef(nat->me); @@ -692,9 +698,10 @@ static void stopEventLoopNative(JNIEnv *env, jobject object) { nat->watchData = NULL; nat->pollDataSize = 0; nat->pollMemberCount = 0; - shutdown(nat->controlFdW, SHUT_RDWR); + + int fd = nat->controlFdW; nat->controlFdW = 0; - nat->controlFdR = 0; + close(fd); } pthread_mutex_unlock(&(nat->thread_mutex)); #endif // HAVE_BLUETOOTH