aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Garzik <jgarzik@exmulti.com>2013-03-29 08:03:18 -0700
committerJeff Garzik <jgarzik@exmulti.com>2013-03-29 08:03:18 -0700
commitea83336f4eceecbc046e465509b792dd203327bc (patch)
tree67c5e5c908f293edc2fc31f008c173fe59251ee0
parent8455310a7bbba7fea28dc604df37c9fb9d2719c7 (diff)
parent6a1d6e03daa35463ff27f8d05f4313b604ed4397 (diff)
downloadbitcoin-ea83336f4eceecbc046e465509b792dd203327bc.tar.xz
Merge pull request #2411 from TheBlueMatt/master
(finally) Remove IRC Seed support now that lfnet is down.
-rw-r--r--bitcoin-qt.pro2
-rwxr-xr-xcontrib/debian/bin/bitcoind14
-rw-r--r--contrib/debian/bitcoind.install3
-rw-r--r--contrib/debian/changelog36
-rw-r--r--contrib/debian/control4
-rw-r--r--contrib/debian/examples/bitcoin.conf4
-rw-r--r--contrib/debian/manpages/bitcoin.conf.53
-rw-r--r--doc/coding.txt3
-rw-r--r--src/init.cpp4
-rw-r--r--src/irc.cpp403
-rw-r--r--src/irc.h12
-rw-r--r--src/makefile.linux-mingw1
-rw-r--r--src/makefile.mingw1
-rw-r--r--src/makefile.osx1
-rw-r--r--src/makefile.unix1
-rw-r--r--src/net.cpp7
-rw-r--r--src/net.h1
17 files changed, 38 insertions, 462 deletions
diff --git a/bitcoin-qt.pro b/bitcoin-qt.pro
index d518cf3b16..41b1ed6134 100644
--- a/bitcoin-qt.pro
+++ b/bitcoin-qt.pro
@@ -159,7 +159,6 @@ HEADERS += src/qt/bitcoingui.h \
src/walletdb.h \
src/script.h \
src/init.h \
- src/irc.h \
src/bloom.h \
src/mruset.h \
src/checkqueue.h \
@@ -233,7 +232,6 @@ SOURCES += src/qt/bitcoin.cpp \
src/main.cpp \
src/init.cpp \
src/net.cpp \
- src/irc.cpp \
src/bloom.cpp \
src/checkpoints.cpp \
src/addrman.cpp \
diff --git a/contrib/debian/bin/bitcoind b/contrib/debian/bin/bitcoind
deleted file mode 100755
index a2f55a9138..0000000000
--- a/contrib/debian/bin/bitcoind
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/sh
-
-set -e
-
-umask 077
-
-basedir=~/.bitcoin
-cfgfile="$basedir/bitcoin.conf"
-
-[ -e "$basedir" ] || mkdir "$basedir"
-
-[ -e "$cfgfile" ] || perl -le 'print"rpcpassword=",map{(a..z,A..Z,0..9)[rand 62]}0..9' > "$cfgfile"
-
-exec /usr/lib/bitcoin/bitcoind "$@"
diff --git a/contrib/debian/bitcoind.install b/contrib/debian/bitcoind.install
index e978c44b3f..7bf746006c 100644
--- a/contrib/debian/bitcoind.install
+++ b/contrib/debian/bitcoind.install
@@ -1,2 +1 @@
-debian/bin/bitcoind usr/bin
-src/bitcoind usr/lib/bitcoin
+src/bitcoind usr/bin
diff --git a/contrib/debian/changelog b/contrib/debian/changelog
index 52d0e5907b..4388e7175a 100644
--- a/contrib/debian/changelog
+++ b/contrib/debian/changelog
@@ -1,3 +1,39 @@
+bitcoin (0.8.1-natty2) natty; urgency=low
+
+ * Remove dumb broken launcher script
+
+ -- Matt Corallo <matt@bluematt.me> Sun, 24 Mar 2013 20:01:00 -0400
+
+bitcoin (0.8.1-natty1) natty; urgency=low
+
+ * New upstream release.
+
+ -- Matt Corallo <matt@bluematt.me> Tue, 19 Mar 2013 13:03:00 -0400
+
+bitcoin (0.8.0-natty1) natty; urgency=low
+
+ * New upstream release.
+
+ -- Matt Corallo <matt@bluematt.me> Sat, 23 Feb 2013 16:01:00 -0500
+
+bitcoin (0.7.2-natty1) natty; urgency=low
+
+ * New upstream release.
+
+ -- Matt Corallo <matt@bluematt.me> Sat, 15 Dec 2012 10:59:00 -0400
+
+bitcoin (0.7.1-natty1) natty; urgency=low
+
+ * New upstream release.
+
+ -- Matt Corallo <matt@bluematt.me> Wed, 24 Oct 2012 15:06:00 -0400
+
+bitcoin (0.7.0-natty1) natty; urgency=low
+
+ * New upstream release.
+
+ -- Matt Corallo <matt@bluematt.me> Mon, 17 Sep 2012 13:45:00 +0200
+
bitcoin (0.6.3-natty1) natty; urgency=low
* New upstream release.
diff --git a/contrib/debian/control b/contrib/debian/control
index c8266f686b..dd167ef53d 100644
--- a/contrib/debian/control
+++ b/contrib/debian/control
@@ -33,8 +33,6 @@ Description: peer-to-peer network based digital currency - daemon
transact directly with each other, with the help of a P2P network to
check for double-spending.
.
- By default connects to an IRC network to discover other peers.
- .
Full transaction history is stored locally at each client. This
requires 2+ GB of space, slowly growing.
.
@@ -51,8 +49,6 @@ Description: peer-to-peer network based digital currency - Qt GUI
transact directly with each other, with the help of a P2P network to
check for double-spending.
.
- By default connects to an IRC network to discover other peers.
- .
Full transaction history is stored locally at each client. This
requires 2+ GB of space, slowly growing.
.
diff --git a/contrib/debian/examples/bitcoin.conf b/contrib/debian/examples/bitcoin.conf
index e56c43cb50..10ec36ae7e 100644
--- a/contrib/debian/examples/bitcoin.conf
+++ b/contrib/debian/examples/bitcoin.conf
@@ -18,10 +18,6 @@
#connect=69.164.218.197
#connect=10.0.0.1:8333
-# Do not use Internet Relay Chat (irc.lfnet.org #bitcoin channel) to
-# find other peers.
-#noirc=1
-
# Maximum number of inbound+outbound connections.
#maxconnections=
diff --git a/contrib/debian/manpages/bitcoin.conf.5 b/contrib/debian/manpages/bitcoin.conf.5
index 1243253413..426fe06675 100644
--- a/contrib/debian/manpages/bitcoin.conf.5
+++ b/contrib/debian/manpages/bitcoin.conf.5
@@ -24,9 +24,6 @@ Use as many *addnode=* settings as you like to connect to specific peers.
\fBconnect=\fR\fI'10.0.0.1:8333'\fR
Use as many *connect=* settings as you like to connect ONLY to specific peers.
.TP
-\fBnoirc=\fR[\fI'1'\fR|\fI'0'\fR]
-Use or Do not use Internet Relay Chat (irc.lfnet.org #bitcoin channel) to find other peers.
-.TP
\fRmaxconnections=\fR\fI'value'\fR
Maximum number of inbound+outbound connections.
.SH JSON-RPC OPTIONS
diff --git a/doc/coding.txt b/doc/coding.txt
index 0813105e73..427e388cfd 100644
--- a/doc/coding.txt
+++ b/doc/coding.txt
@@ -65,9 +65,6 @@ StartNode : Starts other threads.
ThreadGetMyExternalIP : Determines outside-the-firewall IP address,
sends addr message to connected peers when it determines it.
-ThreadIRCSeed : Joins IRC bootstrapping channel, watching for new
-peers and advertising this node's IP address.
-
ThreadSocketHandler : Sends/Receives data from peers on port 8333.
ThreadMessageHandler : Higher-level message handling (sending and
diff --git a/src/init.cpp b/src/init.cpp
index 7c72982dd2..1bf76631dc 100644
--- a/src/init.cpp
+++ b/src/init.cpp
@@ -262,7 +262,6 @@ std::string HelpMessage()
" -externalip=<ip> " + _("Specify your own public address") + "\n" +
" -onlynet=<net> " + _("Only connect to nodes in network <net> (IPv4, IPv6 or Tor)") + "\n" +
" -discover " + _("Discover own IP address (default: 1 when listening and no -externalip)") + "\n" +
- " -irc " + _("Find peers using internet relay chat (default: 0)") + "\n" +
" -checkpoints " + _("Only accept block chain matching built-in checkpoints (default: 1)") + "\n" +
" -listen " + _("Accept connections from outside (default: 1 if no -proxy or -connect)") + "\n" +
" -bind=<addr> " + _("Bind to given address and always listen on it. Use [host]:port notation for IPv6") + "\n" +
@@ -453,9 +452,6 @@ bool AppInit2()
// ********************************************************* Step 2: parameter interactions
fTestNet = GetBoolArg("-testnet");
- if (fTestNet) {
- SoftSetBoolArg("-irc", true);
- }
if (mapArgs.count("-bind")) {
// when specifying an explicit binding address, you want to listen on it
diff --git a/src/irc.cpp b/src/irc.cpp
deleted file mode 100644
index e8471a6630..0000000000
--- a/src/irc.cpp
+++ /dev/null
@@ -1,403 +0,0 @@
-// Copyright (c) 2009-2010 Satoshi Nakamoto
-// Copyright (c) 2009-2012 The Bitcoin developers
-// Distributed under the MIT/X11 software license, see the accompanying
-// file COPYING or http://www.opensource.org/licenses/mit-license.php.
-
-#include "irc.h"
-#include "net.h"
-#include "base58.h"
-
-#include <boost/algorithm/string/predicate.hpp> // for startswith() and endswith()
-
-using namespace std;
-using namespace boost;
-
-int nGotIRCAddresses = 0;
-
-void ThreadIRCSeed2(void* parg);
-
-
-
-
-#pragma pack(push, 1)
-struct ircaddr
-{
- struct in_addr ip;
- short port;
-};
-#pragma pack(pop)
-
-string EncodeAddress(const CService& addr)
-{
- struct ircaddr tmp;
- if (addr.GetInAddr(&tmp.ip))
- {
- tmp.port = htons(addr.GetPort());
-
- vector<unsigned char> vch(UBEGIN(tmp), UEND(tmp));
- return string("u") + EncodeBase58Check(vch);
- }
- return "";
-}
-
-bool DecodeAddress(string str, CService& addr)
-{
- vector<unsigned char> vch;
- if (!DecodeBase58Check(str.substr(1), vch))
- return false;
-
- struct ircaddr tmp;
- if (vch.size() != sizeof(tmp))
- return false;
- memcpy(&tmp, &vch[0], sizeof(tmp));
-
- addr = CService(tmp.ip, ntohs(tmp.port));
- return true;
-}
-
-
-
-
-
-
-static bool Send(SOCKET hSocket, const char* pszSend)
-{
- if (strstr(pszSend, "PONG") != pszSend)
- printf("IRC SENDING: %s\n", pszSend);
- const char* psz = pszSend;
- const char* pszEnd = psz + strlen(psz);
- while (psz < pszEnd)
- {
- int ret = send(hSocket, psz, pszEnd - psz, MSG_NOSIGNAL);
- if (ret < 0)
- return false;
- psz += ret;
- }
- return true;
-}
-
-bool RecvLineIRC(SOCKET hSocket, string& strLine)
-{
- loop
- {
- bool fRet = RecvLine(hSocket, strLine);
- if (fRet)
- {
- if (fShutdown)
- return false;
- vector<string> vWords;
- ParseString(strLine, ' ', vWords);
- if (vWords.size() >= 1 && vWords[0] == "PING")
- {
- strLine[1] = 'O';
- strLine += '\r';
- Send(hSocket, strLine.c_str());
- continue;
- }
- }
- return fRet;
- }
-}
-
-int RecvUntil(SOCKET hSocket, const char* psz1, const char* psz2=NULL, const char* psz3=NULL, const char* psz4=NULL)
-{
- loop
- {
- string strLine;
- strLine.reserve(10000);
- if (!RecvLineIRC(hSocket, strLine))
- return 0;
- printf("IRC %s\n", strLine.c_str());
- if (psz1 && strLine.find(psz1) != string::npos)
- return 1;
- if (psz2 && strLine.find(psz2) != string::npos)
- return 2;
- if (psz3 && strLine.find(psz3) != string::npos)
- return 3;
- if (psz4 && strLine.find(psz4) != string::npos)
- return 4;
- }
-}
-
-bool Wait(int nSeconds)
-{
- if (fShutdown)
- return false;
- printf("IRC waiting %d seconds to reconnect\n", nSeconds);
- for (int i = 0; i < nSeconds; i++)
- {
- if (fShutdown)
- return false;
- Sleep(1000);
- }
- return true;
-}
-
-bool RecvCodeLine(SOCKET hSocket, const char* psz1, string& strRet)
-{
- strRet.clear();
- loop
- {
- string strLine;
- if (!RecvLineIRC(hSocket, strLine))
- return false;
-
- vector<string> vWords;
- ParseString(strLine, ' ', vWords);
- if (vWords.size() < 2)
- continue;
-
- if (vWords[1] == psz1)
- {
- printf("IRC %s\n", strLine.c_str());
- strRet = strLine;
- return true;
- }
- }
-}
-
-bool GetIPFromIRC(SOCKET hSocket, string strMyName, CNetAddr& ipRet)
-{
- Send(hSocket, strprintf("USERHOST %s\r", strMyName.c_str()).c_str());
-
- string strLine;
- if (!RecvCodeLine(hSocket, "302", strLine))
- return false;
-
- vector<string> vWords;
- ParseString(strLine, ' ', vWords);
- if (vWords.size() < 4)
- return false;
-
- string str = vWords[3];
- if (str.rfind("@") == string::npos)
- return false;
- string strHost = str.substr(str.rfind("@")+1);
-
- // 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());
- CNetAddr addr(strHost, true);
- if (!addr.IsValid())
- return false;
- ipRet = addr;
-
- return true;
-}
-
-
-
-void ThreadIRCSeed(void* parg)
-{
- // Make this thread recognisable as the IRC seeding thread
- RenameThread("bitcoin-ircseed");
-
- printf("ThreadIRCSeed started\n");
-
- try
- {
- ThreadIRCSeed2(parg);
- }
- catch (std::exception& e) {
- PrintExceptionContinue(&e, "ThreadIRCSeed()");
- } catch (...) {
- PrintExceptionContinue(NULL, "ThreadIRCSeed()");
- }
- printf("ThreadIRCSeed exited\n");
-}
-
-void ThreadIRCSeed2(void* parg)
-{
- // 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 trying to connect...\n");
-
- int nErrorWait = 10;
- int nRetryWait = 10;
- int nNameRetry = 0;
-
- while (!fShutdown)
- {
- CService addrConnect("92.243.23.21", 6667); // irc.lfnet.org
-
- CService addrIRC("irc.lfnet.org", 6667, true);
- if (addrIRC.IsValid())
- addrConnect = addrIRC;
-
- SOCKET hSocket;
- if (!ConnectSocket(addrConnect, hSocket))
- {
- printf("IRC connect failed\n");
- nErrorWait = nErrorWait * 11 / 10;
- if (Wait(nErrorWait += 60))
- continue;
- else
- return;
- }
-
- if (!RecvUntil(hSocket, "Found your hostname", "using your IP address instead", "Couldn't look up your hostname", "ignoring hostname"))
- {
- closesocket(hSocket);
- hSocket = INVALID_SOCKET;
- nErrorWait = nErrorWait * 11 / 10;
- if (Wait(nErrorWait += 60))
- continue;
- else
- return;
- }
-
- CNetAddr addrIPv4("1.2.3.4"); // arbitrary IPv4 address to make GetLocal prefer IPv4 addresses
- CService addrLocal;
- string strMyName;
- // 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%"PRI64u"", GetRand(1000000000));
-
- Send(hSocket, strprintf("NICK %s\r", strMyName.c_str()).c_str());
- Send(hSocket, strprintf("USER %s 8 * : %s\r", strMyName.c_str(), strMyName.c_str()).c_str());
-
- int nRet = RecvUntil(hSocket, " 004 ", " 433 ");
- if (nRet != 1)
- {
- closesocket(hSocket);
- hSocket = INVALID_SOCKET;
- if (nRet == 2)
- {
- printf("IRC name already in use\n");
- nNameRetry++;
- Wait(10);
- continue;
- }
- nErrorWait = nErrorWait * 11 / 10;
- if (Wait(nErrorWait += 60))
- continue;
- else
- return;
- }
- nNameRetry = 0;
- Sleep(500);
-
- // Get our external IP from the IRC server and re-nick before joining the channel
- CNetAddr addrFromIRC;
- if (GetIPFromIRC(hSocket, strMyName, addrFromIRC))
- {
- printf("GetIPFromIRC() returned %s\n", addrFromIRC.ToString().c_str());
- // 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");
- } else {
- // randomly join #bitcoin00-#bitcoin99
- int channel_number = GetRandInt(100);
- Send(hSocket, strprintf("JOIN #bitcoin%02d\r", channel_number).c_str());
- Send(hSocket, strprintf("WHO #bitcoin%02d\r", channel_number).c_str());
- }
-
- int64 nStart = GetTime();
- string strLine;
- strLine.reserve(10000);
- while (!fShutdown && RecvLineIRC(hSocket, strLine))
- {
- if (strLine.empty() || strLine.size() > 900 || strLine[0] != ':')
- continue;
-
- vector<string> vWords;
- ParseString(strLine, ' ', vWords);
- if (vWords.size() < 2)
- continue;
-
- std::string strName;
-
- if (vWords[1] == "352" && vWords.size() >= 8)
- {
- // index 7 is limited to 16 characters
- // could get full length name at index 10, but would be different from join messages
- strName = vWords[7].c_str();
- printf("IRC got who\n");
- }
-
- if (vWords[1] == "JOIN" && vWords[0].size() > 1)
- {
- // :username!username@50000007.F000000B.90000002.IP JOIN :#channelname
- strName = vWords[0].substr(1, vWords[0].find('!', 1) - 1);
- printf("IRC got join\n");
- }
-
- if (boost::algorithm::starts_with(strName, "u"))
- {
- CAddress addr;
- if (DecodeAddress(strName, addr))
- {
- addr.nTime = GetAdjustedTime();
- if (addrman.Add(addr, addrConnect, 51 * 60))
- printf("IRC got new address: %s\n", addr.ToString().c_str());
- nGotIRCAddresses++;
- }
- else
- {
- printf("IRC decode failed\n");
- }
- }
- }
- closesocket(hSocket);
- hSocket = INVALID_SOCKET;
-
- if (GetTime() - nStart > 20 * 60)
- {
- nErrorWait /= 3;
- nRetryWait /= 3;
- }
-
- nRetryWait = nRetryWait * 11 / 10;
- if (!Wait(nRetryWait += 60))
- return;
- }
-}
-
-
-
-
-
-
-
-
-
-
-#ifdef TEST
-int main(int argc, char *argv[])
-{
- WSADATA wsadata;
- if (WSAStartup(MAKEWORD(2,2), &wsadata) != NO_ERROR)
- {
- printf("Error at WSAStartup()\n");
- return false;
- }
-
- ThreadIRCSeed(NULL);
-
- WSACleanup();
- return 0;
-}
-#endif
diff --git a/src/irc.h b/src/irc.h
deleted file mode 100644
index 119aeb3fda..0000000000
--- a/src/irc.h
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2009-2010 Satoshi Nakamoto
-// Copyright (c) 2009-2012 The Bitcoin developers
-// Distributed under the MIT/X11 software license, see the accompanying
-// file COPYING or http://www.opensource.org/licenses/mit-license.php.
-#ifndef BITCOIN_IRC_H
-#define BITCOIN_IRC_H
-
-void ThreadIRCSeed(void* parg);
-
-extern int nGotIRCAddresses;
-
-#endif
diff --git a/src/makefile.linux-mingw b/src/makefile.linux-mingw
index 7509e2798e..694cacd632 100644
--- a/src/makefile.linux-mingw
+++ b/src/makefile.linux-mingw
@@ -71,7 +71,6 @@ OBJS= \
obj/key.o \
obj/db.o \
obj/init.o \
- obj/irc.o \
obj/keystore.o \
obj/main.o \
obj/net.o \
diff --git a/src/makefile.mingw b/src/makefile.mingw
index 2e092ff686..8b5a5dccd9 100644
--- a/src/makefile.mingw
+++ b/src/makefile.mingw
@@ -79,7 +79,6 @@ OBJS= \
obj/key.o \
obj/db.o \
obj/init.o \
- obj/irc.o \
obj/keystore.o \
obj/main.o \
obj/net.o \
diff --git a/src/makefile.osx b/src/makefile.osx
index cdee781257..af12731fa4 100644
--- a/src/makefile.osx
+++ b/src/makefile.osx
@@ -80,7 +80,6 @@ OBJS= \
obj/key.o \
obj/db.o \
obj/init.o \
- obj/irc.o \
obj/keystore.o \
obj/main.o \
obj/net.o \
diff --git a/src/makefile.unix b/src/makefile.unix
index ece2f59cf5..4401cf0d56 100644
--- a/src/makefile.unix
+++ b/src/makefile.unix
@@ -111,7 +111,6 @@ OBJS= \
obj/key.o \
obj/db.o \
obj/init.o \
- obj/irc.o \
obj/keystore.o \
obj/main.o \
obj/net.o \
diff --git a/src/net.cpp b/src/net.cpp
index 3406a28b0e..6c8fe3ffc9 100644
--- a/src/net.cpp
+++ b/src/net.cpp
@@ -3,7 +3,6 @@
// Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
-#include "irc.h"
#include "db.h"
#include "net.h"
#include "init.h"
@@ -347,7 +346,6 @@ bool GetMyExternalIP2(const CService& addrConnect, const char* pszGet, const cha
return error("GetMyExternalIP() : connection closed");
}
-// We now get our external IP from the IRC server first and only use this as a backup
bool GetMyExternalIP(CNetAddr& ipRet)
{
CService addrConnect;
@@ -1155,6 +1153,7 @@ static const char *strMainNetDNSSeed[][2] = {
static const char *strTestNetDNSSeed[][2] = {
{"bitcoin.petertodd.org", "testnet-seed.bitcoin.petertodd.org"},
+ {"bluematt.me", "testnet-seed.bluematt.me"},
{NULL, NULL}
};
@@ -1928,10 +1927,6 @@ void StartNode(void* parg)
if (fUseUPnP)
MapPort();
- // Get addresses from IRC and advertise ours
- if (!NewThread(ThreadIRCSeed, NULL))
- printf("Error: NewThread(ThreadIRCSeed) failed\n");
-
// Send and receive from sockets, accept connections
if (!NewThread(ThreadSocketHandler, NULL))
printf("Error: NewThread(ThreadSocketHandler) failed\n");
diff --git a/src/net.h b/src/net.h
index 14e12aa102..3b46523cd9 100644
--- a/src/net.h
+++ b/src/net.h
@@ -49,7 +49,6 @@ enum
LOCAL_IF, // address a local interface listens on
LOCAL_BIND, // address explicit bound to
LOCAL_UPNP, // address reported by UPnP
- LOCAL_IRC, // address reported by IRC (deprecated)
LOCAL_HTTP, // address reported by whatismyip.com and similar
LOCAL_MANUAL, // address explicitly specified (-externalip=)