mirror of
https://github.com/cubixle/radius-rs.git
synced 2026-04-30 17:08:45 +01:00
Use tokio::select
This commit is contained in:
+28
-23
@@ -39,31 +39,36 @@ impl<T: RequestHandler, U: SecretProvider> Server<T, U> {
|
|||||||
loop {
|
loop {
|
||||||
let conn = conn_arc.clone();
|
let conn = conn_arc.clone();
|
||||||
|
|
||||||
let (size, remote_addr) = conn.recv_from(&mut buf).await?;
|
tokio::select! {
|
||||||
let request_data = buf[..size].to_vec();
|
received = conn.recv_from(&mut buf) => {
|
||||||
|
let (size, remote_addr) = received?;
|
||||||
|
|
||||||
let local_addr = match conn.local_addr() {
|
let request_data = buf[..size].to_vec();
|
||||||
Ok(addr) => addr,
|
|
||||||
Err(e) => {
|
let local_addr = match conn.local_addr() {
|
||||||
error!("failed to get a local address from from a connection; {}", e);
|
Ok(addr) => addr,
|
||||||
continue;
|
Err(e) => {
|
||||||
|
error!("failed to get a local address from from a connection; {}", e);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
let undergoing_requests_lock = undergoing_requests_lock_arc.clone();
|
||||||
|
|
||||||
|
tokio::spawn(async move {
|
||||||
|
Self::process_request(
|
||||||
|
conn,
|
||||||
|
&request_data,
|
||||||
|
local_addr,
|
||||||
|
remote_addr,
|
||||||
|
undergoing_requests_lock,
|
||||||
|
self.request_handler,
|
||||||
|
self.secret_provider,
|
||||||
|
self.skip_authenticity_validation,
|
||||||
|
).await;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
let undergoing_requests_lock = undergoing_requests_lock_arc.clone();
|
|
||||||
|
|
||||||
tokio::spawn(async move {
|
|
||||||
Self::process_request(
|
|
||||||
conn,
|
|
||||||
&request_data,
|
|
||||||
local_addr,
|
|
||||||
remote_addr,
|
|
||||||
undergoing_requests_lock,
|
|
||||||
self.request_handler,
|
|
||||||
self.secret_provider,
|
|
||||||
self.skip_authenticity_validation,
|
|
||||||
).await;
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user