net/PeerCredentials: add getpeereid() support

This commit is contained in:
Max Kellermann
2025-01-29 19:05:10 +01:00
parent c7621ec0e4
commit a0825e6ce0
3 changed files with 22 additions and 8 deletions

View File

@@ -13,6 +13,10 @@
#include "io/UniqueFileDescriptor.hxx"
#endif
#ifdef HAVE_GETPEEREID
#include <unistd.h> // for getpeereid()
#endif
#ifdef _WIN32
#include <ws2tcpip.h>
#else
@@ -235,6 +239,11 @@ SocketDescriptor::GetPeerCredentials() const noexcept
&cred.cred, sizeof(cred.cred)) < sizeof(cred.cred))
return SocketPeerCredentials::Undefined();
return cred;
#elif defined(HAVE_GETPEEREID)
SocketPeerCredentials cred;
return getpeereid(Get(), &cred.uid, &cred.gid) == 0
? cred
: SocketPeerCredentials::Undefined();
#else
return SocketPeerCredentials::Undefined();
#endif