aboutsummaryrefslogtreecommitdiff
path: root/src/irc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/irc.cpp')
-rw-r--r--src/irc.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/irc.cpp b/src/irc.cpp
index 9e88541c2a..6991e6ee7e 100644
--- a/src/irc.cpp
+++ b/src/irc.cpp
@@ -222,6 +222,7 @@ void ThreadIRCSeed2(void* parg)
printf("ThreadIRCSeed started\n");
int nErrorWait = 10;
int nRetryWait = 10;
+ int nNameRetry = 0;
while (!fShutdown)
{
@@ -257,7 +258,8 @@ void ThreadIRCSeed2(void* parg)
CService addrLocal;
string strMyName;
// Don't use our IP as our nick if we're not listening
- if (!fNoListen && GetLocal(addrLocal, &addrIPv4))
+ // 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));
@@ -273,6 +275,7 @@ void ThreadIRCSeed2(void* parg)
if (nRet == 2)
{
printf("IRC name already in use\n");
+ nNameRetry++;
Wait(10);
continue;
}
@@ -282,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