Fix redox socket inner_get_name

This commit is contained in:
Jeremy Soller
2020-05-21 14:59:22 -06:00
parent 763bb2488d
commit 06429ccc4c
+8 -12
View File
@@ -132,23 +132,19 @@ unsafe fn inner_get_name(
address: *mut sockaddr,
address_len: *mut socklen_t,
) -> Result<usize> {
// 32 should probably be large enough.
// Format: [udp|tcp:]remote/local, chan:path
let mut buf = [0; 32];
let mut buf = [0; 256];
let len = syscall::fpath(socket as usize, &mut buf)?;
let buf = &buf[..len];
assert!(&buf[..4] == b"tcp:" || &buf[..4] == b"udp:" || &buf[..5] == b"chan:");
match &buf[..5] {
b"tcp:" | b"udp:" => {
inner_af_inet(local, &buf[4..], address, address_len);
}
b"chan:" => {
inner_af_unix(&buf[5..], address, address_len);
}
if buf.starts_with(b"tcp:") || buf.starts_with(b"udp:") {
inner_af_inet(local, &buf[4..], address, address_len);
} else if buf.starts_with(b"chan:") {
inner_af_unix(&buf[5..], address, address_len);
} else {
// Socket doesn't belong to any scheme
_ => panic!("socket doesn't match either tcp, udp or chan schemes"),
};
panic!("socket {:?} doesn't match either tcp, udp or chan schemes", str::from_utf8(buf));
}
Ok(0)
}