mirror of https://git.suyu.dev/suyu/suyu
sockets: Make fd member variable protected
Other things shouldn't be able to directly mess around with the descriptor
This commit is contained in:
parent
8d4458ef24
commit
c8da75b7ed
|
@ -364,7 +364,7 @@ std::pair<s32, Errno> Poll(std::vector<PollFD>& pollfds, s32 timeout) {
|
|||
std::vector<WSAPOLLFD> host_pollfds(pollfds.size());
|
||||
std::transform(pollfds.begin(), pollfds.end(), host_pollfds.begin(), [](PollFD fd) {
|
||||
WSAPOLLFD result;
|
||||
result.fd = fd.socket->fd;
|
||||
result.fd = fd.socket->GetFD();
|
||||
result.events = TranslatePollEvents(fd.events);
|
||||
result.revents = 0;
|
||||
return result;
|
||||
|
@ -430,12 +430,12 @@ std::pair<SocketBase::AcceptResult, Errno> Socket::Accept() {
|
|||
return {AcceptResult{}, GetAndLogLastError()};
|
||||
}
|
||||
|
||||
AcceptResult result;
|
||||
result.socket = std::make_unique<Socket>();
|
||||
result.socket->fd = new_socket;
|
||||
|
||||
ASSERT(addrlen == sizeof(sockaddr_in));
|
||||
result.sockaddr_in = TranslateToSockAddrIn(addr);
|
||||
|
||||
AcceptResult result{
|
||||
.socket = std::make_unique<Socket>(new_socket),
|
||||
.sockaddr_in = TranslateToSockAddrIn(addr),
|
||||
};
|
||||
|
||||
return {std::move(result), Errno::SUCCESS};
|
||||
}
|
||||
|
|
|
@ -32,6 +32,10 @@ public:
|
|||
std::unique_ptr<SocketBase> socket;
|
||||
SockAddrIn sockaddr_in;
|
||||
};
|
||||
|
||||
SocketBase() = default;
|
||||
explicit SocketBase(SOCKET fd_) : fd{fd_} {}
|
||||
|
||||
virtual ~SocketBase() = default;
|
||||
|
||||
virtual SocketBase& operator=(const SocketBase&) = delete;
|
||||
|
@ -89,12 +93,19 @@ public:
|
|||
|
||||
virtual void HandleProxyPacket(const ProxyPacket& packet) = 0;
|
||||
|
||||
[[nodiscard]] SOCKET GetFD() const {
|
||||
return fd;
|
||||
}
|
||||
|
||||
protected:
|
||||
SOCKET fd = INVALID_SOCKET;
|
||||
};
|
||||
|
||||
class Socket : public SocketBase {
|
||||
public:
|
||||
Socket() = default;
|
||||
explicit Socket(SOCKET fd_) : SocketBase{fd_} {}
|
||||
|
||||
~Socket() override;
|
||||
|
||||
Socket(const Socket&) = delete;
|
||||
|
|
Loading…
Reference in New Issue