From 629e37dde1fa93f6ce31544d1ebb5ee5c19052cb Mon Sep 17 00:00:00 2001 From: s_nakamoto Date: Wed, 15 Dec 2010 22:43:51 +0000 Subject: get external ip from irc git-svn-id: https://bitcoin.svn.sourceforge.net/svnroot/bitcoin/trunk@202 1a98c847-1fd6-4fd8-948a-caf3550aa51b --- irc.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'irc.cpp') diff --git a/irc.cpp b/irc.cpp index 1734d76fa..aad9beb76 100644 --- a/irc.cpp +++ b/irc.cpp @@ -5,6 +5,7 @@ #include "headers.h" int nGotIRCAddresses = 0; +bool fGotExternalIP = false; void ThreadIRCSeed2(void* parg); @@ -223,6 +224,8 @@ bool GetIPFromIRC(SOCKET hSocket, string strMyName, unsigned int& ipRet) } else { + // Hybrid IRC used by lfnet always returns IP when you userhost yourself, + // but in case another IRC is ever used this should work. printf("GetIPFromIRC() got userhost %s\n", strHost.c_str()); if (fUseProxy) return false; @@ -327,14 +330,15 @@ void ThreadIRCSeed2(void* parg) } Sleep(500); - // Get my external IP from IRC server + // Get our external IP from the IRC server and re-nick before joining the channel CAddress addrFromIRC; if (GetIPFromIRC(hSocket, strMyName, addrFromIRC.ip)) { - // Just using it as a backup for now printf("GetIPFromIRC() returned %s\n", addrFromIRC.ToStringIP().c_str()); - if (addrFromIRC.IsRoutable() && !fUseProxy && !addrLocalHost.IsRoutable()) + if (!fUseProxy && addrFromIRC.IsRoutable()) { + // IRC lets you to re-nick + fGotExternalIP = true; addrLocalHost.ip = addrFromIRC.ip; strMyName = EncodeAddress(addrLocalHost); Send(hSocket, strprintf("NICK %s\r", strMyName.c_str()).c_str()); -- cgit v1.2.3