mirror of
https://gitea.wildfiregames.com/0ad/0ad.git
synced 2026-09-21 20:06:40 +00:00
Don't hardcode the "0ad" resource into lobby XMPP & hosting
XMPP JID has a concept of 'resources', which can be used to differentiate multiple clients of the same account. We currently hardcode this 'resource' to '0ad' in two places: - The 0 A.D. client always uses '0ad' - The network code expects a host resource to be '0ad' when connecting. As noted in 0fd8aa2a77#31215, it is less effort to store the JI D directly. This patch does that. It also makes 0 A.D. use a different resource each time. Note that resources ought not contain particular information, as the XMPP server is free to clobber it. I keep '0ad-' here for debug purposes. This allows: - multiple 0 A.D. instances to log on the lobby at the same time (not massively useful, but good for debugging sometimes) - hosting a game with a custom resource, which will potentially make it easier to have dedi cated servers on one account. Note that hosting multiple games on one account is currently not supported and will have weird behaviour on the lobbybots side. They should be upgraded independently of this. Refs #3556 Differential Revision: https://code.wildfiregames.com/D3500 This was SVN commit r25407.
This commit is contained in:
@@ -87,7 +87,8 @@ CStr HashPassword(const CStr& password)
|
||||
return CStr(Hexify(encrypted, DIGESTSIZE)).UpperCase();
|
||||
}
|
||||
|
||||
void StartNetworkHost(const ScriptRequest& rq, const CStrW& playerName, const u16 serverPort, const CStr& hostLobbyName, bool useSTUN, const CStr& password)
|
||||
|
||||
void StartNetworkHost(const ScriptRequest& rq, const CStrW& playerName, const u16 serverPort, bool useSTUN, const CStr& password)
|
||||
{
|
||||
ENSURE(!g_NetClient);
|
||||
ENSURE(!g_NetServer);
|
||||
@@ -138,7 +139,8 @@ void StartNetworkHost(const ScriptRequest& rq, const CStrW& playerName, const u1
|
||||
g_Game = new CGame(true);
|
||||
g_NetClient = new CNetClient(g_Game);
|
||||
g_NetClient->SetUserName(playerName);
|
||||
g_NetClient->SetHostingPlayerName(hostLobbyName);
|
||||
if (hasLobby)
|
||||
g_NetClient->SetHostJID(g_XmppClient->GetJID());
|
||||
g_NetClient->SetGamePassword(hashedPass);
|
||||
g_NetClient->SetupServerData("127.0.0.1", serverPort, false);
|
||||
g_NetClient->SetControllerSecret(secret);
|
||||
@@ -151,7 +153,7 @@ void StartNetworkHost(const ScriptRequest& rq, const CStrW& playerName, const u1
|
||||
}
|
||||
}
|
||||
|
||||
void StartNetworkJoin(const ScriptRequest& rq, const CStrW& playerName, const CStr& serverAddress, u16 serverPort, bool useSTUN, const CStr& hostJID)
|
||||
void StartNetworkJoin(const ScriptRequest& rq, const CStrW& playerName, const CStr& serverAddress, u16 serverPort)
|
||||
{
|
||||
ENSURE(!g_NetClient);
|
||||
ENSURE(!g_NetServer);
|
||||
@@ -160,8 +162,7 @@ void StartNetworkJoin(const ScriptRequest& rq, const CStrW& playerName, const CS
|
||||
g_Game = new CGame(true);
|
||||
g_NetClient = new CNetClient(g_Game);
|
||||
g_NetClient->SetUserName(playerName);
|
||||
g_NetClient->SetHostingPlayerName(hostJID.substr(0, hostJID.find("@")));
|
||||
g_NetClient->SetupServerData(serverAddress, serverPort, useSTUN);
|
||||
g_NetClient->SetupServerData(serverAddress, serverPort, false);
|
||||
|
||||
if (!g_NetClient->SetupConnection(nullptr))
|
||||
{
|
||||
@@ -187,7 +188,7 @@ void StartNetworkJoinLobby(const CStrW& playerName, const CStr& hostJID, const C
|
||||
g_Game = new CGame(true);
|
||||
g_NetClient = new CNetClient(g_Game);
|
||||
g_NetClient->SetUserName(playerName);
|
||||
g_NetClient->SetHostingPlayerName(hostJID.substr(0, hostJID.find("@")));
|
||||
g_NetClient->SetHostJID(hostJID);
|
||||
g_NetClient->SetGamePassword(hashedPass);
|
||||
g_XmppClient->SendIqGetConnectionData(hostJID, hashedPass.c_str());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user