diff --git a/Userland/Libraries/LibCore/Stream.cpp b/Userland/Libraries/LibCore/Stream.cpp index 21988042b3c..0498ab3f466 100644 --- a/Userland/Libraries/LibCore/Stream.cpp +++ b/Userland/Libraries/LibCore/Stream.cpp @@ -390,6 +390,12 @@ ErrorOr PosixSocketHelper::set_close_on_exec(bool enabled) return {}; } +ErrorOr PosixSocketHelper::set_receive_timeout(Time timeout) +{ + auto timeout_spec = timeout.to_timespec(); + return System::setsockopt(m_fd, SOL_SOCKET, SO_RCVTIMEO, &timeout_spec, sizeof(timeout_spec)); +} + void PosixSocketHelper::setup_notifier() { if (!m_notifier) @@ -438,18 +444,21 @@ ErrorOr PosixSocketHelper::pending_bytes() const return static_cast(value); } -ErrorOr> UDPSocket::connect(String const& host, u16 port) +ErrorOr> UDPSocket::connect(String const& host, u16 port, Optional