diff --git a/src/event/ServerSocket.cxx b/src/event/ServerSocket.cxx
index 107141857..f08a48b25 100644
--- a/src/event/ServerSocket.cxx
+++ b/src/event/ServerSocket.cxx
@@ -102,13 +102,13 @@ private:
 static constexpr Domain server_socket_domain("server_socket");
 
 static int
-get_remote_uid(int fd)
+get_remote_uid(SocketDescriptor s) noexcept
 {
 #ifdef HAVE_STRUCT_UCRED
 	struct ucred cred;
 	socklen_t len = sizeof (cred);
 
-	if (getsockopt(fd, SOL_SOCKET, SO_PEERCRED, &cred, &len) < 0)
+	if (getsockopt(s.Get(), SOL_SOCKET, SO_PEERCRED, &cred, &len) < 0)
 		return -1;
 
 	return cred.uid;
@@ -117,10 +117,10 @@ get_remote_uid(int fd)
 	uid_t euid;
 	gid_t egid;
 
-	if (getpeereid(fd, &euid, &egid) == 0)
+	if (getpeereid(s.Get(), &euid, &egid) == 0)
 		return euid;
 #else
-	(void)fd;
+	(void)s;
 #endif
 	return -1;
 #endif
@@ -145,7 +145,7 @@ ServerSocket::OneServerSocket::Accept() noexcept
 			 (const char *)msg);
 	}
 
-	const auto uid = get_remote_uid(peer_fd.Get());
+	const auto uid = get_remote_uid(peer_fd);
 
 	parent.OnAccept(std::move(peer_fd), peer_address, uid);
 }