aboutsummaryrefslogtreecommitdiff
path: root/src/zenhttp/servers/httpasio.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/zenhttp/servers/httpasio.cpp')
-rw-r--r--src/zenhttp/servers/httpasio.cpp28
1 files changed, 26 insertions, 2 deletions
diff --git a/src/zenhttp/servers/httpasio.cpp b/src/zenhttp/servers/httpasio.cpp
index a2cae8762..7972777b8 100644
--- a/src/zenhttp/servers/httpasio.cpp
+++ b/src/zenhttp/servers/httpasio.cpp
@@ -1330,14 +1330,36 @@ HttpServerConnectionT<SocketType>::HandleRequest()
{
auto RemoteEndpoint = m_Socket->remote_endpoint();
IsLocalConnection = m_Socket->local_endpoint().address() == RemoteEndpoint.address();
- RemoteAddress = RemoteEndpoint.address().to_string();
+ auto Addr = RemoteEndpoint.address();
+ RemoteAddress = Addr.to_string();
+ if (Addr.is_v4())
+ {
+ auto Bytes = Addr.to_v4().to_bytes();
+ m_Server.m_HttpServer->MarkClientAddress(Bytes.data(), Bytes.size());
+ }
+ else
+ {
+ auto Bytes = Addr.to_v6().to_bytes();
+ m_Server.m_HttpServer->MarkClientAddress(Bytes.data(), Bytes.size());
+ }
}
#if ZEN_USE_OPENSSL
else if constexpr (std::is_same_v<SocketType, SslSocket>)
{
auto RemoteEndpoint = m_Socket->lowest_layer().remote_endpoint();
IsLocalConnection = m_Socket->lowest_layer().local_endpoint().address() == RemoteEndpoint.address();
- RemoteAddress = RemoteEndpoint.address().to_string();
+ auto Addr = RemoteEndpoint.address();
+ RemoteAddress = Addr.to_string();
+ if (Addr.is_v4())
+ {
+ auto Bytes = Addr.to_v4().to_bytes();
+ m_Server.m_HttpServer->MarkClientAddress(Bytes.data(), Bytes.size());
+ }
+ else
+ {
+ auto Bytes = Addr.to_v6().to_bytes();
+ m_Server.m_HttpServer->MarkClientAddress(Bytes.data(), Bytes.size());
+ }
}
#endif
else
@@ -1345,6 +1367,8 @@ HttpServerConnectionT<SocketType>::HandleRequest()
RemoteAddress = "unix";
}
+ m_Server.m_HttpServer->MarkSessionId(m_RequestData.SessionId());
+
HttpAsioServerRequest Request(m_RequestData,
*Service,
m_RequestData.Body(),