Skip to content
Merged
2 changes: 1 addition & 1 deletion CODEOWNERS
Original file line number Diff line number Diff line change
@@ -1 +1 @@
* @makemake-kbo @0xgregthedev
* @makemake-kbo @0xgregthedev @fredo
27 changes: 21 additions & 6 deletions crates/server/src/api/accept.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,14 @@ pub async fn accept_request<B>(
db: DbRequestSender,
signer: &PrivateKeySigner,
docker: Arc<Docker>,
client_addr: std::net::SocketAddr,
) -> Result<hyper::Response<Full<Bytes>>, Infallible>
where
B: hyper::body::Body<Error = Error>,
{
tracing::debug!(target = "api::accept_request", "Incoming request");
// Respond accordingly
let resp = match match_method(tx, &db, signer, docker).await {
let resp = match match_method(tx, &db, signer, docker, client_addr).await {
Ok(rax) => rax,
Err(e) => {
let e = e.to_string();
Expand All @@ -58,18 +59,32 @@ macro_rules! accept {
$io:expr,
$db:expr,
$signer:expr,
$docker:expr
$docker:expr,
$client_addr:expr
) => {
let db_c = $db.clone();
let signer_clone = $signer.clone();
let docker_clone = $docker.clone();
let client_addr = $client_addr;
// Bind the incoming connection to our service
if let Err(err) = hyper::server::conn::http1::Builder::new()
// `service_fn` converts our function in a `Service`
.serve_connection(
$io,
hyper::service::service_fn(|req| {
let response =
$crate::api::accept::accept_request(req, db_c.clone(), $signer, $docker);
response
hyper::service::service_fn(move |req| {
let db_c = db_c.clone();
let signer_clone = signer_clone.clone();
let docker_clone = docker_clone.clone();
async move {
$crate::api::accept::accept_request(
req,
db_c,
&signer_clone,
docker_clone,
client_addr,
)
.await
}
}),
)
.with_upgrades()
Expand Down
2 changes: 1 addition & 1 deletion crates/server/src/api/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ fn serve_connection(

// Spawn a tokio task to serve multiple connections concurrently
tokio::task::spawn(async move {
crate::accept!(io, db_clone, &signer, docker_clone.clone());
crate::accept!(io, db_clone, &signer, docker_clone.clone(), socketaddr);
});
}

Expand Down
Loading