diff --git a/src/Listen.cxx b/src/Listen.cxx index 296aa67e4..95e0862f7 100644 --- a/src/Listen.cxx +++ b/src/Listen.cxx @@ -49,7 +49,7 @@ listen_systemd_activation(ClientListener &listener) for (int i = SD_LISTEN_FDS_START, end = SD_LISTEN_FDS_START + n; i != end; ++i) - listener.AddFD(UniqueSocketDescriptor(i)); + listener.AddFD(UniqueSocketDescriptor{AdoptTag{}, i}); return true; } diff --git a/src/event/ServerSocket.cxx b/src/event/ServerSocket.cxx index 274d1f3c0..107141857 100644 --- a/src/event/ServerSocket.cxx +++ b/src/event/ServerSocket.cxx @@ -130,7 +130,7 @@ inline void ServerSocket::OneServerSocket::Accept() noexcept { StaticSocketAddress peer_address; - UniqueSocketDescriptor peer_fd(event.GetSocket().AcceptNonBlock(peer_address)); + UniqueSocketDescriptor peer_fd{AdoptTag{}, event.GetSocket().AcceptNonBlock(peer_address)}; if (!peer_fd.IsDefined()) { const SocketErrorMessage msg; FmtError(server_socket_domain, diff --git a/src/net/UniqueSocketDescriptor.hxx b/src/net/UniqueSocketDescriptor.hxx index c74548736..70bf45834 100644 --- a/src/net/UniqueSocketDescriptor.hxx +++ b/src/net/UniqueSocketDescriptor.hxx @@ -4,6 +4,7 @@ #pragma once #include "SocketDescriptor.hxx" +#include "util/TagStructs.hxx" #ifndef _WIN32 #include "io/UniqueFileDescriptor.hxx" @@ -21,17 +22,17 @@ public: UniqueSocketDescriptor() noexcept :SocketDescriptor(SocketDescriptor::Undefined()) {} - explicit UniqueSocketDescriptor(SocketDescriptor _fd) noexcept + explicit UniqueSocketDescriptor(AdoptTag, SocketDescriptor _fd) noexcept :SocketDescriptor(_fd) {} #ifndef _WIN32 - explicit UniqueSocketDescriptor(FileDescriptor _fd) noexcept + explicit UniqueSocketDescriptor(AdoptTag, FileDescriptor _fd) noexcept :SocketDescriptor(_fd) {} explicit UniqueSocketDescriptor(UniqueFileDescriptor &&_fd) noexcept :SocketDescriptor(_fd.Release()) {} #endif // !_WIN32 - explicit UniqueSocketDescriptor(int _fd) noexcept + explicit UniqueSocketDescriptor(AdoptTag, int _fd) noexcept :SocketDescriptor(_fd) {} #ifdef _WIN32 @@ -75,14 +76,14 @@ public: * @return an "undefined" instance on error */ UniqueSocketDescriptor AcceptNonBlock() const noexcept { - return UniqueSocketDescriptor(SocketDescriptor::AcceptNonBlock()); + return UniqueSocketDescriptor{AdoptTag{}, SocketDescriptor::AcceptNonBlock()}; } /** * @return an "undefined" instance on error */ UniqueSocketDescriptor AcceptNonBlock(StaticSocketAddress &address) const noexcept { - return UniqueSocketDescriptor(SocketDescriptor::AcceptNonBlock(address)); + return UniqueSocketDescriptor{AdoptTag{}, SocketDescriptor::AcceptNonBlock(address)}; } #ifndef _WIN32