From 2039d880255141171193e65bd7d74f58fc81cf58 Mon Sep 17 00:00:00 2001 From: Adam Johnson Date: Sat, 3 Jan 2015 00:42:29 -0500 Subject: [PATCH] Convert server name stuff to plString --- Sources/Plasma/Apps/plClient/winmain.cpp | 12 +-- .../Apps/plUruLauncher/plClientLauncher.cpp | 17 ++-- .../pfConsoleCore/pfConsoleCommandsCore.cpp | 13 ++-- .../Plasma/NucleusLib/pnNetBase/pnNbSrvs.cpp | 78 +++++++------------ .../Plasma/NucleusLib/pnNetBase/pnNbSrvs.h | 26 ++++--- .../NucleusLib/pnNetCommon/plNetAddress.cpp | 4 +- .../NucleusLib/pnNetCommon/plNetAddress.h | 4 +- .../NucleusLib/pnNetCommon/pnNetCommon.cpp | 8 +- .../NucleusLib/pnNetCommon/pnNetCommon.h | 2 +- .../plNetClientComm/plNetClientComm.cpp | 26 +++---- .../plNetGameLib/Private/plNglAuth.cpp | 14 ++-- .../plNetGameLib/Private/plNglAuth.h | 2 +- .../plNetGameLib/Private/plNglFile.cpp | 23 +++--- .../plNetGameLib/Private/plNglFile.h | 2 +- .../plNetGameLib/Private/plNglGateKeeper.cpp | 26 +++---- .../plNetGameLib/Private/plNglGateKeeper.h | 16 ++-- 16 files changed, 124 insertions(+), 149 deletions(-) diff --git a/Sources/Plasma/Apps/plClient/winmain.cpp b/Sources/Plasma/Apps/plClient/winmain.cpp index 3c37fcbc..7d7e15d6 100644 --- a/Sources/Plasma/Apps/plClient/winmain.cpp +++ b/Sources/Plasma/Apps/plClient/winmain.cpp @@ -871,7 +871,7 @@ void StatusCallback(void *param) HWND hwnd = (HWND)param; - const char *statusUrl = GetServerStatusUrl(); + plString statusUrl = GetServerStatusUrl(); CURL *hCurl = curl_easy_init(); // For reporting errors @@ -880,14 +880,14 @@ void StatusCallback(void *param) while(s_loginDlgRunning) { - curl_easy_setopt(hCurl, CURLOPT_URL, statusUrl); + curl_easy_setopt(hCurl, CURLOPT_URL, statusUrl.c_str()); curl_easy_setopt(hCurl, CURLOPT_USERAGENT, "UruClient/1.0"); curl_easy_setopt(hCurl, CURLOPT_WRITEFUNCTION, &CurlCallback); curl_easy_setopt(hCurl, CURLOPT_WRITEDATA, param); - if (statusUrl[0] && curl_easy_perform(hCurl) != 0) // only perform request if there's actually a URL set + if (!statusUrl.IsEmpty() && curl_easy_perform(hCurl) != 0) // only perform request if there's actually a URL set PostMessage(hwnd, WM_USER_SETSTATUSMSG, 0, (LPARAM) curlError); - + for(unsigned i = 0; i < UPDATE_STATUSMSG_SECONDS && s_loginDlgRunning; ++i) { Sleep(1000); @@ -1033,8 +1033,8 @@ BOOL CALLBACK UruLoginDialogProc( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM } else if (HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == IDC_URULOGIN_NEWACCTLINK) { - const char* signupurl = GetServerSignupUrl(); - ShellExecuteA(NULL, "open", signupurl, NULL, NULL, SW_SHOWNORMAL); + plString signupurl = GetServerSignupUrl(); + ShellExecuteW(NULL, L"open", signupurl.ToWchar(), NULL, NULL, SW_SHOWNORMAL); return TRUE; } diff --git a/Sources/Plasma/Apps/plUruLauncher/plClientLauncher.cpp b/Sources/Plasma/Apps/plUruLauncher/plClientLauncher.cpp index cb54af35..c7bb7346 100644 --- a/Sources/Plasma/Apps/plUruLauncher/plClientLauncher.cpp +++ b/Sources/Plasma/Apps/plUruLauncher/plClientLauncher.cpp @@ -103,13 +103,13 @@ static size_t ICurlCallback(void* buffer, size_t size, size_t nmemb, void* threa hsError plShardStatus::Run() { { - const char* url = GetServerStatusUrl(); + plString url = GetServerStatusUrl(); // initialize CURL std::unique_ptr> curl(curl_easy_init(), curl_easy_cleanup); curl_easy_setopt(curl.get(), CURLOPT_ERRORBUFFER, fCurlError); curl_easy_setopt(curl.get(), CURLOPT_USERAGENT, "UruClient/1.0"); - curl_easy_setopt(curl.get(), CURLOPT_URL, url); + curl_easy_setopt(curl.get(), CURLOPT_URL, url.c_str()); curl_easy_setopt(curl.get(), CURLOPT_WRITEDATA, this); curl_easy_setopt(curl.get(), CURLOPT_WRITEFUNCTION, ICurlCallback); @@ -123,7 +123,7 @@ hsError plShardStatus::Run() if (!fRunning) break; - if (url[0] && curl_easy_perform(curl.get())) + if (!url.IsEmpty() && curl_easy_perform(curl.get())) fShardFunc(fCurlError); fLastUpdate = hsTimer::GetSysSeconds(); } while (fRunning); @@ -334,16 +334,15 @@ bool plClientLauncher::CompleteSelfPatch(std::function waitProc) con // =================================================== -static void IGotFileServIPs(ENetError result, void* param, const wchar_t* addr) +static void IGotFileServIPs(ENetError result, void* param, const plString& addr) { plClientLauncher* launcher = static_cast(param); NetCliGateKeeperDisconnect(); if (IS_NET_SUCCESS(result)) { // bah... why do I even bother - plString eapSucks = plString::FromWchar(addr); - const char* eapReallySucks[] = { eapSucks.c_str() }; - NetCliFileStartConnect(eapReallySucks, 1, true); + plString eapSucks[] = { addr }; + NetCliFileStartConnect(eapSucks, 1, true); // Who knows if we will actually connect. So let's start updating. launcher->PatchClient(); @@ -373,8 +372,8 @@ void plClientLauncher::InitializeNetCore() NetClientSetTransTimeoutMs(kNetTransTimeout); // Gotta grab the filesrvs from the gate - const char** addrs; - uint32_t num = GetGateKeeperSrvHostnames(&addrs); + const plString* addrs; + uint32_t num = GetGateKeeperSrvHostnames(addrs); NetCliGateKeeperStartConnect(addrs, num); NetCliGateKeeperFileSrvIpAddressRequest(IGotFileServIPs, this, true); diff --git a/Sources/Plasma/FeatureLib/pfConsoleCore/pfConsoleCommandsCore.cpp b/Sources/Plasma/FeatureLib/pfConsoleCore/pfConsoleCommandsCore.cpp index a10a2770..ace09c83 100644 --- a/Sources/Plasma/FeatureLib/pfConsoleCore/pfConsoleCommandsCore.cpp +++ b/Sources/Plasma/FeatureLib/pfConsoleCore/pfConsoleCommandsCore.cpp @@ -48,6 +48,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com #include "pfConsoleCmd.h" #include "pnNetBase/pnNetBase.h" #include "pfUtilBase64.h" +#include "plString.h" #include @@ -89,7 +90,7 @@ PF_CONSOLE_CMD( "string url", "Set the server's status URL" ) { - SetServerStatusUrl(params[0]); + SetServerStatusUrl((char*)params[0]); } //============================================================================ @@ -99,7 +100,7 @@ PF_CONSOLE_CMD( "string url", "Set the server's new user sign-up URL" ) { - SetServerSignupUrl(params[0]); + SetServerSignupUrl((char*)params[0]); } //============================================================================ @@ -109,7 +110,7 @@ PF_CONSOLE_CMD( "string name", "Set the displayable server name" ) { - SetServerDisplayName(params[0]); + SetServerDisplayName((char*)params[0]); } //============================================================================ @@ -134,7 +135,7 @@ PF_CONSOLE_CMD( "string address", "Set the File Server address" ) { - SetFileSrvHostname(params[0]); + SetFileSrvHostname((char*)params[0]); } @@ -149,7 +150,7 @@ PF_CONSOLE_CMD( "string address", "Set the Auth Server address" ) { - SetAuthSrvHostname(params[0]); + SetAuthSrvHostname((char*)params[0]); } //============================================================================ @@ -261,7 +262,7 @@ PF_CONSOLE_CMD( "string address", "Set the GateKeeper Server address" ) { - SetGateKeeperSrvHostname(params[0]); + SetGateKeeperSrvHostname((char*)params[0]); } //============================================================================ diff --git a/Sources/Plasma/NucleusLib/pnNetBase/pnNbSrvs.cpp b/Sources/Plasma/NucleusLib/pnNetBase/pnNbSrvs.cpp index 4dc77dd4..9e93b9ee 100644 --- a/Sources/Plasma/NucleusLib/pnNetBase/pnNbSrvs.cpp +++ b/Sources/Plasma/NucleusLib/pnNetBase/pnNbSrvs.cpp @@ -41,11 +41,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com *==LICENSE==*/ #include "pnNbSrvs.h" - -#if !HS_BUILD_FOR_WIN32 -# include -#endif - +#include "plString.h" /***************************************************************************** * @@ -53,22 +49,9 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com * ***/ -static char s_authAddrConsole[64] = {0}; -static const char* s_authAddrs[] = { - s_authAddrConsole -}; - - -static char s_fileAddrConsole[64] = {0}; -static const char* s_fileAddrs[] = { - s_fileAddrConsole -}; - - -static char s_gateKeeperAddrConsole[64] = {0}; -static const char* s_gateKeeperAddrs[] = { - s_gateKeeperAddrConsole -}; +static plString s_authAddrs[] = { "" }; +static plString s_fileAddrs[] = { "" }; +static plString s_gateKeeperAddrs[] = { "" }; static unsigned s_clientPort = 14617; @@ -82,45 +65,40 @@ static unsigned s_clientPort = 14617; //============================================================================ // Auth //============================================================================ -unsigned GetAuthSrvHostnames (const char*** addrs) { - - *addrs = s_authAddrs; +unsigned GetAuthSrvHostnames (const plString*& addrs) { + addrs = s_authAddrs; return arrsize(s_authAddrs); } //============================================================================ -void SetAuthSrvHostname (const char addr[]) { - - strncpy(s_authAddrConsole, addr, arrsize(s_authAddrConsole)); +void SetAuthSrvHostname (const plString& addr) { + s_authAddrs[0] = addr; } //============================================================================ // File //============================================================================ -unsigned GetFileSrvHostnames (const char*** addrs) { - - *addrs = s_fileAddrs; +unsigned GetFileSrvHostnames (const plString*& addrs) { + addrs = s_fileAddrs; return arrsize(s_fileAddrs); } //============================================================================ -void SetFileSrvHostname (const char addr[]) { - - strncpy(s_fileAddrConsole, addr, arrsize(s_fileAddrConsole)); +void SetFileSrvHostname (const plString& addr) { + s_fileAddrs[0] = addr; } //============================================================================ // GateKeeper //============================================================================ -unsigned GetGateKeeperSrvHostnames (const char*** addrs) { - - *addrs = s_gateKeeperAddrs; +unsigned GetGateKeeperSrvHostnames (const plString*& addrs) { + addrs = s_gateKeeperAddrs; return arrsize(s_gateKeeperAddrs); } //============================================================================ -void SetGateKeeperSrvHostname (const char addr[]) { - strncpy(s_gateKeeperAddrConsole, addr, arrsize(s_gateKeeperAddrConsole)); +void SetGateKeeperSrvHostname (const plString& addr) { + s_gateKeeperAddrs[0] = addr; } //============================================================================ @@ -139,36 +117,36 @@ void SetClientPort(unsigned port) { //============================================================================ // User-visible Server //============================================================================ -static char s_serverStatusUrl[256] = {0}; -static char s_serverSignupUrl[256] = {0}; -static char s_serverName[256] = {0}; +static plString s_serverStatusUrl; +static plString s_serverSignupUrl; +static plString s_serverName; //============================================================================ -const char* GetServerStatusUrl () { +plString GetServerStatusUrl () { return s_serverStatusUrl; } //============================================================================ -void SetServerStatusUrl (const char url[]) { - strncpy(s_serverStatusUrl, url, arrsize(s_serverStatusUrl)); +void SetServerStatusUrl (const plString& url) { + s_serverStatusUrl = url; } //============================================================================ -const char* GetServerSignupUrl () { +plString GetServerSignupUrl () { return s_serverSignupUrl; } //============================================================================ -void SetServerSignupUrl (const char url[]) { - strncpy(s_serverSignupUrl, url, arrsize(s_serverSignupUrl)); +void SetServerSignupUrl (const plString& url) { + s_serverSignupUrl = url; } //============================================================================ -const char* GetServerDisplayName () { +plString GetServerDisplayName () { return s_serverName; } //============================================================================ -void SetServerDisplayName (const char name[]) { - strncpy(s_serverName, name, arrsize(s_serverName)); +void SetServerDisplayName (const plString& name) { + s_serverName = name; } diff --git a/Sources/Plasma/NucleusLib/pnNetBase/pnNbSrvs.h b/Sources/Plasma/NucleusLib/pnNetBase/pnNbSrvs.h index 991e9262..056f39d1 100644 --- a/Sources/Plasma/NucleusLib/pnNetBase/pnNbSrvs.h +++ b/Sources/Plasma/NucleusLib/pnNetBase/pnNbSrvs.h @@ -84,25 +84,27 @@ enum ESrvType { * ***/ -unsigned GetAuthSrvHostnames (const char*** addrs); // returns addrCount -void SetAuthSrvHostname (const char addr[]); +class plString; -unsigned GetFileSrvHostnames (const char*** addrs); // returns addrCount -void SetFileSrvHostname (const char addr[]); +unsigned GetAuthSrvHostnames (const plString*& addrs); // returns addrCount +void SetAuthSrvHostname (const plString& addr); -unsigned GetGateKeeperSrvHostnames (const char*** addrs); // returns addrCount -void SetGateKeeperSrvHostname (const char addr[]); +unsigned GetFileSrvHostnames (const plString*& addrs); // returns addrCount +void SetFileSrvHostname (const plString& addr); + +unsigned GetGateKeeperSrvHostnames (const plString*& addrs); // returns addrCount +void SetGateKeeperSrvHostname (const plString& addr); unsigned GetClientPort(); void SetClientPort(unsigned port); -const char *GetServerStatusUrl (); -void SetServerStatusUrl (const char url[]); +plString GetServerStatusUrl (); +void SetServerStatusUrl (const plString& url); -const char *GetServerSignupUrl (); -void SetServerSignupUrl (const char url[]); +plString GetServerSignupUrl (); +void SetServerSignupUrl (const plString& url); -const char *GetServerDisplayName (); -void SetServerDisplayName (const char name[]); +plString GetServerDisplayName (); +void SetServerDisplayName (const plString& name); #endif // pnNbSrvs_inc diff --git a/Sources/Plasma/NucleusLib/pnNetCommon/plNetAddress.cpp b/Sources/Plasma/NucleusLib/pnNetCommon/plNetAddress.cpp index 6784dfe8..87e2b141 100644 --- a/Sources/Plasma/NucleusLib/pnNetCommon/plNetAddress.cpp +++ b/Sources/Plasma/NucleusLib/pnNetCommon/plNetAddress.cpp @@ -57,7 +57,7 @@ plNetAddress::plNetAddress(uint32_t addr, uint16_t port) SetPort(port); } -plNetAddress::plNetAddress(const char* addr, uint16_t port) +plNetAddress::plNetAddress(const plString& addr, uint16_t port) { Clear(); SetHost(addr); @@ -114,7 +114,7 @@ plString plNetAddress::GetHostWithPort() const return ss.GetString(); } -bool plNetAddress::SetHost(const char* hostname) +bool plNetAddress::SetHost(const plString& hostname) { fAddr.sin_addr.s_addr = pnNetCommon::GetBinAddr(hostname); fAddr.sin_family = AF_INET; diff --git a/Sources/Plasma/NucleusLib/pnNetCommon/plNetAddress.h b/Sources/Plasma/NucleusLib/pnNetCommon/plNetAddress.h index 837a1f80..3fba937f 100644 --- a/Sources/Plasma/NucleusLib/pnNetCommon/plNetAddress.h +++ b/Sources/Plasma/NucleusLib/pnNetCommon/plNetAddress.h @@ -104,7 +104,7 @@ public: * @param addr The DNS hostname of the host. * @param port The port number as a 16-bit host order integer. */ - plNetAddress(const char* addr, uint16_t port); + plNetAddress(const plString& addr, uint16_t port); virtual ~plNetAddress(){} @@ -158,7 +158,7 @@ public: * * @param hostname The DNS name of the host. */ - bool SetHost(const char* hostname); + bool SetHost(const plString& hostname); /** * Sets the IPv4 address of the host from an unsigned 32-bit integer in diff --git a/Sources/Plasma/NucleusLib/pnNetCommon/pnNetCommon.cpp b/Sources/Plasma/NucleusLib/pnNetCommon/pnNetCommon.cpp index eccc9f49..9b071fc0 100644 --- a/Sources/Plasma/NucleusLib/pnNetCommon/pnNetCommon.cpp +++ b/Sources/Plasma/NucleusLib/pnNetCommon/pnNetCommon.cpp @@ -67,13 +67,13 @@ plString GetTextAddr(uint32_t binAddr) } // NOTE: On Win32, WSAStartup() must be called before GetBinAddr() will work. -uint32_t GetBinAddr(const char * textAddr) +uint32_t GetBinAddr(const plString& textAddr) { uint32_t addr = 0; - if (!textAddr) + if (textAddr.IsEmpty()) return addr; - addr = inet_addr(textAddr); + addr = inet_addr(textAddr.c_str()); if(addr == INADDR_NONE) { struct addrinfo* ai = nil; @@ -81,7 +81,7 @@ uint32_t GetBinAddr(const char * textAddr) memset(&hints, 0, sizeof(struct addrinfo)); hints.ai_family = PF_INET; hints.ai_flags = AI_CANONNAME; - if (getaddrinfo(textAddr, nil, &hints, &ai) != 0) + if (getaddrinfo(textAddr.c_str(), nil, &hints, &ai) != 0) { hsAssert(false, "getaddrinfo failed"); return addr; diff --git a/Sources/Plasma/NucleusLib/pnNetCommon/pnNetCommon.h b/Sources/Plasma/NucleusLib/pnNetCommon/pnNetCommon.h index a6e2dbca..a260eb33 100644 --- a/Sources/Plasma/NucleusLib/pnNetCommon/pnNetCommon.h +++ b/Sources/Plasma/NucleusLib/pnNetCommon/pnNetCommon.h @@ -81,7 +81,7 @@ namespace pnNetCommon { #ifndef SERVER - uint32_t GetBinAddr(const char* textAddr); + uint32_t GetBinAddr(const plString& textAddr); plString GetTextAddr(uint32_t binAddr); #endif // SERVER diff --git a/Sources/Plasma/PubUtilLib/plNetClientComm/plNetClientComm.cpp b/Sources/Plasma/PubUtilLib/plNetClientComm/plNetClientComm.cpp index becd06f0..1a49810e 100644 --- a/Sources/Plasma/PubUtilLib/plNetClientComm/plNetClientComm.cpp +++ b/Sources/Plasma/PubUtilLib/plNetClientComm/plNetClientComm.cpp @@ -111,8 +111,8 @@ static bool s_loginComplete = false; static bool s_hasAuthSrvIpAddress = false; static bool s_hasFileSrvIpAddress = false; static ENetError s_authResult = kNetErrAuthenticationFailed; -static char s_authSrvAddr[256]; -static char s_fileSrvAddr[256]; +static plString s_authSrvAddr; +static plString s_fileSrvAddr; static char s_iniServerAddr[256]; static char s_iniFileServerAddr[256]; @@ -667,9 +667,9 @@ static void INetCliAuthSendFriendInviteCallback ( static void AuthSrvIpAddressCallback ( ENetError result, void * param, - const wchar_t addr[] + const plString& addr ) { - StrToAnsi(s_authSrvAddr, addr, arrsize(s_authSrvAddr)); + s_authSrvAddr = addr; s_hasAuthSrvIpAddress = true; } @@ -677,9 +677,9 @@ static void AuthSrvIpAddressCallback ( static void FileSrvIpAddressCallback ( ENetError result, void * param, - const wchar_t addr[] + const plString& addr ) { - StrToAnsi(s_fileSrvAddr, addr, arrsize(s_fileSrvAddr)); + s_fileSrvAddr = addr; s_hasFileSrvIpAddress = true; } @@ -822,18 +822,18 @@ void NetCommUpdate () { //============================================================================ void NetCommConnect () { - const char** addrs; + const plString* addrs; unsigned count; bool connectedToKeeper = false; // if a console override was specified for a authserv, connect directly to the authserver rather than going through the gatekeeper - if((count = GetAuthSrvHostnames(&addrs)) && strlen(addrs[0])) + if((count = GetAuthSrvHostnames(addrs)) && !addrs[0].IsEmpty()) { NetCliAuthStartConnect(addrs, count); } else { - count = GetGateKeeperSrvHostnames(&addrs); + count = GetGateKeeperSrvHostnames(addrs); NetCliGateKeeperStartConnect(addrs, count); connectedToKeeper = true; @@ -845,7 +845,7 @@ void NetCommConnect () { AsyncSleep(10); } - const char* authSrv[] = { + const plString authSrv[] = { s_authSrvAddr }; NetCliAuthStartConnect(authSrv, 1); @@ -854,14 +854,14 @@ void NetCommConnect () { if (!gDataServerLocal) { // if a console override was specified for a filesrv, connect directly to the fileserver rather than going through the gatekeeper - if((count = GetFileSrvHostnames(&addrs)) && strlen(addrs[0])) + if((count = GetFileSrvHostnames(addrs)) && !addrs[0].IsEmpty()) { NetCliFileStartConnect(addrs, count); } else { if (!connectedToKeeper) { - count = GetGateKeeperSrvHostnames(&addrs); + count = GetGateKeeperSrvHostnames(addrs); NetCliGateKeeperStartConnect(addrs, count); connectedToKeeper = true; } @@ -874,7 +874,7 @@ void NetCommConnect () { AsyncSleep(10); } - const char* fileSrv[] = { + const plString fileSrv[] = { s_fileSrvAddr }; NetCliFileStartConnect(fileSrv, 1); diff --git a/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglAuth.cpp b/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglAuth.cpp index 1e1d5259..3b732146 100644 --- a/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglAuth.cpp +++ b/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglAuth.cpp @@ -91,7 +91,7 @@ struct CliAuConn : hsRefCnt { LINK(CliAuConn) link; AsyncSocket sock; NetCli * cli; - char name[MAX_PATH]; + plString name; plNetAddress addr; plUUID token; unsigned seq; @@ -1529,7 +1529,7 @@ static void Connect ( //============================================================================ static void Connect ( - const char name[], + const plString& name, const plNetAddress& addr ) { ASSERT(s_running); @@ -1538,7 +1538,7 @@ static void Connect ( conn->addr = addr; conn->seq = ConnNextSequence(); conn->lastHeardTimeMs = GetNonZeroTimeMs(); // used in connect timeout, and ping timeout - strncpy(conn->name, name, arrsize(conn->name)); + conn->name = name; conn->Ref("Lifetime"); conn->AutoReconnect(); @@ -1594,8 +1594,6 @@ CliAuConn::CliAuConn () , sock(nil), cli(nil), seq(0), serverChallenge(0) , cancelId(nil), abandoned(false) { - memset(name, 0, sizeof(name)); - ++s_perf[kPerfConnCount]; } @@ -5124,7 +5122,7 @@ void AuthPingEnable (bool enable) { //============================================================================ void NetCliAuthStartConnect ( - const char* authAddrList[], + const plString authAddrList[], uint32_t authAddrCount ) { // TEMP: Only connect to one auth server until we fill out this module @@ -5133,7 +5131,7 @@ void NetCliAuthStartConnect ( for (unsigned i = 0; i < authAddrCount; ++i) { // Do we need to lookup the address? - const char* name = authAddrList[i]; + const char* name = authAddrList[i].c_str(); while (unsigned ch = *name) { ++name; if (!(isdigit(ch) || ch == L'.' || ch == L':')) { @@ -5141,7 +5139,7 @@ void NetCliAuthStartConnect ( AsyncAddressLookupName( &cancelId, AsyncLookupCallback, - authAddrList[i], + authAddrList[i].c_str(), GetClientPort(), nil ); diff --git a/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglAuth.h b/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglAuth.h index 852d9597..9a4b25b0 100644 --- a/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglAuth.h +++ b/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglAuth.h @@ -62,7 +62,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com // Connect //============================================================================ void NetCliAuthStartConnect ( - const char* authAddrList[], + const plString authAddrList[], uint32_t authAddrCount ); bool NetCliAuthQueryConnected (); diff --git a/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglFile.cpp b/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglFile.cpp index 682ceadb..f6cb4c4d 100644 --- a/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglFile.cpp +++ b/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglFile.cpp @@ -64,7 +64,7 @@ struct CliFileConn : hsRefCnt { LINK(CliFileConn) link; hsReaderWriterLock sockLock; // to protect the socket pointer so we don't nuke it while using it AsyncSocket sock; - char name[MAX_PATH]; + plString name; plNetAddress addr; unsigned seq; ARRAY(uint8_t) recvBuffer; @@ -536,18 +536,18 @@ static void Connect (CliFileConn * conn) { //============================================================================ static void Connect ( - const char name[], + const plString& name, const plNetAddress& addr ) { ASSERT(s_running); CliFileConn * conn = new CliFileConn; - strncpy(conn->name, name, arrsize(conn->name)); - conn->addr = addr; - conn->buildId = s_connectBuildId; - conn->serverType = s_serverType; - conn->seq = ConnNextSequence(); - conn->lastHeardTimeMs = GetNonZeroTimeMs(); // used in connect timeout, and ping timeout + conn->name = name; + conn->addr = addr; + conn->buildId = s_connectBuildId; + conn->serverType = s_serverType; + conn->seq = ConnNextSequence(); + conn->lastHeardTimeMs = GetNonZeroTimeMs(); // used in connect timeout, and ping timeout conn->Ref("Lifetime"); conn->AutoReconnect(); @@ -584,7 +584,6 @@ CliFileConn::CliFileConn () , numImmediateDisconnects(0), numFailedConnects(0) , pingTimer(nil), pingSendTimeMs(0), lastHeardTimeMs(0) { - memset(name, 0, sizeof(name)); ++s_perf[kPerfConnCount]; } @@ -1344,7 +1343,7 @@ unsigned FileGetConnId () { //============================================================================ void NetCliFileStartConnect ( - const char* fileAddrList[], + const plString fileAddrList[], uint32_t fileAddrCount, bool isPatcher /* = false */ ) { @@ -1356,7 +1355,7 @@ void NetCliFileStartConnect ( for (unsigned i = 0; i < fileAddrCount; ++i) { // Do we need to lookup the address? - const char* name = fileAddrList[i]; + const char* name = fileAddrList[i].c_str(); while (unsigned ch = *name) { ++name; if (!(isdigit(ch) || ch == L'.' || ch == L':')) { @@ -1364,7 +1363,7 @@ void NetCliFileStartConnect ( AsyncAddressLookupName( &cancelId, AsyncLookupCallback, - fileAddrList[i], + fileAddrList[i].c_str(), GetClientPort(), nil ); diff --git a/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglFile.h b/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglFile.h index cca989c3..be80518b 100644 --- a/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglFile.h +++ b/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglFile.h @@ -62,7 +62,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com // Connect //============================================================================ void NetCliFileStartConnect ( - const char* fileAddrList[], + const plString fileAddrList[], unsigned fileAddrCount, bool isPatcher = false ); diff --git a/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglGateKeeper.cpp b/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglGateKeeper.cpp index 744d4bad..6949350c 100644 --- a/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglGateKeeper.cpp +++ b/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglGateKeeper.cpp @@ -89,7 +89,7 @@ struct CliGkConn : hsRefCnt { LINK(CliGkConn) link; AsyncSocket sock; NetCli * cli; - char name[MAX_PATH]; + plString name; plNetAddress addr; plUUID token; unsigned seq; @@ -131,7 +131,7 @@ struct PingRequestTrans : NetGateKeeperTrans { struct FileSrvIpAddressRequestTrans : NetGateKeeperTrans { FNetCliGateKeeperFileSrvIpAddressRequestCallback m_callback; void * m_param; - wchar_t m_addr[64]; + plString m_addr; bool m_isPatcher; FileSrvIpAddressRequestTrans ( @@ -154,8 +154,8 @@ struct FileSrvIpAddressRequestTrans : NetGateKeeperTrans { struct AuthSrvIpAddressRequestTrans : NetGateKeeperTrans { FNetCliGateKeeperAuthSrvIpAddressRequestCallback m_callback; void * m_param; - wchar_t m_addr[64]; - + plString m_addr; + AuthSrvIpAddressRequestTrans ( FNetCliGateKeeperAuthSrvIpAddressRequestCallback callback, void * param @@ -463,7 +463,7 @@ static void Connect ( //============================================================================ static void Connect ( - const char name[], + const plString& name, const plNetAddress& addr ) { ASSERT(s_running); @@ -472,7 +472,7 @@ static void Connect ( conn->addr = addr; conn->seq = ConnNextSequence(); conn->lastHeardTimeMs = GetNonZeroTimeMs(); // used in connect timeout, and ping timeout - strncpy(conn->name, name, arrsize(conn->name)); + conn->name = name; conn->Ref("Lifetime"); conn->AutoReconnect(); @@ -530,8 +530,6 @@ CliGkConn::CliGkConn () , sock(nil), cli(nil), seq(0), serverChallenge(0) , cancelId(nil), abandoned(false) { - memset(name, 0, sizeof(name)); - ++s_perf[kPerfConnCount]; } @@ -876,7 +874,7 @@ bool FileSrvIpAddressRequestTrans::Recv ( m_result = kNetSuccess; m_state = kTransStateComplete; - StrCopy(m_addr, reply.address, 64); + m_addr = plString::FromWchar(reply.address); return true; } @@ -933,7 +931,7 @@ bool AuthSrvIpAddressRequestTrans::Recv ( m_result = kNetSuccess; m_state = kTransStateComplete; - StrCopy(m_addr, reply.address, 64); + m_addr = plString::FromWchar(reply.address); return true; } @@ -1059,14 +1057,14 @@ unsigned GateKeeperGetConnId () { //============================================================================ void NetCliGateKeeperStartConnect ( - const char* gateKeeperAddrList[], - uint32_t gateKeeperAddrCount + const plString gateKeeperAddrList[], + uint32_t gateKeeperAddrCount ) { gateKeeperAddrCount = std::min(gateKeeperAddrCount, 1u); for (unsigned i = 0; i < gateKeeperAddrCount; ++i) { // Do we need to lookup the address? - const char* name = gateKeeperAddrList[i]; + const char* name = gateKeeperAddrList[i].c_str(); while (unsigned ch = *name) { ++name; if (!(isdigit(ch) || ch == L'.' || ch == L':')) { @@ -1074,7 +1072,7 @@ void NetCliGateKeeperStartConnect ( AsyncAddressLookupName( &cancelId, AsyncLookupCallback, - gateKeeperAddrList[i], + gateKeeperAddrList[i].c_str(), GetClientPort(), nil ); diff --git a/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglGateKeeper.h b/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglGateKeeper.h index fd42bff2..a7daeb91 100644 --- a/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglGateKeeper.h +++ b/Sources/Plasma/PubUtilLib/plNetGameLib/Private/plNglGateKeeper.h @@ -62,8 +62,8 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com // Connect //============================================================================ void NetCliGateKeeperStartConnect ( - const char* gateKeeperAddrList[], - uint32_t gateKeeperAddrCount + const plString gateKeeperAddrList[], + uint32_t gateKeeperAddrCount ); bool NetCliGateKeeperQueryConnected (); @@ -107,9 +107,9 @@ void NetCliGateKeeperPingRequest ( // FileSrvIpAddress //============================================================================ typedef void (*FNetCliGateKeeperFileSrvIpAddressRequestCallback)( - ENetError result, - void * param, - const wchar_t addr[] + ENetError result, + void * param, + const plString& addr ); void NetCliGateKeeperFileSrvIpAddressRequest ( @@ -123,9 +123,9 @@ void NetCliGateKeeperFileSrvIpAddressRequest ( // AuthSrvIpAddress //============================================================================ typedef void (*FNetCliGateKeeperAuthSrvIpAddressRequestCallback)( - ENetError result, - void * param, - const wchar_t addr[] + ENetError result, + void * param, + const plString& addr ); void NetCliGateKeeperAuthSrvIpAddressRequest (