Skip to content

Commit

Permalink
Don't force IRC off if not listening, do force it off if IPv4 is off.
Browse files Browse the repository at this point in the history
Previously Bitcoin would refuse to use IRC if it was either not
accepting inbound connections or not making outbound. Instead this
changes it to not use IRC only if it's not doing either or if
IPv4 is off completely. If Bitcoin is not listening this will use
the default random nicks rather than the IP based ones.
  • Loading branch information
gmaxwell committed Aug 29, 2012
1 parent 5f38875 commit 3595b18
Showing 1 changed file with 12 additions and 5 deletions.
17 changes: 12 additions & 5 deletions src/irc.cpp
Expand Up @@ -207,10 +207,15 @@ 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;

Expand Down Expand Up @@ -251,7 +256,8 @@ 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
if (!fNoListen && GetLocal(addrLocal, &addrIPv4))
strMyName = EncodeAddress(GetLocalAddress(&addrConnect));
if (strMyName == "")
strMyName = strprintf("x%u", GetRand(1000000000));
Expand Down Expand Up @@ -283,15 +289,16 @@ 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);
strMyName = EncodeAddress(GetLocalAddress(&addrConnect));
Send(hSocket, strprintf("NICK %s\r", strMyName.c_str()).c_str());
}
}

if (fTestNet) {
Send(hSocket, "JOIN #bitcoinTEST3\r");
Send(hSocket, "WHO #bitcoinTEST3\r");
Expand Down

0 comments on commit 3595b18

Please sign in to comment.