X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Firc.cpp;h=e5d99558d8cedddd548a71c34efe9d4e1dad96ec;hb=a767cdb1f8901b4b3042a6745dc65912b7cc0ebd;hp=fb4f4858732353e440a71890bab13f3e02e2d8e1;hpb=9381057f4bbebcef51c11a6736e36d95bdba4dd0;p=novacoin.git diff --git a/src/irc.cpp b/src/irc.cpp index fb4f485..e5d9955 100644 --- a/src/irc.cpp +++ b/src/irc.cpp @@ -4,10 +4,11 @@ // file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "irc.h" -#include "strlcpy.h" #include "base58.h" #include "net.h" +#include // for startswith() and endswith() + using namespace std; using namespace boost; @@ -260,7 +261,7 @@ void ThreadIRCSeed2(void* parg) if (!fNoListen && GetLocal(addrLocal, &addrIPv4) && nNameRetry<3) strMyName = EncodeAddress(GetLocalAddress(&addrConnect)); if (strMyName == "") - strMyName = strprintf("x%"PRI64u"", GetRand(1000000000)); + strMyName = strprintf("x%" PRIu64 "", GetRand(1000000000)); Send(hSocket, strprintf("NICK %s\r", strMyName.c_str()).c_str()); Send(hSocket, strprintf("USER %s 8 * : %s\r", strMyName.c_str(), strMyName.c_str()).c_str()); @@ -314,7 +315,7 @@ void ThreadIRCSeed2(void* parg) Send(hSocket, strprintf("WHO #novacoin%02d\r", channel_number).c_str()); } - int64 nStart = GetTime(); + int64_t nStart = GetTime(); string strLine; strLine.reserve(10000); while (!fShutdown && RecvLineIRC(hSocket, strLine)) @@ -327,30 +328,27 @@ void ThreadIRCSeed2(void* parg) if (vWords.size() < 2) continue; - char pszName[10000]; - pszName[0] = '\0'; + std::string strName; if (vWords[1] == "352" && vWords.size() >= 8) { // index 7 is limited to 16 characters // could get full length name at index 10, but would be different from join messages - strlcpy(pszName, vWords[7].c_str(), sizeof(pszName)); + strName = vWords[7].c_str(); printf("IRC got who\n"); } if (vWords[1] == "JOIN" && vWords[0].size() > 1) { // :username!username@50000007.F000000B.90000002.IP JOIN :#channelname - strlcpy(pszName, vWords[0].c_str() + 1, sizeof(pszName)); - if (strchr(pszName, '!')) - *strchr(pszName, '!') = '\0'; + strName = vWords[0].substr(1, vWords[0].find('!', 1) - 1); printf("IRC got join\n"); } - if (pszName[0] == 'u') + if (boost::algorithm::starts_with(strName, "u")) { CAddress addr; - if (DecodeAddress(pszName, addr)) + if (DecodeAddress(strName, addr)) { addr.nTime = GetAdjustedTime(); if (addrman.Add(addr, addrConnect, 51 * 60))