Author: tberghammer Date: Mon Apr 20 04:52:47 2015 New Revision: 235291 URL: http://llvm.org/viewvc/llvm-project?rev=235291&view=rev Log: Stop read thread of Communication on EOF
Previously the read thread was only stopped if CloseOnEOF was set on the communication channel. It caused it to spin in case of an EOF because ::select() always reported that we can read from the file descriptor. This CL change this behavior with stopping the read thread on EOF but do a disconnect only if CloseOnEOF is enabled. Differential revision: http://reviews.llvm.org/D9077 Modified: lldb/trunk/source/Core/Communication.cpp Modified: lldb/trunk/source/Core/Communication.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/Communication.cpp?rev=235291&r1=235290&r2=235291&view=diff ============================================================================== --- lldb/trunk/source/Core/Communication.cpp (original) +++ lldb/trunk/source/Core/Communication.cpp Mon Apr 20 04:52:47 2015 @@ -184,7 +184,8 @@ Communication::Read (void *dst, size_t d if (event_type & eBroadcastBitReadThreadDidExit) { - Disconnect (NULL); + if (GetCloseOnEOF ()) + Disconnect (NULL); break; } } @@ -379,9 +380,8 @@ Communication::ReadThread (lldb::thread_ break; case eConnectionStatusEndOfFile: - if (comm->GetCloseOnEOF()) - done = true; - break; + done = true; + break; case eConnectionStatusError: // Check GetError() for details if (error.GetType() == eErrorTypePOSIX && error.GetError() == EIO) { _______________________________________________ lldb-commits mailing list lldb-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits