From 15fce17c1a5dea8c1d6153d2ce33a8812ffb209b Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 18 Dec 2023 12:19:10 +0100 Subject: Core/Bnet: Add new loggers to config file template, fixed request/response content logging and fixed setting keep_alive on responses --- src/server/bnetserver/REST/LoginRESTService.cpp | 10 ++++------ src/server/bnetserver/bnetserver.conf.dist | 4 ++++ src/server/shared/Networking/Http/BaseHttpSocket.h | 4 ++-- src/server/shared/Networking/Http/HttpService.cpp | 7 +++++-- 4 files changed, 15 insertions(+), 10 deletions(-) (limited to 'src') 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 -#include namespace Battlenet { @@ -78,7 +76,7 @@ bool LoginRESTService::StartNetwork(Trinity::Asio::IoContext& ioContext, std::st Optional 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 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) : ""); - 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(buffer.GetBasePointer()), buffer.GetActiveSize()) : ""); } 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 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()) { -- cgit v1.2.3