aboutsummaryrefslogtreecommitdiff
path: root/src/net.cpp
diff options
context:
space:
mode:
authorPieter Wuille <[email protected]>2011-07-14 05:29:09 -0700
committerPieter Wuille <[email protected]>2011-07-14 05:29:09 -0700
commit24271c542b9a0d6016badf5438fb7e5ff7961ace (patch)
tree8f99f62a11748d3f64200e9e44419dde3cbde7eb /src/net.cpp
parentMerge pull request #411 from TheBlueMatt/master (diff)
parentSingle DB transaction for addresses from DNS seeds (diff)
downloaddiscoin-24271c542b9a0d6016badf5438fb7e5ff7961ace.tar.xz
discoin-24271c542b9a0d6016badf5438fb7e5ff7961ace.zip
Merge pull request #412 from sgimenez/db-transactions
Single DB transactions
Diffstat (limited to 'src/net.cpp')
-rw-r--r--src/net.cpp20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/net.cpp b/src/net.cpp
index ac5a2834b..2a90f6d0c 100644
--- a/src/net.cpp
+++ b/src/net.cpp
@@ -440,7 +440,7 @@ void ThreadGetMyExternalIP(void* parg)
-bool AddAddress(CAddress addr, int64 nTimePenalty)
+bool AddAddress(CAddress addr, int64 nTimePenalty, CAddrDB *pAddrDB)
{
if (!addr.IsRoutable())
return false;
@@ -455,7 +455,10 @@ bool AddAddress(CAddress addr, int64 nTimePenalty)
// New address
printf("AddAddress(%s)\n", addr.ToString().c_str());
mapAddresses.insert(make_pair(addr.GetKey(), addr));
- CAddrDB().WriteAddress(addr);
+ if (pAddrDB)
+ pAddrDB->WriteAddress(addr);
+ else
+ CAddrDB().WriteAddress(addr);
return true;
}
else
@@ -477,7 +480,12 @@ bool AddAddress(CAddress addr, int64 nTimePenalty)
fUpdated = true;
}
if (fUpdated)
- CAddrDB().WriteAddress(addrFound);
+ {
+ if (pAddrDB)
+ pAddrDB->WriteAddress(addrFound);
+ else
+ CAddrDB().WriteAddress(addrFound);
+ }
}
}
return false;
@@ -1158,6 +1166,8 @@ void DNSAddressSeed()
if (!fTestNet)
{
printf("Loading addresses from DNS seeds (could take a while)\n");
+ CAddrDB addrDB;
+ addrDB.TxnBegin();
for (int seed_idx = 0; seed_idx < ARRAYLEN(strDNSSeed); seed_idx++) {
vector<CAddress> vaddr;
@@ -1168,12 +1178,14 @@ void DNSAddressSeed()
if (addr.GetByte(3) != 127)
{
addr.nTime = 0;
- AddAddress(addr);
+ AddAddress(addr, 0, &addrDB);
found++;
}
}
}
}
+
+ addrDB.TxnCommit(); // Save addresses (it's ok if this fails)
}
printf("%d addresses found from DNS seeds\n", found);