summaryrefslogtreecommitdiff
path: root/src/bus-proxyd
diff options
context:
space:
mode:
authorDavid Herrmann <dh.herrmann@gmail.com>2015-01-17 14:32:58 +0100
committerDavid Herrmann <dh.herrmann@gmail.com>2015-01-17 14:32:58 +0100
commitd3394ff47c6c60b6efb55be59e9e647ab82a857a (patch)
treec74d7ba062b39060cb62d167affad81532407da4 /src/bus-proxyd
parenta8a1a43f482af480c375a97921df6b42452c7092 (diff)
bus-proxy: set custom thread names
Set thread-names to "p$PIDu$UID" and suffix with '*' if truncated. This helps debugging bus-proxy issues if we want to figure out which connections are currently open.
Diffstat (limited to 'src/bus-proxyd')
-rw-r--r--src/bus-proxyd/bus-proxyd.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/bus-proxyd/bus-proxyd.c b/src/bus-proxyd/bus-proxyd.c
index 702f021a6..15a79fc42 100644
--- a/src/bus-proxyd/bus-proxyd.c
+++ b/src/bus-proxyd/bus-proxyd.c
@@ -30,6 +30,7 @@
#include <string.h>
#include <errno.h>
#include <sys/poll.h>
+#include <sys/prctl.h>
#include <stddef.h>
#include <getopt.h>
#include <pthread.h>
@@ -91,12 +92,19 @@ static int client_context_new(ClientContext **out, int fd) {
static void *run_client(void *userdata) {
_cleanup_(client_context_freep) ClientContext *c = userdata;
_cleanup_(proxy_freep) Proxy *p = NULL;
+ char comm[16];
int r;
r = proxy_new(&p, c->fd, c->fd, arg_address);
if (r < 0)
goto exit;
+ /* set comm to "p$PIDu$UID" and suffix with '*' if truncated */
+ r = snprintf(comm, sizeof(comm), "p" PID_FMT "u" UID_FMT, p->local_creds.pid, p->local_creds.uid);
+ if (r >= (ssize_t)sizeof(comm))
+ comm[sizeof(comm) - 2] = '*';
+ (void) prctl(PR_SET_NAME, comm);
+
r = proxy_load_policy(p, arg_configuration);
if (r < 0)
goto exit;