aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGregory Maxwell <greg@xiph.org>2012-08-28 17:55:52 -0400
committerGregory Maxwell <greg@xiph.org>2012-08-28 21:43:28 -0400
commit3595b18793a94a0cdfe64b5e0cfc0260e19661fe (patch)
tree89f223dcbec2b2266cf830e4ddee60a1b65d66e6
parent5f388758071967be35bd04e016e862c0536552a9 (diff)
Don't force IRC off if not listening, do force it off if IPv4 is off.
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.
-rw-r--r--src/irc.cpp17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/irc.cpp b/src/irc.cpp
index 50c6a5b4db..9e88541c2a 100644
--- a/src/irc.cpp
+++ b/src/irc.cpp
@@ -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;
@@ -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));
@@ -283,7 +289,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);
@@ -291,7 +298,7 @@ void ThreadIRCSeed2(void* parg)
Send(hSocket, strprintf("NICK %s\r", strMyName.c_str()).c_str());
}
}
-
+
if (fTestNet) {
Send(hSocket, "JOIN #bitcoinTEST3\r");
Send(hSocket, "WHO #bitcoinTEST3\r");