Skip to content

Commit 15a4dce

Browse files
larseggertdjc
authored andcommitted
chore: Replace IP strings with address types
Avoids a bunch of parsing and checking.
1 parent 08ee9ee commit 15a4dce

File tree

9 files changed

+36
-30
lines changed

9 files changed

+36
-30
lines changed

quinn-udp/benches/throughput.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use criterion::{criterion_group, criterion_main, Criterion};
22
use quinn_udp::{RecvMeta, Transmit, UdpSocketState};
33
use std::cmp::min;
4+
use std::net::{Ipv4Addr, Ipv6Addr};
45
use std::{io::IoSliceMut, net::UdpSocket, slice};
56

67
pub fn criterion_benchmark(c: &mut Criterion) {
@@ -9,11 +10,11 @@ pub fn criterion_benchmark(c: &mut Criterion) {
910
const MAX_BUFFER_SIZE: usize = u16::MAX as usize;
1011
const SEGMENT_SIZE: usize = 1280;
1112

12-
let send = UdpSocket::bind("[::1]:0")
13-
.or_else(|_| UdpSocket::bind("127.0.0.1:0"))
13+
let send = UdpSocket::bind((Ipv6Addr::LOCALHOST, 0))
14+
.or_else(|_| UdpSocket::bind((Ipv4Addr::LOCALHOST, 0)))
1415
.unwrap();
15-
let recv = UdpSocket::bind("[::1]:0")
16-
.or_else(|_| UdpSocket::bind("127.0.0.1:0"))
16+
let recv = UdpSocket::bind((Ipv6Addr::LOCALHOST, 0))
17+
.or_else(|_| UdpSocket::bind((Ipv4Addr::LOCALHOST, 0)))
1718
.unwrap();
1819
let max_segments = min(
1920
UdpSocketState::new((&send).into())

quinn-udp/src/unix.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -712,7 +712,7 @@ mod gso {
712712
const GSO_SIZE: libc::c_int = 1500;
713713

714714
let socket = match std::net::UdpSocket::bind("[::]:0")
715-
.or_else(|_| std::net::UdpSocket::bind("127.0.0.1:0"))
715+
.or_else(|_| std::net::UdpSocket::bind((Ipv4Addr::LOCALHOST, 0)))
716716
{
717717
Ok(socket) => socket,
718718
Err(_) => return 1,
@@ -750,7 +750,7 @@ mod gro {
750750

751751
pub(crate) fn gro_segments() -> usize {
752752
let socket = match std::net::UdpSocket::bind("[::]:0")
753-
.or_else(|_| std::net::UdpSocket::bind("127.0.0.1:0"))
753+
.or_else(|_| std::net::UdpSocket::bind((Ipv4Addr::LOCALHOST, 0)))
754754
{
755755
Ok(socket) => socket,
756756
Err(_) => return 1,

quinn-udp/src/windows.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -435,7 +435,7 @@ static WSARECVMSG_PTR: Lazy<WinSock::LPFN_WSARECVMSG> = Lazy::new(|| {
435435

436436
static MAX_GSO_SEGMENTS: Lazy<usize> = Lazy::new(|| {
437437
let socket = match std::net::UdpSocket::bind("[::]:0")
438-
.or_else(|_| std::net::UdpSocket::bind("127.0.0.1:0"))
438+
.or_else(|_| std::net::UdpSocket::bind((Ipv4Addr::LOCALHOST, 0)))
439439
{
440440
Ok(socket) => socket,
441441
Err(_) => return 1,

quinn-udp/tests/tests.rs

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@ use socket2::Socket;
1111

1212
#[test]
1313
fn basic() {
14-
let send = UdpSocket::bind("[::1]:0")
15-
.or_else(|_| UdpSocket::bind("127.0.0.1:0"))
14+
let send = UdpSocket::bind((Ipv6Addr::LOCALHOST, 0))
15+
.or_else(|_| UdpSocket::bind((Ipv4Addr::LOCALHOST, 0)))
1616
.unwrap();
17-
let recv = UdpSocket::bind("[::1]:0")
18-
.or_else(|_| UdpSocket::bind("127.0.0.1:0"))
17+
let recv = UdpSocket::bind((Ipv6Addr::LOCALHOST, 0))
18+
.or_else(|_| UdpSocket::bind((Ipv4Addr::LOCALHOST, 0)))
1919
.unwrap();
2020
let dst_addr = recv.local_addr().unwrap();
2121
test_send_recv(
@@ -33,8 +33,8 @@ fn basic() {
3333

3434
#[test]
3535
fn ecn_v6() {
36-
let send = Socket::from(UdpSocket::bind("[::1]:0").unwrap());
37-
let recv = Socket::from(UdpSocket::bind("[::1]:0").unwrap());
36+
let send = Socket::from(UdpSocket::bind((Ipv6Addr::LOCALHOST, 0)).unwrap());
37+
let recv = Socket::from(UdpSocket::bind((Ipv6Addr::LOCALHOST, 0)).unwrap());
3838
for codepoint in [EcnCodepoint::Ect0, EcnCodepoint::Ect1] {
3939
test_send_recv(
4040
&send,
@@ -53,8 +53,8 @@ fn ecn_v6() {
5353
#[test]
5454
#[cfg(not(any(target_os = "openbsd", target_os = "netbsd", target_os = "solaris")))]
5555
fn ecn_v4() {
56-
let send = Socket::from(UdpSocket::bind("127.0.0.1:0").unwrap());
57-
let recv = Socket::from(UdpSocket::bind("127.0.0.1:0").unwrap());
56+
let send = Socket::from(UdpSocket::bind((Ipv4Addr::LOCALHOST, 0)).unwrap());
57+
let recv = Socket::from(UdpSocket::bind((Ipv4Addr::LOCALHOST, 0)).unwrap());
5858
for codepoint in [EcnCodepoint::Ect0, EcnCodepoint::Ect1] {
5959
test_send_recv(
6060
&send,
@@ -93,7 +93,10 @@ fn ecn_v6_dualstack() {
9393
0,
9494
));
9595
let recv_v4 = SocketAddr::V4(SocketAddrV4::new(Ipv4Addr::LOCALHOST, recv_v6.port()));
96-
for (src, dst) in [("[::1]:0", recv_v6), ("127.0.0.1:0", recv_v4)] {
96+
for (src, dst) in [
97+
(SocketAddr::new(IpAddr::V6(Ipv6Addr::LOCALHOST), 0), recv_v6),
98+
(SocketAddr::new(IpAddr::V4(Ipv4Addr::LOCALHOST), 0), recv_v4),
99+
] {
97100
dbg!(src, dst);
98101
let send = UdpSocket::bind(src).unwrap();
99102
let send = Socket::from(send);
@@ -128,7 +131,7 @@ fn ecn_v4_mapped_v6() {
128131
))
129132
.unwrap();
130133

131-
let recv = UdpSocket::bind("127.0.0.1:0").unwrap();
134+
let recv = UdpSocket::bind((Ipv4Addr::LOCALHOST, 0)).unwrap();
132135
let recv = Socket::from(recv);
133136
let recv_v4_mapped_v6 = SocketAddr::V6(SocketAddrV6::new(
134137
Ipv4Addr::LOCALHOST.to_ipv6_mapped(),
@@ -155,11 +158,11 @@ fn ecn_v4_mapped_v6() {
155158
#[test]
156159
#[cfg_attr(not(any(target_os = "linux", target_os = "windows")), ignore)]
157160
fn gso() {
158-
let send = UdpSocket::bind("[::1]:0")
159-
.or_else(|_| UdpSocket::bind("127.0.0.1:0"))
161+
let send = UdpSocket::bind((Ipv6Addr::LOCALHOST, 0))
162+
.or_else(|_| UdpSocket::bind((Ipv4Addr::LOCALHOST, 0)))
160163
.unwrap();
161-
let recv = UdpSocket::bind("[::1]:0")
162-
.or_else(|_| UdpSocket::bind("127.0.0.1:0"))
164+
let recv = UdpSocket::bind((Ipv6Addr::LOCALHOST, 0))
165+
.or_else(|_| UdpSocket::bind((Ipv4Addr::LOCALHOST, 0)))
163166
.unwrap();
164167
let max_segments = UdpSocketState::new((&send).into())
165168
.unwrap()

quinn/examples/connection.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use common::{make_client_endpoint, make_server_endpoint};
99

1010
#[tokio::main]
1111
async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
12-
let server_addr = "127.0.0.1:5000".parse().unwrap();
12+
let server_addr = (Ipv4Addr::LOCALHOST, 5000).parse().unwrap();
1313
let (endpoint, server_cert) = make_server_endpoint(server_addr)?;
1414
// accept a single connection
1515
let endpoint2 = endpoint.clone();

quinn/examples/insecure_connection.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use common::make_server_endpoint;
1414
#[tokio::main]
1515
async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
1616
// server and client are running on the same thread asynchronously
17-
let addr = "127.0.0.1:5000".parse().unwrap();
17+
let addr = (Ipv4Addr::LOCALHOST, 5000).parse().unwrap();
1818
tokio::spawn(run_server(addr));
1919
run_client(addr).await?;
2020
Ok(())
@@ -33,7 +33,7 @@ async fn run_server(addr: SocketAddr) {
3333
}
3434

3535
async fn run_client(server_addr: SocketAddr) -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
36-
let mut endpoint = Endpoint::client("127.0.0.1:0".parse().unwrap())?;
36+
let mut endpoint = Endpoint::client((Ipv4Addr::LOCALHOST, 0).parse().unwrap())?;
3737

3838
endpoint.set_default_client_config(ClientConfig::new(Arc::new(QuicClientConfig::try_from(
3939
rustls::ClientConfig::builder()

quinn/examples/single_socket.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,15 @@ use rustls::pki_types::CertificateDer;
1212

1313
#[tokio::main]
1414
async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
15-
let addr1 = "127.0.0.1:5000".parse().unwrap();
16-
let addr2 = "127.0.0.1:5001".parse().unwrap();
17-
let addr3 = "127.0.0.1:5002".parse().unwrap();
15+
let addr1 = (Ipv4Addr::LOCALHOST, 5000).parse().unwrap();
16+
let addr2 = (Ipv4Addr::LOCALHOST, 5001).parse().unwrap();
17+
let addr3 = (Ipv4Addr::LOCALHOST, 5002).parse().unwrap();
1818
let server1_cert = run_server(addr1)?;
1919
let server2_cert = run_server(addr2)?;
2020
let server3_cert = run_server(addr3)?;
2121

2222
let client = make_client_endpoint(
23-
"127.0.0.1:0".parse().unwrap(),
23+
(Ipv4Addr::LOCALHOST, 0).parse().unwrap(),
2424
&[&server1_cert, &server2_cert, &server3_cert],
2525
)?;
2626

quinn/src/tests.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ async fn close_endpoint() {
111111

112112
#[test]
113113
fn local_addr() {
114-
let socket = UdpSocket::bind("[::1]:0").unwrap();
114+
let socket = UdpSocket::bind((Ipv6Addr::LOCALHOST, 0)).unwrap();
115115
let addr = socket.local_addr().unwrap();
116116
let runtime = rt_basic();
117117
let ep = {

quinn/tests/many_connections.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#![cfg(any(feature = "rustls-aws-lc-rs", feature = "rustls-ring"))]
22
use std::{
33
convert::TryInto,
4+
net::{IpAddr, Ipv4Addr, SocketAddr},
45
sync::{Arc, Mutex},
56
time::Duration,
67
};
@@ -30,7 +31,8 @@ fn connect_n_nodes_to_1_and_send_1mb_data() {
3031
let shared = Arc::new(Mutex::new(Shared { errors: vec![] }));
3132

3233
let (cfg, listener_cert) = configure_listener();
33-
let endpoint = quinn::Endpoint::server(cfg, "127.0.0.1:0".parse().unwrap()).unwrap();
34+
let endpoint =
35+
quinn::Endpoint::server(cfg, SocketAddr::new(IpAddr::V4(Ipv4Addr::LOCALHOST), 0)).unwrap();
3436
let listener_addr = endpoint.local_addr().unwrap();
3537

3638
let expected_messages = 50;

0 commit comments

Comments
 (0)