mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-26 00:34:06 +00:00
Lower listen backlog to fix accept crashes
See https://github.com/Meziu/rust-horizon/pull/1
This commit is contained in:
parent
4e808f87cc
commit
be8b88f2b6
@ -398,13 +398,20 @@ impl TcpListener {
|
||||
let (addrp, len) = addr.into_inner();
|
||||
cvt(unsafe { c::bind(sock.as_raw(), addrp, len as _) })?;
|
||||
|
||||
// Start listening
|
||||
#[cfg(not(target_os = "horizon"))]
|
||||
cvt(unsafe { c::listen(sock.as_raw(), 128) })?;
|
||||
// 40 is the maximum for Horizon OS
|
||||
#[cfg(target_os = "horizon")]
|
||||
cvt(unsafe { c::listen(sock.as_raw(), 40) })?;
|
||||
cfg_if::cfg_if! {
|
||||
if #[cfg(target_os = "horizon")] {
|
||||
// The 3DS doesn't support a big connection backlog. Sometimes
|
||||
// it allows up to about 37, but other times it doesn't even
|
||||
// accept 32. There may be a global limitation causing this.
|
||||
let backlog = 20;
|
||||
} else {
|
||||
// The default for all other platforms
|
||||
let backlog = 128;
|
||||
}
|
||||
}
|
||||
|
||||
// Start listening
|
||||
cvt(unsafe { c::listen(sock.as_raw(), backlog) })?;
|
||||
Ok(TcpListener { inner: sock })
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user