-
Notifications
You must be signed in to change notification settings - Fork 468
Open
Labels
bugSomething isn't workingSomething isn't working
Description
Currently boringtun leaks file descriptors. If we add this to src/device/integration_tests/mod.rs:
#[test]
/// Test if wireguard leaks resources on closing
fn test_fd_leaks() {
let n_before = count_file_descriptors_currently_in_use();
let wg = WGHandle::init("192.0.2.0".parse().unwrap(), "::2".parse().unwrap());
let response = wg.wg_get();
assert!(response.ends_with("errno=0\n\n"));
drop(wg); // call destructor
let n_before = count_file_descriptors_currently_in_use();
assert_eq!(n_before, n_after);
}
This test will fail.
Comments:
count_file_descriptors_currently_in_use()would count only file descriptors in use by the current process.- The implementation for the
count_file_descriptors_currently_in_use()method is platform-specific but a naive implementation for Linux would be
pub fn count_file_descriptors_currently_in_use() -> u16 {
use std::process;
use std::process::Command;
let path = format!("/proc/{}/fd/", process::id());
let output = Command::new("ls")
.args(&["-l", &path])
.output()
.expect("failed to get fd info");
let stdout = String::from_utf8_lossy(&output.stdout);
let mut n: u16 = 0;
for x in stdout.lines() {
n += 1;
}
n
}
planetlabs-admin
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working