[llvm] [llvm][Support] ListeningSocket::accept returns operation_canceled if FD is set to -1 (PR #89479)
Michael Spencer via llvm-commits
llvm-commits at lists.llvm.org
Wed Apr 24 13:37:54 PDT 2024
================
@@ -200,35 +200,40 @@ ListeningSocket::accept(std::chrono::milliseconds Timeout) {
while (PollStatus == -1 && (Timeout.count() == -1 || ElapsedTime < Timeout)) {
if (Timeout.count() != -1)
RemainingTime -= ElapsedTime.count();
-
auto Start = std::chrono::steady_clock::now();
+
#ifdef _WIN32
PollStatus = WSAPoll(FDs, 2, RemainingTime);
- if (PollStatus == SOCKET_ERROR) {
#else
PollStatus = ::poll(FDs, 2, RemainingTime);
+#endif
+ // If FD equals -1 then ListeningSocket::shutdown has been called and it is
+ // appropriate to return operation_canceled. ListeningSocket::shutdown
+ // copies FD's value to ObservedFD then sets FD to -1 before canceling
+ // ::poll by calling close on ObservedFD and writing to the pipe.
----------------
Bigcheese wrote:
Don't really need the second sentence here, people can go look at the implementation to see why the first sentence is true.
https://github.com/llvm/llvm-project/pull/89479
More information about the llvm-commits
mailing list