From 8cbaa19d2e7991c4505c0052549facb7849a2b5c Mon Sep 17 00:00:00 2001 From: Michael Vines Date: Mon, 6 Aug 2018 10:09:34 -0700 Subject: [PATCH] Report the address that failed to bind --- src/crdt.rs | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/crdt.rs b/src/crdt.rs index cbd6257055..429e9e7ff6 100644 --- a/src/crdt.rs +++ b/src/crdt.rs @@ -1262,11 +1262,20 @@ impl TestNode { let mut local_repair_addr = bind_addr; local_repair_addr.set_port(data.contact_info.tvu_window.port()); - let transaction = UdpSocket::bind(local_transactions_addr).unwrap(); - let gossip = UdpSocket::bind(local_gossip_addr).unwrap(); - let replicate = UdpSocket::bind(local_replicate_addr).unwrap(); - let repair = UdpSocket::bind(local_repair_addr).unwrap(); - let requests = UdpSocket::bind(local_requests_addr).unwrap(); + fn bind(addr: SocketAddr) -> UdpSocket { + match UdpSocket::bind(addr) { + Ok(socket) => socket, + Err(err) => { + panic!("Failed to bind to {:?}: {:?}", addr, err); + } + } + }; + + let transaction = bind(local_transactions_addr); + let gossip = bind(local_gossip_addr); + let replicate = bind(local_replicate_addr); + let repair = bind(local_repair_addr); + let requests = bind(local_requests_addr); // Responses are sent from the same Udp port as requests are received // from, in hopes that a NAT sitting in the middle will route the