aboutsummaryrefslogtreecommitdiff
path: root/src/zenhttp/servers/httpasio.cpp
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2026-02-12 15:25:05 +0100
committerGitHub Enterprise <[email protected]>2026-02-12 15:25:05 +0100
commit3a563f5e8fcabffe686e1deb5862bdf39078ebdf (patch)
tree91a027f026f2c46a0e406d2203aea9bf60ae2dc8 /src/zenhttp/servers/httpasio.cpp
parentadd simple http client tests (#751) (diff)
downloadzen-3a563f5e8fcabffe686e1deb5862bdf39078ebdf.tar.xz
zen-3a563f5e8fcabffe686e1deb5862bdf39078ebdf.zip
add IsLocalMachineRequest to HttpServerRequest (#749)
* add IsLocalMachineRequest to HttpServerRequest
Diffstat (limited to 'src/zenhttp/servers/httpasio.cpp')
-rw-r--r--src/zenhttp/servers/httpasio.cpp23
1 files changed, 20 insertions, 3 deletions
diff --git a/src/zenhttp/servers/httpasio.cpp b/src/zenhttp/servers/httpasio.cpp
index 76fea65b3..8bfbd8b37 100644
--- a/src/zenhttp/servers/httpasio.cpp
+++ b/src/zenhttp/servers/httpasio.cpp
@@ -529,12 +529,18 @@ public:
class HttpAsioServerRequest : public HttpServerRequest
{
public:
- HttpAsioServerRequest(HttpRequestParser& Request, HttpService& Service, IoBuffer PayloadBuffer, uint32_t RequestNumber);
+ HttpAsioServerRequest(HttpRequestParser& Request,
+ HttpService& Service,
+ IoBuffer PayloadBuffer,
+ uint32_t RequestNumber,
+ bool IsLocalMachineRequest);
~HttpAsioServerRequest();
virtual Oid ParseSessionId() const override;
virtual uint32_t ParseRequestId() const override;
+ virtual bool IsLocalMachineRequest() const override;
+
virtual IoBuffer ReadPayload() override;
virtual void WriteResponse(HttpResponseCode ResponseCode) override;
virtual void WriteResponse(HttpResponseCode ResponseCode, HttpContentType ContentType, std::span<IoBuffer> Blobs) override;
@@ -550,6 +556,7 @@ public:
HttpRequestParser& m_Request;
uint32_t m_RequestNumber = 0; // Note: different to request ID which is derived from headers
IoBuffer m_PayloadBuffer;
+ bool m_IsLocalMachineRequest;
std::unique_ptr<HttpResponse> m_Response;
};
@@ -1168,7 +1175,9 @@ HttpServerConnection::HandleRequest()
{
ZEN_TRACE_CPU("asio::HandleRequest");
- HttpAsioServerRequest Request(m_RequestData, *Service, m_RequestData.Body(), RequestNumber);
+ bool IsLocalConnection = m_Socket->local_endpoint().address() == m_Socket->remote_endpoint().address();
+
+ HttpAsioServerRequest Request(m_RequestData, *Service, m_RequestData.Body(), RequestNumber, IsLocalConnection);
ZEN_TRACE_VERBOSE("handle request, connection: {}, request: {}'", m_ConnectionId, RequestNumber);
@@ -1634,11 +1643,13 @@ private:
HttpAsioServerRequest::HttpAsioServerRequest(HttpRequestParser& Request,
HttpService& Service,
IoBuffer PayloadBuffer,
- uint32_t RequestNumber)
+ uint32_t RequestNumber,
+ bool IsLocalMachineRequest)
: HttpServerRequest(Service)
, m_Request(Request)
, m_RequestNumber(RequestNumber)
, m_PayloadBuffer(std::move(PayloadBuffer))
+, m_IsLocalMachineRequest(IsLocalMachineRequest)
{
const int PrefixLength = Service.UriPrefixLength();
@@ -1710,6 +1721,12 @@ HttpAsioServerRequest::ParseRequestId() const
return m_Request.RequestId();
}
+bool
+HttpAsioServerRequest::IsLocalMachineRequest() const
+{
+ return m_IsLocalMachineRequest;
+}
+
IoBuffer
HttpAsioServerRequest::ReadPayload()
{