diff --git a/loginserver/database_mysql.cpp b/loginserver/database_mysql.cpp index 6603d63e7..15f33c5bc 100644 --- a/loginserver/database_mysql.cpp +++ b/loginserver/database_mysql.cpp @@ -231,39 +231,20 @@ bool Database::GetLoginTokenDataFromToken( */ unsigned int Database::GetFreeID(const std::string &loginserver) { - if (!database) { - return false; - } + auto query = fmt::format( + "SELECT MAX(LoginServerID) + 1 FROM {0} WHERE AccountLoginServer='{1}'", + server.options.GetAccountTable(), + EscapeString(loginserver) + ); - MYSQL_RES *res; - MYSQL_ROW row; - std::stringstream query(std::stringstream::in | std::stringstream::out); - query << "SELECT MAX(LoginServerID) + 1 FROM " << server.options.GetAccountTable() << " WHERE AccountLoginServer='"; - query << EscapeString(loginserver) << "'"; - - if (mysql_query(database, query.str().c_str()) != 0) { - Log(Logs::General, Logs::Error, "Mysql query failed: %s", query.str().c_str()); + auto results = QueryDatabase(query); + if (!results.Success() || results.RowCount() != 1) { return 0; } - res = mysql_use_result(database); + auto row = results.begin(); - if (res) { - while ((row = mysql_fetch_row(res)) != nullptr) { - if (row[0] == nullptr) { - mysql_free_result(res); - return 1; - } - - auto ret = atol(row[0]); - mysql_free_result(res); - return ret; - } - - mysql_free_result(res); - } - - return 1; + return atol(row[0]); } /** diff --git a/loginserver/world_server.cpp b/loginserver/world_server.cpp index 1d6c0d2d3..241ba8413 100644 --- a/loginserver/world_server.cpp +++ b/loginserver/world_server.cpp @@ -478,16 +478,19 @@ void WorldServer::Handle_NewLSInfo(ServerNewLSInfo_Struct *i) } else { Log(Logs::General, Logs::Error, "Handle_NewLSInfo error, local address was too long."); + return; } if (strlen(i->remote_address) <= 125) { if (strlen(i->remote_address) == 0) { remote_ip = GetConnection()->Handle()->RemoteIP(); - Log(Logs::General, + Log( + Logs::General, Logs::Error, - "Handle_NewLSInfo error, remote address was null, defaulting to stream address %s.", - remote_ip.c_str()); + "Remote address was null, defaulting to stream address %s.", + remote_ip.c_str() + ); } else { remote_ip = i->remote_address; @@ -495,10 +498,13 @@ void WorldServer::Handle_NewLSInfo(ServerNewLSInfo_Struct *i) } else { remote_ip = GetConnection()->Handle()->RemoteIP(); - Log(Logs::General, + + Log( + Logs::General, Logs::Error, "Handle_NewLSInfo error, remote address was too long, defaulting to stream address %s.", - remote_ip.c_str()); + remote_ip.c_str() + ); } if (strlen(i->serverversion) <= 64) { @@ -687,11 +693,12 @@ void WorldServer::Handle_NewLSInfo(ServerNewLSInfo_Struct *i) } } else { - Log(Logs::General, - Logs::World_Server, - "Server %s(%s) attempted to log in but database couldn't find an entry but unregistered servers are allowed.", - long_name.c_str(), - short_name.c_str()); + LogF(Logs::General, + Logs::World_Server, + "Server [{0}] ({1}) is not registered but unregistered servers are allowed", + long_name, + short_name + ); if (server.db->CreateWorldRegistration(long_name, short_name, server_id)) { is_server_authorized = true;