diff --git a/dll/network.cpp b/dll/network.cpp index 0bae1452..70524873 100644 --- a/dll/network.cpp +++ b/dll/network.cpp @@ -300,7 +300,7 @@ static int send_packet_to(sock_t sock, IP_PORT ip_port, char *data, unsigned lon static int receive_packet(sock_t sock, IP_PORT *ip_port, char *data, unsigned long max_length) { - struct sockaddr_storage addr; + struct sockaddr_storage addr{}; #if defined(STEAM_WIN32) int addrlen = sizeof(addr); #else @@ -943,22 +943,24 @@ void Networking::Run() int len; if (query_alive && is_socket_valid(query_socket)) { - PRINT_DEBUG("RECV QUERY\n"); + PRINT_DEBUG("Networking::Run RECV Source Query\n"); Steam_Client* client = get_steam_client(); sockaddr_in addr; addr.sin_family = AF_INET; while ((len = receive_packet(query_socket, &ip_port, data, sizeof(data))) >= 0) { + PRINT_DEBUG("Networking::Run requesting Source Query server info from Steam_GameServer\n"); client->steam_gameserver->HandleIncomingPacket(data, len, htonl(ip_port.ip), htons(ip_port.port)); len = client->steam_gameserver->GetNextOutgoingPacket(data, sizeof(data), &ip_port.ip, &ip_port.port); + PRINT_DEBUG("Networking::Run sending Source Query server info\n"); addr.sin_addr.s_addr = htonl(ip_port.ip); addr.sin_port = htons(ip_port.port); sendto(query_socket, data, len, 0, (sockaddr*)&addr, sizeof(addr)); } } - PRINT_DEBUG("RECV UDP\n"); + PRINT_DEBUG("Networking::Run RECV UDP\n"); while((len = receive_packet(udp_socket, &ip_port, data, sizeof(data))) >= 0) { PRINT_DEBUG("recv %i %hhu.%hhu.%hhu.%hhu:%hu\n", len, ((unsigned char *)&ip_port.ip)[0], ((unsigned char *)&ip_port.ip)[1], ((unsigned char *)&ip_port.ip)[2], ((unsigned char *)&ip_port.ip)[3], htons(ip_port.port)); Common_Message msg; @@ -981,7 +983,7 @@ void Networking::Run() } } - PRINT_DEBUG("RECV LOCAL\n"); + PRINT_DEBUG("Networking::Run RECV LOCAL\n"); std::vector local_send_copy = local_send; local_send.clear(); @@ -1346,7 +1348,7 @@ void Networking::startQuery(IP_PORT ip_port) } retry = 0; - sockaddr_in addr; + sockaddr_in addr{}; addr.sin_addr.s_addr = htonl(ip_port.ip); addr.sin_port = htons(ip_port.port); addr.sin_family = AF_INET; @@ -1369,7 +1371,7 @@ void Networking::startQuery(IP_PORT ip_port) } } - char str_ip[16]; + char str_ip[16]{}; inet_ntop(AF_INET, &(addr.sin_addr), str_ip, 16); PRINT_DEBUG("Started query server on %s:%d\n", str_ip, htons(addr.sin_port)); diff --git a/dll/source_query.cpp b/dll/source_query.cpp index f4dace4e..bfea1c0d 100644 --- a/dll/source_query.cpp +++ b/dll/source_query.cpp @@ -152,12 +152,12 @@ std::vector Source_Query::handle_source_query(const void* buffer, size_ source_query_data const& query = *reinterpret_cast(buffer); // || gs.max_player_count() == 0 - if (gs.offline() || query.magic != source_query_magic::simple) - return output_buffer; + if (gs.offline() || query.magic != source_query_magic::simple) return output_buffer; switch (query.header) { case source_query_header::A2S_INFO: + PRINT_DEBUG("Source_Query::handle_source_query got request for server info\n"); if (len >= a2s_query_info_size && !strncmp(query.a2s_info_payload, a2s_info_payload, a2s_info_payload_size)) { std::vector> const& players = *get_steam_client()->steam_gameserver->get_players(); @@ -213,6 +213,7 @@ std::vector Source_Query::handle_source_query(const void* buffer, size_ break; case source_query_header::A2S_PLAYER: + PRINT_DEBUG("Source_Query::handle_source_query got request for player info\n"); if (len >= a2s_query_challenge_size) { if (query.challenge == 0xFFFFFFFFul) @@ -240,6 +241,7 @@ std::vector Source_Query::handle_source_query(const void* buffer, size_ break; case source_query_header::A2S_RULES: + PRINT_DEBUG("Source_Query::handle_source_query got request for rules info\n"); if (len >= a2s_query_challenge_size) { if (query.challenge == 0xFFFFFFFFul) @@ -262,6 +264,10 @@ std::vector Source_Query::handle_source_query(const void* buffer, size_ } } break; + + default: + PRINT_DEBUG("Source_Query::handle_source_query got unknown request\n"); + break; } return output_buffer; } diff --git a/dll/steam_matchmaking_servers.cpp b/dll/steam_matchmaking_servers.cpp index c056c9a4..50554a55 100644 --- a/dll/steam_matchmaking_servers.cpp +++ b/dll/steam_matchmaking_servers.cpp @@ -15,7 +15,7 @@ License along with the Goldberg Emulator; if not, see . */ -#include "dll/steam_matchmaking_servers.h" +#include "dll/dll.h" static void network_callback(void *object, Common_Message *msg) @@ -652,16 +652,14 @@ void Steam_Matchmaking_Servers::RunCallbacks() if (r.players_response) { uint32_t number_players = g.server.num_players(); - PRINT_DEBUG("Steam_Matchmaking_Servers players: %i\n", number_players); - // const auto &players = get_steam_client()->steam_gameserver->get_players(); - // auto &player = players->begin(); - - // for (int i = 0; i < number_players && i < players->size(); i++) { - // float playtime = static_cast(std::chrono::duration_cast(std::chrono::steady_clock::now() - player->second.join_time).count()); - // PRINT_DEBUG("Steam_Matchmaking_Servers PLAYER [%u] '%s' %u %f\n", i, player->second.name.c_str(), player->second.score, playtime); - // r.players_response->AddPlayerToList(player->second.name.c_str(), player->second.score, playtime); - // ++player; - // } + PRINT_DEBUG("Steam_Matchmaking_Servers players: %u\n", number_players); + const auto &players = get_steam_client()->steam_gameserver->get_players(); + auto &player = players->cbegin(); + for (int i = 0; i < number_players && player != players->end(); ++i, ++player) { + float playtime = static_cast(std::chrono::duration_cast(std::chrono::steady_clock::now() - player->second.join_time).count()); + PRINT_DEBUG("Steam_Matchmaking_Servers PLAYER [%u] '%s' %u %f\n", i, player->second.name.c_str(), player->second.score, playtime); + r.players_response->AddPlayerToList(player->second.name.c_str(), player->second.score, playtime); + } r.players_response->PlayersRefreshComplete(); r.players_response = NULL; }