http_private: use CanonicalSocketAddr when calling DB

This commit is contained in:
Joakim Frostegård 2022-04-03 00:39:06 +02:00
parent 96e128bb90
commit 5d4f30bb7b
2 changed files with 11 additions and 14 deletions

View file

@ -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,

View file

@ -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)))?;