diff --git a/aquatic_http_private/src/workers/socket/db.rs b/aquatic_http_private/src/workers/socket/db.rs index b2b094e..f7c3c03 100644 --- a/aquatic_http_private/src/workers/socket/db.rs +++ b/aquatic_http_private/src/workers/socket/db.rs @@ -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, 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, - source_addr: SocketAddr, + source_addr: CanonicalSocketAddr, user_agent: Option, user_token: String, request: AnnounceRequest, diff --git a/aquatic_http_private/src/workers/socket/routes.rs b/aquatic_http_private/src/workers/socket/routes.rs index 320c4a5..923ff4e 100644 --- a/aquatic_http_private/src/workers/socket/routes.rs +++ b/aquatic_http_private/src/workers/socket/routes.rs @@ -25,7 +25,7 @@ pub async fn announce( Extension(config): Extension>, Extension(pool): Extension, Extension(request_sender): Extension>, - ConnectInfo(peer_addr): ConnectInfo, + ConnectInfo(source_addr): ConnectInfo, opt_user_agent: Option>, Path(user_token): Path, 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)))?;