diff --git a/Kernel/Net/LocalSocket.cpp b/Kernel/Net/LocalSocket.cpp index 16f7edfbde..63cc07ecaf 100644 --- a/Kernel/Net/LocalSocket.cpp +++ b/Kernel/Net/LocalSocket.cpp @@ -103,7 +103,15 @@ KResult LocalSocket::connect(FileDescription& description, const sockaddr* addre if (result.is_error()) return result; - return current->wait_for_connect(description); + if (is_connected()) + return KSuccess; + + if (current->block(description) == Thread::BlockResult::InterruptedBySignal) + return KResult(-EINTR); + + if (!is_connected()) + return KResult(-ECONNREFUSED); + return KSuccess; } void LocalSocket::attach(FileDescription& description) diff --git a/Kernel/Thread.cpp b/Kernel/Thread.cpp index b2f5dd38d6..68709dd48d 100644 --- a/Kernel/Thread.cpp +++ b/Kernel/Thread.cpp @@ -513,20 +513,6 @@ Thread* Thread::clone(Process& process) return clone; } -KResult Thread::wait_for_connect(FileDescription& description) -{ - ASSERT(description.is_socket()); - auto& socket = *description.socket(); - if (socket.is_connected()) - return KSuccess; - if (block(description) == Thread::BlockResult::InterruptedBySignal) - return KResult(-EINTR); - Scheduler::yield(); - if (!socket.is_connected()) - return KResult(-ECONNREFUSED); - return KSuccess; -} - void Thread::initialize() { g_runnable_threads = new SchedulerThreadList; diff --git a/Kernel/Thread.h b/Kernel/Thread.h index 5a9ebc895e..de619ba4e4 100644 --- a/Kernel/Thread.h +++ b/Kernel/Thread.h @@ -233,8 +233,6 @@ public: void unblock(); - KResult wait_for_connect(FileDescription&); - const FarPtr& far_ptr() const { return m_far_ptr; } bool tick();