diff --git a/tokio/src/net/unix/ucred.rs b/tokio/src/net/unix/ucred.rs index 466aedc21fe..b6ced17b559 100644 --- a/tokio/src/net/unix/ucred.rs +++ b/tokio/src/net/unix/ucred.rs @@ -1,8 +1,10 @@ -use libc::{gid_t, uid_t}; +use libc::{pid_t, gid_t, uid_t}; /// Credentials of a process #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct UCred { + /// PID (process ID) of the process + pub pid: Option, // TODO: how to get it under macos? /// UID (user ID) of the process pub uid: uid_t, /// GID (group ID) of the process @@ -63,6 +65,7 @@ pub(crate) mod impl_linux { ); if ret == 0 && ucred_size as usize == mem::size_of::() { Ok(super::UCred { + pid: Some(ucred.pid), uid: ucred.uid, gid: ucred.gid, }) @@ -100,6 +103,7 @@ pub(crate) mod impl_macos { if ret == 0 { Ok(super::UCred { + pid: None, uid: uid.assume_init(), gid: gid.assume_init(), }) @@ -142,7 +146,7 @@ pub(crate) mod impl_solaris { ucred_free(cred); - Ok(super::UCred { uid, gid }) + Ok(super::UCred { pid: None, uid, gid }) } else { Err(io::Error::last_os_error()) }