From e4bbc31c7b9fea396bfdcd3c62b90e83af2c22a9 Mon Sep 17 00:00:00 2001 From: Oskari Alaranta Date: Thu, 4 Jun 2026 01:29:04 +0300 Subject: [PATCH] Keep track of client's pid --- xbanan/Definitions.h | 1 + xbanan/main.cpp | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/xbanan/Definitions.h b/xbanan/Definitions.h index bb7de9f..fd2099c 100644 --- a/xbanan/Definitions.h +++ b/xbanan/Definitions.h @@ -143,6 +143,7 @@ struct Client bool has_epollout { false }; bool has_bigrequests { false }; CARD16 sequence { 0 }; + BAN::Optional pid; BAN::Vector input_buffer; BAN::Vector output_buffer; BAN::HashSet objects; diff --git a/xbanan/main.cpp b/xbanan/main.cpp index 676118b..afa380b 100644 --- a/xbanan/main.cpp +++ b/xbanan/main.cpp @@ -391,11 +391,21 @@ int main() continue; } + BAN::Optional client_pid; + +#ifdef SO_PEERCRED + ucred client_cred; + socklen_t client_cred_len = sizeof(client_cred); + if (getsockopt(client_sock, SOL_SOCKET, SO_PEERCRED, &client_cred, &client_cred_len) == 0) + client_pid = client_cred.pid; +#endif + MUST(g_epoll_thingies.insert(client_sock, { .type = EpollThingy::Type::Client, .value = Client { .fd = client_sock, .state = Client::State::ConnectionSetup, + .pid = client_pid, } }));