mirror of
https://github.com/YGGverse/aquatic.git
synced 2026-03-31 17:55:36 +00:00
http_private: use CanonicalSocketAddr when calling DB
This commit is contained in:
parent
96e128bb90
commit
5d4f30bb7b
2 changed files with 11 additions and 14 deletions
|
|
@ -1,5 +1,6 @@
|
|||
use std::net::{IpAddr, SocketAddr};
|
||||
use std::net::IpAddr;
|
||||
|
||||
use aquatic_common::CanonicalSocketAddr;
|
||||
use aquatic_http_protocol::{
|
||||
common::AnnounceEvent, request::AnnounceRequest, response::FailureResponse,
|
||||
};
|
||||
|
|
@ -30,14 +31,14 @@ struct AnnounceProcedureParameters {
|
|||
|
||||
impl AnnounceProcedureParameters {
|
||||
fn new(
|
||||
source_addr: SocketAddr,
|
||||
source_addr: CanonicalSocketAddr,
|
||||
user_agent: Option<String>,
|
||||
user_token: String, // FIXME: length
|
||||
request: &AnnounceRequest,
|
||||
) -> Self {
|
||||
Self {
|
||||
source_ip: source_addr.ip(),
|
||||
source_port: source_addr.port(),
|
||||
source_ip: source_addr.get().ip(),
|
||||
source_port: source_addr.get().port(),
|
||||
user_agent,
|
||||
user_token,
|
||||
info_hash: hex::encode(request.info_hash.0),
|
||||
|
|
@ -59,7 +60,7 @@ struct AnnounceProcedureResults {
|
|||
|
||||
pub async fn validate_announce_request(
|
||||
pool: &Pool<MySql>,
|
||||
source_addr: SocketAddr,
|
||||
source_addr: CanonicalSocketAddr,
|
||||
user_agent: Option<String>,
|
||||
user_token: String,
|
||||
request: AnnounceRequest,
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ pub async fn announce(
|
|||
Extension(config): Extension<Arc<Config>>,
|
||||
Extension(pool): Extension<MySqlPool>,
|
||||
Extension(request_sender): Extension<Arc<ChannelRequestSender>>,
|
||||
ConnectInfo(peer_addr): ConnectInfo<SocketAddr>,
|
||||
ConnectInfo(source_addr): ConnectInfo<SocketAddr>,
|
||||
opt_user_agent: Option<TypedHeader<UserAgent>>,
|
||||
Path(user_token): Path<String>,
|
||||
RawQuery(query): RawQuery,
|
||||
|
|
@ -38,19 +38,15 @@ pub async fn announce(
|
|||
let request_worker_index = RequestWorkerIndex::from_info_hash(&config, request.info_hash);
|
||||
let opt_user_agent = opt_user_agent.map(|header| header.as_str().to_owned());
|
||||
|
||||
let source_addr = CanonicalSocketAddr::new(source_addr);
|
||||
|
||||
let validated_request =
|
||||
db::validate_announce_request(&pool, peer_addr, opt_user_agent, user_token, request)
|
||||
db::validate_announce_request(&pool, source_addr, opt_user_agent, user_token, request)
|
||||
.await
|
||||
.map_err(|r| create_response(Response::Failure(r)))?;
|
||||
|
||||
let canonical_socket_addr = CanonicalSocketAddr::new(peer_addr);
|
||||
|
||||
let response_receiver = request_sender
|
||||
.send_to(
|
||||
request_worker_index,
|
||||
validated_request,
|
||||
canonical_socket_addr,
|
||||
)
|
||||
.send_to(request_worker_index, validated_request, source_addr)
|
||||
.await
|
||||
.map_err(|err| internal_error(format!("Sending request over channel failed: {:#}", err)))?;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue