You've already forked AstralRinth
forked from didirus/AstralRinth
* Reapply "Implement a more robust IPC system between the launcher and client (#4159)"
This reverts commit e25d726da4.
* Put game JAR and theseus JAR ahead of other JARs in classpath
* Fix 1.17-1.20 Forge by forcefully removing Multi-Release manifest entry
* Fix formatting
---------
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
18 lines
789 B
Rust
18 lines
789 B
Rust
use std::io;
|
|
use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr};
|
|
use tokio::net::TcpListener;
|
|
|
|
pub async fn tcp_listen_any_loopback() -> io::Result<TcpListener> {
|
|
// IPv4 is tried first for the best compatibility and performance with most systems.
|
|
// IPv6 is also tried in case IPv4 is not available. Resolving "localhost" is avoided
|
|
// to prevent failures deriving from improper name resolution setup. Any available
|
|
// ephemeral port is used to prevent conflicts with other services. This is all as per
|
|
// RFC 8252's recommendations
|
|
const ANY_LOOPBACK_SOCKET: &[SocketAddr] = &[
|
|
SocketAddr::new(IpAddr::V4(Ipv4Addr::LOCALHOST), 0),
|
|
SocketAddr::new(IpAddr::V6(Ipv6Addr::LOCALHOST), 0),
|
|
];
|
|
|
|
TcpListener::bind(ANY_LOOPBACK_SOCKET).await
|
|
}
|