Skip to content

Commit 6e2b9f9

Browse files
committed
Add local_addr method to fetch the current SocketAddr used.
- Handy when using wildcard ports. - Also update test to use wildcard ports.
1 parent ad93c87 commit 6e2b9f9

File tree

2 files changed

+14
-4
lines changed

2 files changed

+14
-4
lines changed

src/lib.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -131,10 +131,14 @@ mod tests {
131131
block_on(async {
132132
let server_service = TestService::new();
133133
let client_service = TestService::new();
134-
let server_addr: SocketAddr = "127.0.0.1:30000".parse().unwrap();
135-
let client_addr: SocketAddr = "127.0.0.1:30001".parse().unwrap();
136-
let server = RpcServer::bind(server_addr, server_service.clone()).await.unwrap();
137-
let client = RpcServer::bind(client_addr, client_service.clone()).await.unwrap();
134+
let addr: SocketAddr = "127.0.0.1:0".parse().unwrap();
135+
let [client, server] = [&client_service, &server_service]
136+
.map(|service| async {
137+
let rpc = RpcServer::bind(addr, service.clone()).await.unwrap();
138+
let addr = rpc.local_addr();
139+
(rpc, addr)
140+
});
141+
let ((client, client_addr), (server, server_addr)) = futures::future::join(client, server).await;
138142

139143
// Test string -> string
140144
let hello_ret = timed_future!(client.hello(server_addr, "foo".into()));

src/server.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,12 @@ impl<T: RpcService + Sync + Send +'static> RpcServer<T>
198198
})
199199
}
200200

201+
/// Get the socket bound address
202+
pub fn local_addr(&self) -> SocketAddr {
203+
self.inner.socket.local_addr()
204+
.expect("Socket lost it's address?")
205+
}
206+
201207
fn handle_packet(inner: Arc<RpcServerInner<T>>, source: SocketAddr, packet: Vec<u8>) {
202208

203209
match packet[0] {

0 commit comments

Comments
 (0)