1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 00:07:43 +00:00

Kernel: Remove the Socket::{protocol,}connect ShouldBlock argument

This argument is always set to description.is_blocking(), but
description is also given as a separate argument, so there's no point
to piping it through separately.
This commit is contained in:
Idan Horowitz 2022-07-13 09:31:24 +03:00 committed by Andreas Kling
parent 2aaaee6744
commit 364f6a9bf0
10 changed files with 13 additions and 18 deletions

View file

@ -138,7 +138,7 @@ ErrorOr<void> IPv4Socket::listen(size_t backlog)
return protocol_listen(result.did_allocate); return protocol_listen(result.did_allocate);
} }
ErrorOr<void> IPv4Socket::connect(OpenFileDescription& description, Userspace<sockaddr const*> address, socklen_t address_size, ShouldBlock should_block) ErrorOr<void> IPv4Socket::connect(OpenFileDescription& description, Userspace<sockaddr const*> address, socklen_t address_size)
{ {
if (address_size != sizeof(sockaddr_in)) if (address_size != sizeof(sockaddr_in))
return set_so_error(EINVAL); return set_so_error(EINVAL);
@ -158,7 +158,7 @@ ErrorOr<void> IPv4Socket::connect(OpenFileDescription& description, Userspace<so
m_peer_address = IPv4Address { 127, 0, 0, 1 }; m_peer_address = IPv4Address { 127, 0, 0, 1 };
m_peer_port = ntohs(safe_address.sin_port); m_peer_port = ntohs(safe_address.sin_port);
return protocol_connect(description, should_block); return protocol_connect(description);
} }
bool IPv4Socket::can_read(OpenFileDescription const&, u64) const bool IPv4Socket::can_read(OpenFileDescription const&, u64) const

View file

@ -33,7 +33,7 @@ public:
virtual ErrorOr<void> close() override; virtual ErrorOr<void> close() override;
virtual ErrorOr<void> bind(Userspace<sockaddr const*>, socklen_t) override; virtual ErrorOr<void> bind(Userspace<sockaddr const*>, socklen_t) override;
virtual ErrorOr<void> connect(OpenFileDescription&, Userspace<sockaddr const*>, socklen_t, ShouldBlock = ShouldBlock::Yes) override; virtual ErrorOr<void> connect(OpenFileDescription&, Userspace<sockaddr const*>, socklen_t) override;
virtual ErrorOr<void> listen(size_t) override; virtual ErrorOr<void> listen(size_t) override;
virtual void get_local_address(sockaddr*, socklen_t*) override; virtual void get_local_address(sockaddr*, socklen_t*) override;
virtual void get_peer_address(sockaddr*, socklen_t*) override; virtual void get_peer_address(sockaddr*, socklen_t*) override;
@ -82,7 +82,7 @@ protected:
virtual ErrorOr<void> protocol_listen([[maybe_unused]] bool did_allocate_port) { return {}; } virtual ErrorOr<void> protocol_listen([[maybe_unused]] bool did_allocate_port) { return {}; }
virtual ErrorOr<size_t> protocol_receive(ReadonlyBytes /* raw_ipv4_packet */, UserOrKernelBuffer&, size_t, int) { return ENOTIMPL; } virtual ErrorOr<size_t> protocol_receive(ReadonlyBytes /* raw_ipv4_packet */, UserOrKernelBuffer&, size_t, int) { return ENOTIMPL; }
virtual ErrorOr<size_t> protocol_send(UserOrKernelBuffer const&, size_t) { return ENOTIMPL; } virtual ErrorOr<size_t> protocol_send(UserOrKernelBuffer const&, size_t) { return ENOTIMPL; }
virtual ErrorOr<void> protocol_connect(OpenFileDescription&, ShouldBlock) { return {}; } virtual ErrorOr<void> protocol_connect(OpenFileDescription&) { return {}; }
virtual ErrorOr<u16> protocol_allocate_local_port() { return ENOPROTOOPT; } virtual ErrorOr<u16> protocol_allocate_local_port() { return ENOPROTOOPT; }
virtual ErrorOr<size_t> protocol_size(ReadonlyBytes /* raw_ipv4_packet */) { return ENOTIMPL; } virtual ErrorOr<size_t> protocol_size(ReadonlyBytes /* raw_ipv4_packet */) { return ENOTIMPL; }
virtual bool protocol_is_disconnected() const { return false; } virtual bool protocol_is_disconnected() const { return false; }

View file

@ -159,7 +159,7 @@ ErrorOr<void> LocalSocket::bind(Userspace<sockaddr const*> user_address, socklen
return {}; return {};
} }
ErrorOr<void> LocalSocket::connect(OpenFileDescription& description, Userspace<sockaddr const*> user_address, socklen_t address_size, ShouldBlock) ErrorOr<void> LocalSocket::connect(OpenFileDescription& description, Userspace<sockaddr const*> user_address, socklen_t address_size)
{ {
VERIFY(!m_bound); VERIFY(!m_bound);

View file

@ -37,7 +37,7 @@ public:
// ^Socket // ^Socket
virtual ErrorOr<void> bind(Userspace<sockaddr const*>, socklen_t) override; virtual ErrorOr<void> bind(Userspace<sockaddr const*>, socklen_t) override;
virtual ErrorOr<void> connect(OpenFileDescription&, Userspace<sockaddr const*>, socklen_t, ShouldBlock = ShouldBlock::Yes) override; virtual ErrorOr<void> connect(OpenFileDescription&, Userspace<sockaddr const*>, socklen_t) override;
virtual ErrorOr<void> listen(size_t) override; virtual ErrorOr<void> listen(size_t) override;
virtual void get_local_address(sockaddr*, socklen_t*) override; virtual void get_local_address(sockaddr*, socklen_t*) override;
virtual void get_peer_address(sockaddr*, socklen_t*) override; virtual void get_peer_address(sockaddr*, socklen_t*) override;

View file

@ -18,11 +18,6 @@
namespace Kernel { namespace Kernel {
enum class ShouldBlock {
No = 0,
Yes = 1
};
class OpenFileDescription; class OpenFileDescription;
class Socket : public File { class Socket : public File {
@ -79,7 +74,7 @@ public:
ErrorOr<void> shutdown(int how); ErrorOr<void> shutdown(int how);
virtual ErrorOr<void> bind(Userspace<sockaddr const*>, socklen_t) = 0; virtual ErrorOr<void> bind(Userspace<sockaddr const*>, socklen_t) = 0;
virtual ErrorOr<void> connect(OpenFileDescription&, Userspace<sockaddr const*>, socklen_t, ShouldBlock) = 0; virtual ErrorOr<void> connect(OpenFileDescription&, Userspace<sockaddr const*>, socklen_t) = 0;
virtual ErrorOr<void> listen(size_t) = 0; virtual ErrorOr<void> listen(size_t) = 0;
virtual void get_local_address(sockaddr*, socklen_t*) = 0; virtual void get_local_address(sockaddr*, socklen_t*) = 0;
virtual void get_peer_address(sockaddr*, socklen_t*) = 0; virtual void get_peer_address(sockaddr*, socklen_t*) = 0;

View file

@ -420,7 +420,7 @@ ErrorOr<void> TCPSocket::protocol_listen(bool did_allocate_port)
return {}; return {};
} }
ErrorOr<void> TCPSocket::protocol_connect(OpenFileDescription& description, ShouldBlock should_block) ErrorOr<void> TCPSocket::protocol_connect(OpenFileDescription& description)
{ {
MutexLocker locker(mutex()); MutexLocker locker(mutex());
@ -444,7 +444,7 @@ ErrorOr<void> TCPSocket::protocol_connect(OpenFileDescription& description, Shou
evaluate_block_conditions(); evaluate_block_conditions();
if (should_block == ShouldBlock::Yes) { if (description.is_blocking()) {
locker.unlock(); locker.unlock();
auto unblock_flags = Thread::FileBlocker::BlockFlags::None; auto unblock_flags = Thread::FileBlocker::BlockFlags::None;
if (Thread::current()->block<Thread::ConnectBlocker>({}, description, unblock_flags).was_interrupted()) if (Thread::current()->block<Thread::ConnectBlocker>({}, description, unblock_flags).was_interrupted())

View file

@ -175,7 +175,7 @@ private:
virtual ErrorOr<size_t> protocol_receive(ReadonlyBytes raw_ipv4_packet, UserOrKernelBuffer& buffer, size_t buffer_size, int flags) override; virtual ErrorOr<size_t> protocol_receive(ReadonlyBytes raw_ipv4_packet, UserOrKernelBuffer& buffer, size_t buffer_size, int flags) override;
virtual ErrorOr<size_t> protocol_send(UserOrKernelBuffer const&, size_t) override; virtual ErrorOr<size_t> protocol_send(UserOrKernelBuffer const&, size_t) override;
virtual ErrorOr<void> protocol_connect(OpenFileDescription&, ShouldBlock) override; virtual ErrorOr<void> protocol_connect(OpenFileDescription&) override;
virtual ErrorOr<u16> protocol_allocate_local_port() override; virtual ErrorOr<u16> protocol_allocate_local_port() override;
virtual ErrorOr<size_t> protocol_size(ReadonlyBytes raw_ipv4_packet) override; virtual ErrorOr<size_t> protocol_size(ReadonlyBytes raw_ipv4_packet) override;
virtual bool protocol_is_disconnected() const override; virtual bool protocol_is_disconnected() const override;

View file

@ -105,7 +105,7 @@ ErrorOr<size_t> UDPSocket::protocol_send(UserOrKernelBuffer const& data, size_t
return data_length; return data_length;
} }
ErrorOr<void> UDPSocket::protocol_connect(OpenFileDescription&, ShouldBlock) ErrorOr<void> UDPSocket::protocol_connect(OpenFileDescription&)
{ {
set_role(Role::Connected); set_role(Role::Connected);
set_connected(true); set_connected(true);

View file

@ -29,7 +29,7 @@ private:
virtual ErrorOr<size_t> protocol_receive(ReadonlyBytes raw_ipv4_packet, UserOrKernelBuffer& buffer, size_t buffer_size, int flags) override; virtual ErrorOr<size_t> protocol_receive(ReadonlyBytes raw_ipv4_packet, UserOrKernelBuffer& buffer, size_t buffer_size, int flags) override;
virtual ErrorOr<size_t> protocol_send(UserOrKernelBuffer const&, size_t) override; virtual ErrorOr<size_t> protocol_send(UserOrKernelBuffer const&, size_t) override;
virtual ErrorOr<size_t> protocol_size(ReadonlyBytes raw_ipv4_packet) override; virtual ErrorOr<size_t> protocol_size(ReadonlyBytes raw_ipv4_packet) override;
virtual ErrorOr<void> protocol_connect(OpenFileDescription&, ShouldBlock) override; virtual ErrorOr<void> protocol_connect(OpenFileDescription&) override;
virtual ErrorOr<u16> protocol_allocate_local_port() override; virtual ErrorOr<u16> protocol_allocate_local_port() override;
virtual ErrorOr<void> protocol_bind() override; virtual ErrorOr<void> protocol_bind() override;
}; };

View file

@ -152,7 +152,7 @@ ErrorOr<FlatPtr> Process::sys$connect(int sockfd, Userspace<sockaddr const*> use
return ENOTSOCK; return ENOTSOCK;
auto& socket = *description->socket(); auto& socket = *description->socket();
REQUIRE_PROMISE_FOR_SOCKET_DOMAIN(socket.domain()); REQUIRE_PROMISE_FOR_SOCKET_DOMAIN(socket.domain());
TRY(socket.connect(*description, user_address, user_address_size, description->is_blocking() ? ShouldBlock::Yes : ShouldBlock::No)); TRY(socket.connect(*description, user_address, user_address_size));
return 0; return 0;
} }