diff --git a/src/udscs.c b/src/udscs.c
index c439f23cade4eb02bfc9c68d06674ef41485722b..a77da99da06ba41eb0b94cee716e8943998b1efd 100644
--- a/src/udscs.c
+++ b/src/udscs.c
@@ -490,9 +490,9 @@ void udscs_destroy_server(struct udscs_server *server)
     free(server);
 }
 
-struct ucred udscs_get_peer_cred(struct udscs_connection *conn)
+int udscs_get_peer_pid(struct udscs_connection *conn)
 {
-    return conn->peer_cred;
+    return (int)conn->peer_cred.pid;
 }
 
 static void udscs_server_accept(struct udscs_server *server) {
@@ -541,7 +541,7 @@ static void udscs_server_accept(struct udscs_server *server) {
 
     if (server->debug)
         syslog(LOG_DEBUG, "new client accepted: %p, pid: %d",
-               new_conn, (int)new_conn->peer_cred.pid);
+               new_conn, udscs_get_peer_pid(new_conn));
 
     if (server->connect_callback)
         server->connect_callback(new_conn);
diff --git a/src/udscs.h b/src/udscs.h
index 48ecf9051dad742da93e66dc16abececc2ab3e2c..4f47b7f8edbcb89b2507df2f6cef845bb932feb4 100644
--- a/src/udscs.h
+++ b/src/udscs.h
@@ -171,8 +171,8 @@ int udscs_server_fill_fds(struct udscs_server *server, fd_set *readfds,
 void udscs_server_handle_fds(struct udscs_server *server, fd_set *readfds,
     fd_set *writefds);
 
-/* Returns the peer's user credentials. */
-struct ucred udscs_get_peer_cred(struct udscs_connection *conn);
+/* Returns the peer's PID. */
+int udscs_get_peer_pid(struct udscs_connection *conn);
 
 #endif
 
diff --git a/src/vdagentd/vdagentd.c b/src/vdagentd/vdagentd.c
index 682761a3fa17ec620445bf8a8ec2431e644b9f09..438e9ee13b50ff7570211b8b3cdc9ccf613d0b7d 100644
--- a/src/vdagentd/vdagentd.c
+++ b/src/vdagentd/vdagentd.c
@@ -852,7 +852,7 @@ static void agent_connect(struct udscs_connection *conn)
     }
 
     if (session_info) {
-        uint32_t pid = udscs_get_peer_cred(conn).pid;
+        uint32_t pid = udscs_get_peer_pid(conn);
         agent_data->session = session_info_session_for_pid(session_info, pid);
     }