From abc800aaa58d4e303dd83caa70408e2667c494de Mon Sep 17 00:00:00 2001 From: James-Mart Date: Fri, 4 Oct 2024 17:15:53 +0000 Subject: [PATCH 1/2] reverse order that the http servers are checked --- services/system/HttpServer/src/HttpServer.cpp | 30 ++++++++++++------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/services/system/HttpServer/src/HttpServer.cpp b/services/system/HttpServer/src/HttpServer.cpp index 3effbc31c..93fec1a84 100644 --- a/services/system/HttpServer/src/HttpServer.cpp +++ b/services/system/HttpServer/src/HttpServer.cpp @@ -220,19 +220,27 @@ namespace SystemService // TODO: use a view auto [sock, req] = psio::from_frac>(act.rawData); - // First we check the `sites` server - auto server = "sites"_a; - currentRequest = {.socket = sock, .owner = server}; - auto result = iface(server).serveSys(req, std::optional{sock}); - - // If not found, we check the registered server - if (!result && currentRequest) + // First we check the registered server + auto service = getTargetService(req); + auto registered = getServer(service); + std::optional result; + psibase::AccountNumber server; + if (!registered) { - auto service = getTargetService(req); - auto registered = getServer(service); - if (registered) + // Check sites + server = "sites"_a; + currentRequest = {.socket = sock, .owner = server}; + result = iface(server).serveSys(req, std::optional{sock}); + } else { + // Check registered server, then sites if nothing found + server = registered->server; + currentRequest = {.socket = sock, .owner = server}; + result = iface(server).serveSys(req, std::optional{sock}); + + // If not found, we check the `sites` server + if (!result && currentRequest) { - server = registered->server; + server = "sites"_a; currentRequest = {.socket = sock, .owner = server}; result = iface(server).serveSys(req, std::optional{sock}); } From ff6ea587433524a335fbd45e935b52277a105bd6 Mon Sep 17 00:00:00 2001 From: James-Mart Date: Mon, 7 Oct 2024 17:32:56 +0000 Subject: [PATCH 2/2] simplify http server logic --- services/system/HttpServer/src/HttpServer.cpp | 30 ++++++++----------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/services/system/HttpServer/src/HttpServer.cpp b/services/system/HttpServer/src/HttpServer.cpp index 93fec1a84..613657ca5 100644 --- a/services/system/HttpServer/src/HttpServer.cpp +++ b/services/system/HttpServer/src/HttpServer.cpp @@ -225,25 +225,21 @@ namespace SystemService auto registered = getServer(service); std::optional result; psibase::AccountNumber server; - if (!registered) - { - // Check sites - server = "sites"_a; - currentRequest = {.socket = sock, .owner = server}; - result = iface(server).serveSys(req, std::optional{sock}); - } else { - // Check registered server, then sites if nothing found - server = registered->server; + + auto checkServer = [&](psibase::AccountNumber srv) { + server = srv; currentRequest = {.socket = sock, .owner = server}; - result = iface(server).serveSys(req, std::optional{sock}); + return iface(server).serveSys(req, std::optional{sock}); + }; - // If not found, we check the `sites` server - if (!result && currentRequest) - { - server = "sites"_a; - currentRequest = {.socket = sock, .owner = server}; - result = iface(server).serveSys(req, std::optional{sock}); - } + if (registered) + { + result = checkServer(registered->server); + } + + if (!registered || (!result && currentRequest)) + { + result = checkServer("sites"_a); } if (currentRequest)