mirror of
https://github.com/YGGverse/aquatic.git
synced 2026-04-01 02:05:30 +00:00
aquatic_udp: drop MutexGuard quicker; clean up
This commit is contained in:
parent
e2be31c7de
commit
f64e2e726b
1 changed files with 14 additions and 20 deletions
|
|
@ -2,11 +2,7 @@ use std::net::SocketAddr;
|
|||
use std::time::Duration;
|
||||
|
||||
use crossbeam_channel::{Receiver, Sender};
|
||||
use parking_lot::MutexGuard;
|
||||
use rand::{
|
||||
rngs::{SmallRng, StdRng},
|
||||
SeedableRng,
|
||||
};
|
||||
use rand::{rngs::SmallRng, SeedableRng};
|
||||
|
||||
use aquatic_udp_protocol::*;
|
||||
|
||||
|
|
@ -27,11 +23,9 @@ pub fn run_request_worker(
|
|||
) {
|
||||
let mut announce_requests: Vec<(AnnounceRequest, SocketAddr)> = Vec::new();
|
||||
let mut scrape_requests: Vec<(ScrapeRequest, SocketAddr)> = Vec::new();
|
||||
|
||||
let mut responses: Vec<(ConnectedResponse, SocketAddr)> = Vec::new();
|
||||
|
||||
let mut std_rng = StdRng::from_entropy();
|
||||
let mut small_rng = SmallRng::from_rng(&mut std_rng).unwrap();
|
||||
let mut small_rng = SmallRng::from_entropy();
|
||||
|
||||
let timeout = Duration::from_micros(config.handlers.channel_recv_timeout_microseconds);
|
||||
|
||||
|
|
@ -70,20 +64,20 @@ pub fn run_request_worker(
|
|||
}
|
||||
}
|
||||
|
||||
let mut torrents: MutexGuard<TorrentMaps> =
|
||||
opt_torrents.unwrap_or_else(|| state.torrents.lock());
|
||||
// Generate responses for announce and scrape requests, then drop MutexGuard.
|
||||
{
|
||||
let mut torrents = opt_torrents.unwrap_or_else(|| state.torrents.lock());
|
||||
|
||||
// Generate responses for announce and scrape requests
|
||||
handle_announce_requests(
|
||||
&config,
|
||||
&mut torrents,
|
||||
&mut small_rng,
|
||||
announce_requests.drain(..),
|
||||
&mut responses,
|
||||
);
|
||||
|
||||
handle_announce_requests(
|
||||
&config,
|
||||
&mut torrents,
|
||||
&mut small_rng,
|
||||
announce_requests.drain(..),
|
||||
&mut responses,
|
||||
);
|
||||
|
||||
handle_scrape_requests(&mut torrents, scrape_requests.drain(..), &mut responses);
|
||||
handle_scrape_requests(&mut torrents, scrape_requests.drain(..), &mut responses);
|
||||
}
|
||||
|
||||
for r in responses.drain(..) {
|
||||
if let Err(err) = response_sender.send(r) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue