Fixes and stuff.
This commit is contained in:
parent
c392eba620
commit
1e3a832be7
@ -24,8 +24,12 @@ namespace Components
|
||||
int start = Game::Com_Milliseconds();
|
||||
|
||||
Logger::Print("Starting local server discovery...\n");
|
||||
|
||||
Discovery::DiscoveryContainer.Challenge = Utils::VA("%d", Game::Com_Milliseconds());
|
||||
|
||||
//Network::BroadcastAll("discovery\n");
|
||||
Network::BroadcastRange(28960, 38960, "discovery\n");
|
||||
Network::BroadcastRange(28960, 38960, Utils::VA("discovery\n%s", Discovery::DiscoveryContainer.Challenge.data()));
|
||||
|
||||
Logger::Print("Discovery sent within %dms, awaiting responses...\n", Game::Com_Milliseconds() - start);
|
||||
|
||||
Discovery::DiscoveryContainer.Perform = false;
|
||||
@ -46,7 +50,7 @@ namespace Components
|
||||
}
|
||||
|
||||
Logger::Print("Received discovery request from %s\n", address.GetString());
|
||||
Network::Send(address, "discoveryResponse\n");
|
||||
Network::Send(address, Utils::VA("discoveryResponse\n%s", data.data()));
|
||||
});
|
||||
|
||||
Network::Handle("discoveryResponse", [] (Network::Address address, std::string data)
|
||||
@ -59,7 +63,13 @@ namespace Components
|
||||
return;
|
||||
}
|
||||
|
||||
Logger::Print("Received discovery response from %s\n", address.GetString());
|
||||
if (Utils::ParseChallenge(data) != Discovery::DiscoveryContainer.Challenge)
|
||||
{
|
||||
Logger::Print("Received discovery with invalid challenge from: %s\n", address.GetString());
|
||||
return;
|
||||
}
|
||||
|
||||
Logger::Print("Received discovery response from: %s\n", address.GetString());
|
||||
|
||||
if (ServerList::IsOfflineList())
|
||||
{
|
||||
|
@ -15,6 +15,7 @@ namespace Components
|
||||
bool Perform;
|
||||
bool Terminate;
|
||||
std::thread* Thread;
|
||||
std::string Challenge;
|
||||
};
|
||||
|
||||
static Container DiscoveryContainer;
|
||||
|
@ -249,11 +249,8 @@ namespace Components
|
||||
clientCount = Game::PartyHost_CountMembers((Game::PartyData_s*)0x1081C00);
|
||||
}
|
||||
|
||||
// Ensure line break
|
||||
data.append("\n");
|
||||
|
||||
Utils::InfoString info;
|
||||
info.Set("challenge", data.substr(0, data.find_first_of("\n")).data());
|
||||
info.Set("challenge", Utils::ParseChallenge(data));
|
||||
info.Set("gamename", "IW4");
|
||||
info.Set("hostname", Dvar::Var("sv_hostname").Get<const char*>());
|
||||
info.Set("gametype", Dvar::Var("g_gametype").Get<const char*>());
|
||||
|
@ -90,7 +90,7 @@ namespace Components
|
||||
|
||||
if (Playlist::ReceivedPlaylistBuffer.size() == maxBytes)
|
||||
{
|
||||
Logger::Print("Received playlist response, loading and continuing connection.\n");
|
||||
Logger::Print("Received playlist, loading and continuing connection...\n");
|
||||
Game::Live_ParsePlaylists(Playlist::ReceivedPlaylistBuffer.data());
|
||||
Party::PlaylistContinue();
|
||||
|
||||
|
@ -457,5 +457,10 @@ namespace Components
|
||||
ServerList::OfflineList.clear();
|
||||
ServerList::FavouriteList.clear();
|
||||
ServerList::VisibleList.clear();
|
||||
|
||||
ServerList::RefreshContainer.Mutex.lock();
|
||||
ServerList::RefreshContainer.AwatingList = false;
|
||||
ServerList::RefreshContainer.Servers.clear();
|
||||
ServerList::RefreshContainer.Mutex.unlock();
|
||||
}
|
||||
}
|
||||
|
@ -97,6 +97,13 @@ namespace Utils
|
||||
return LTrim(RTrim(s));
|
||||
}
|
||||
|
||||
std::string ParseChallenge(std::string data)
|
||||
{
|
||||
// Ensure line break
|
||||
data.append("\n");
|
||||
return data.substr(0, data.find_first_of("\n")).data();
|
||||
}
|
||||
|
||||
// Infostring class
|
||||
void InfoString::Set(std::string key, std::string value)
|
||||
{
|
||||
|
@ -10,6 +10,8 @@ namespace Utils
|
||||
std::string &RTrim(std::string &s);
|
||||
std::string &Trim(std::string &s);
|
||||
|
||||
std::string ParseChallenge(std::string data);
|
||||
|
||||
class InfoString
|
||||
{
|
||||
public:
|
||||
|
Loading…
Reference in New Issue
Block a user