From f684aec4f38d6a9e48e870ca5dae6bd65da516cf Mon Sep 17 00:00:00 2001
From: Jeff Garzik <jeff@garzik.org>
Date: Tue, 8 Mar 2011 22:40:50 -0500
Subject: [PATCH 1/2] DNS seeding

---
 init.cpp |  3 +++
 net.cpp  | 27 +++++++++++++++++++++++++++
 net.h    |  1 +
 3 files changed, 31 insertions(+)

diff --git a/init.cpp b/init.cpp
index 9c84dca16..f74a14329 100644
--- a/init.cpp
+++ b/init.cpp
@@ -416,6 +416,9 @@ bool AppInit2(int argc, char* argv[])
         }
     }
 
+    if (mapArgs.count("-dnsseed"))
+        DNSAddressSeed();
+
     if (mapArgs.count("-paytxfee"))
     {
         if (!ParseMoney(mapArgs["-paytxfee"], nTransactionFee))
diff --git a/net.cpp b/net.cpp
index d18b63eb5..798c7e562 100644
--- a/net.cpp
+++ b/net.cpp
@@ -857,7 +857,34 @@ void ThreadSocketHandler2(void* parg)
 
 
 
+static const char *strDNSSeed[] = {
+    "bitseed.xf2.org",
+};
 
+void DNSAddressSeed()
+{
+    int found = 0;
+
+    printf("Loading addresses from DNS seeds (could take a while)\n");
+
+    for (int seed_idx = 0; seed_idx < ARRAYLEN(strDNSSeed); seed_idx++) {
+        struct hostent* phostent = gethostbyname(strDNSSeed[seed_idx]);
+        if (!phostent)
+            continue;
+
+        for (int host = 0; phostent->h_addr_list[host] != NULL; host++) {
+            CAddress addr(*(unsigned int*)phostent->h_addr_list[host],
+                          GetDefaultPort(), NODE_NETWORK);
+            addr.nTime = 0;
+            if (addr.IsValid() && addr.GetByte(3) != 127) {
+                AddAddress(addr);
+                found++;
+            }
+        }
+    }
+
+    printf("%d addresses found from DNS seeds\n");
+}
 
 
 
diff --git a/net.h b/net.h
index f07081619..05ef5e064 100644
--- a/net.h
+++ b/net.h
@@ -30,6 +30,7 @@ CNode* FindNode(unsigned int ip);
 CNode* ConnectNode(CAddress addrConnect, int64 nTimeout=0);
 void AbandonRequests(void (*fn)(void*, CDataStream&), void* param1);
 bool AnySubscribed(unsigned int nChannel);
+void DNSAddressSeed();
 bool BindListenPort(string& strError=REF(string()));
 void StartNode(void* parg);
 bool StopNode();

From 448b4516ff982052e375d42059bcf0fb7e58589f Mon Sep 17 00:00:00 2001
From: Jeff Garzik <jeff@garzik.org>
Date: Tue, 8 Mar 2011 22:55:29 -0500
Subject: [PATCH 2/2] dnsseed: fix printf

---
 net.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net.cpp b/net.cpp
index 798c7e562..372402f51 100644
--- a/net.cpp
+++ b/net.cpp
@@ -883,7 +883,7 @@ void DNSAddressSeed()
         }
     }
 
-    printf("%d addresses found from DNS seeds\n");
+    printf("%d addresses found from DNS seeds\n", found);
 }