aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2023-12-18 12:19:10 +0100
committerfunjoker <funjoker109@gmail.com>2023-12-19 14:15:13 +0100
commit2ba0adee4b7cd6a6a09df7427bd58a3fa5eaa99a (patch)
treecffc7d903220e702df45a30eb0ce89783c24b40b
parent123f2ad97e9cc53504b9e0faa1c180f4d979126f (diff)
Core/Bnet: Add new loggers to config file template, fixed request/response content logging and fixed setting keep_alive on responses
(cherry picked from commit 15fce17c1a5dea8c1d6153d2ce33a8812ffb209b)
-rw-r--r--src/server/bnetserver/REST/LoginRESTService.cpp10
-rw-r--r--src/server/bnetserver/bnetserver.conf.dist4
-rw-r--r--src/server/shared/Networking/Http/BaseHttpSocket.h4
-rw-r--r--src/server/shared/Networking/Http/HttpService.cpp7
4 files changed, 15 insertions, 10 deletions
diff --git a/src/server/bnetserver/REST/LoginRESTService.cpp b/src/server/bnetserver/REST/LoginRESTService.cpp
index 602a38dceed..7636cbe7bf3 100644
--- a/src/server/bnetserver/REST/LoginRESTService.cpp
+++ b/src/server/bnetserver/REST/LoginRESTService.cpp
@@ -26,8 +26,6 @@
#include "ProtobufJSON.h"
#include "Resolver.h"
#include "Util.h"
-#include <boost/uuid/string_generator.hpp>
-#include <fmt/chrono.h>
namespace Battlenet
{
@@ -78,7 +76,7 @@ bool LoginRESTService::StartNetwork(Trinity::Asio::IoContext& ioContext, std::st
Optional<boost::asio::ip::tcp::endpoint> externalAddress = resolver.Resolve(boost::asio::ip::tcp::v4(), _hostnames[0], std::to_string(_port));
if (!externalAddress)
{
- TC_LOG_ERROR("server.rest", "Could not resolve LoginREST.ExternalAddress {}", _hostnames[0]);
+ TC_LOG_ERROR("server.http.login", "Could not resolve LoginREST.ExternalAddress {}", _hostnames[0]);
return false;
}
@@ -88,7 +86,7 @@ bool LoginRESTService::StartNetwork(Trinity::Asio::IoContext& ioContext, std::st
Optional<boost::asio::ip::tcp::endpoint> localAddress = resolver.Resolve(boost::asio::ip::tcp::v4(), _hostnames[1], std::to_string(_port));
if (!localAddress)
{
- TC_LOG_ERROR("server.rest", "Could not resolve LoginREST.LocalAddress {}", _hostnames[1]);
+ TC_LOG_ERROR("server.http.login", "Could not resolve LoginREST.LocalAddress {}", _hostnames[1]);
return false;
}
@@ -288,7 +286,7 @@ LoginRESTService::RequestHandlerResult LoginRESTService::HandlePostLogin(std::sh
uint32 maxWrongPassword = uint32(sConfigMgr->GetIntDefault("WrongPass.MaxCount", 0));
if (sConfigMgr->GetBoolDefault("WrongPass.Logging", false))
- TC_LOG_DEBUG("server.rest", "[{}, Account {}, Id {}] Attempted to connect with wrong password!", ip_address, login, accountId);
+ TC_LOG_DEBUG("server.http.login", "[{}, Account {}, Id {}] Attempted to connect with wrong password!", ip_address, login, accountId);
if (maxWrongPassword)
{
@@ -299,7 +297,7 @@ LoginRESTService::RequestHandlerResult LoginRESTService::HandlePostLogin(std::sh
++failedLogins;
- TC_LOG_DEBUG("server.rest", "MaxWrongPass : {}, failed_login : {}", maxWrongPassword, accountId);
+ TC_LOG_DEBUG("server.http.login", "MaxWrongPass : {}, failed_login : {}", maxWrongPassword, accountId);
if (failedLogins >= maxWrongPassword)
{
diff --git a/src/server/bnetserver/bnetserver.conf.dist b/src/server/bnetserver/bnetserver.conf.dist
index 0b5821e66b8..94fd3964590 100644
--- a/src/server/bnetserver/bnetserver.conf.dist
+++ b/src/server/bnetserver/bnetserver.conf.dist
@@ -434,6 +434,10 @@ Appender.Bnet=2,2,0,Bnet.log,w
Logger.root=3,Console Bnet
Logger.realmlist=3,Console Bnet
+Logger.server.http=3,Console Bnet
+Logger.server.http.login=3,Console Bnet
+Logger.server.http.dispatcher.login=3,Console Bnet
+Logger.server.http.session.login=3,Console Bnet
Logger.session=3,Console Bnet
Logger.session.packets=3,Console Bnet
Logger.sql.updates=3,Console Bnet
diff --git a/src/server/shared/Networking/Http/BaseHttpSocket.h b/src/server/shared/Networking/Http/BaseHttpSocket.h
index 330287252d2..c02b13e6463 100644
--- a/src/server/shared/Networking/Http/BaseHttpSocket.h
+++ b/src/server/shared/Networking/Http/BaseHttpSocket.h
@@ -126,9 +126,9 @@ public:
ToStdStringView(context.request.target()), context.response.result_int());
if (sLog->ShouldLog("server.http", LOG_LEVEL_TRACE))
{
- sLog->OutMessage("server.http", LOG_LEVEL_TRACE, "{} Request: ", this->GetClientInfo(),
+ sLog->OutMessage("server.http", LOG_LEVEL_TRACE, "{} Request: {}", this->GetClientInfo(),
CanLogRequestContent(context) ? SerializeRequest(context.request) : "<REDACTED>");
- sLog->OutMessage("server.http", LOG_LEVEL_TRACE, "{} Response: ", this->GetClientInfo(),
+ sLog->OutMessage("server.http", LOG_LEVEL_TRACE, "{} Response: {}", this->GetClientInfo(),
CanLogResponseContent(context) ? std::string_view(reinterpret_cast<char const*>(buffer.GetBasePointer()), buffer.GetActiveSize()) : "<REDACTED>");
}
diff --git a/src/server/shared/Networking/Http/HttpService.cpp b/src/server/shared/Networking/Http/HttpService.cpp
index 8995b65612a..3e80d08959c 100644
--- a/src/server/shared/Networking/Http/HttpService.cpp
+++ b/src/server/shared/Networking/Http/HttpService.cpp
@@ -73,7 +73,7 @@ RequestHandlerResult DispatcherService::HandleRequest(std::shared_ptr<AbstractSo
SystemTimePoint responseDate = SystemTimePoint::clock::now();
context.response.set(boost::beast::http::field::date, StringFormat("{:%a, %d %b %Y %T GMT}", responseDate - Timezone::GetSystemZoneOffsetAt(responseDate)));
context.response.set(boost::beast::http::field::server, BOOST_BEAST_VERSION_STRING);
- context.response.keep_alive(context.response.keep_alive());
+ context.response.keep_alive(context.request.keep_alive());
if (!context.handler)
return HandlePathNotFound(std::move(session), context);
@@ -192,12 +192,15 @@ std::shared_ptr<SessionState> SessionService::FindAndRefreshSessionState(std::st
void SessionService::MarkSessionInactive(boost::uuids::uuid const& id)
{
+ bool wasActive = true;
{
std::unique_lock inactiveSessionsLock{ _inactiveSessionsMutex };
- _inactiveSessions.insert(id);
+ wasActive = _inactiveSessions.insert(id).second;
}
+ if (wasActive)
{
+ std::shared_lock lock{ _sessionsMutex };
auto itr = _sessions.find(id);
if (itr != _sessions.end())
{