|
|
|
@ -207,16 +207,22 @@ void ThreadIRCSeed(void* parg)
@@ -207,16 +207,22 @@ void ThreadIRCSeed(void* parg)
|
|
|
|
|
|
|
|
|
|
void ThreadIRCSeed2(void* parg) |
|
|
|
|
{ |
|
|
|
|
/* Don't advertise on IRC if we don't allow incoming connections */ |
|
|
|
|
if (mapArgs.count("-connect") || fNoListen) |
|
|
|
|
// Don't connect to IRC if we won't use IPv4 connections.
|
|
|
|
|
if (IsLimited(NET_IPV4)) |
|
|
|
|
return; |
|
|
|
|
|
|
|
|
|
// ... or if we won't make outbound connections and won't accept inbound ones.
|
|
|
|
|
if (mapArgs.count("-connect") && fNoListen) |
|
|
|
|
return; |
|
|
|
|
|
|
|
|
|
// ... or if IRC is not enabled.
|
|
|
|
|
if (!GetBoolArg("-irc", false)) |
|
|
|
|
return; |
|
|
|
|
|
|
|
|
|
printf("ThreadIRCSeed started\n"); |
|
|
|
|
int nErrorWait = 10; |
|
|
|
|
int nRetryWait = 10; |
|
|
|
|
int nNameRetry = 0; |
|
|
|
|
|
|
|
|
|
while (!fShutdown) |
|
|
|
|
{ |
|
|
|
@ -251,7 +257,9 @@ void ThreadIRCSeed2(void* parg)
@@ -251,7 +257,9 @@ void ThreadIRCSeed2(void* parg)
|
|
|
|
|
CNetAddr addrIPv4("1.2.3.4"); // arbitrary IPv4 address to make GetLocal prefer IPv4 addresses
|
|
|
|
|
CService addrLocal; |
|
|
|
|
string strMyName; |
|
|
|
|
if (GetLocal(addrLocal, &addrIPv4)) |
|
|
|
|
// Don't use our IP as our nick if we're not listening
|
|
|
|
|
// or if it keeps failing because the nick is already in use.
|
|
|
|
|
if (!fNoListen && GetLocal(addrLocal, &addrIPv4) && nNameRetry<3) |
|
|
|
|
strMyName = EncodeAddress(GetLocalAddress(&addrConnect)); |
|
|
|
|
if (strMyName == "") |
|
|
|
|
strMyName = strprintf("x%u", GetRand(1000000000)); |
|
|
|
@ -267,6 +275,7 @@ void ThreadIRCSeed2(void* parg)
@@ -267,6 +275,7 @@ void ThreadIRCSeed2(void* parg)
|
|
|
|
|
if (nRet == 2) |
|
|
|
|
{ |
|
|
|
|
printf("IRC name already in use\n"); |
|
|
|
|
nNameRetry++; |
|
|
|
|
Wait(10); |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
@ -276,6 +285,7 @@ void ThreadIRCSeed2(void* parg)
@@ -276,6 +285,7 @@ void ThreadIRCSeed2(void* parg)
|
|
|
|
|
else |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
nNameRetry = 0; |
|
|
|
|
Sleep(500); |
|
|
|
|
|
|
|
|
|
// Get our external IP from the IRC server and re-nick before joining the channel
|
|
|
|
@ -283,7 +293,8 @@ void ThreadIRCSeed2(void* parg)
@@ -283,7 +293,8 @@ void ThreadIRCSeed2(void* parg)
|
|
|
|
|
if (GetIPFromIRC(hSocket, strMyName, addrFromIRC)) |
|
|
|
|
{ |
|
|
|
|
printf("GetIPFromIRC() returned %s\n", addrFromIRC.ToString().c_str()); |
|
|
|
|
if (addrFromIRC.IsRoutable()) |
|
|
|
|
// Don't use our IP as our nick if we're not listening
|
|
|
|
|
if (!fNoListen && addrFromIRC.IsRoutable()) |
|
|
|
|
{ |
|
|
|
|
// IRC lets you to re-nick
|
|
|
|
|
AddLocal(addrFromIRC, LOCAL_IRC); |
|
|
|
|