Fix addrProxy setting

Before 0.6 addrProxy was a CAddress, but netbase changed it to CService.
Retain compatibility by wrapping/unwrapping with a CAddress when saving
or loading.

This commit retains compatibility with 0.6.0rc1 (which wrote the setting
as a CService) by trying to parse twice.
This commit is contained in:
Pieter Wuille
2012-02-25 20:59:18 +01:00
parent da9ab62fb7
commit 4a10d4c6dc
2 changed files with 17 additions and 3 deletions

View File

@@ -931,7 +931,21 @@ int CWalletDB::LoadWallet(CWallet* pwallet)
if (strKey == "fMinimizeToTray") ssValue >> fMinimizeToTray;
if (strKey == "fMinimizeOnClose") ssValue >> fMinimizeOnClose;
if (strKey == "fUseProxy") ssValue >> fUseProxy;
if (strKey == "addrProxy") ssValue >> addrProxy;
if (strKey == "addrProxy")
{
CAddress addr;
CDataStream ssValue2 = ssValue;
// 0.6.0rc1 saved this as a CService, which causes failure when parsing as a CAddress
try
{
ssValue >> addr;
addrProxy = addr;
}
catch (std::ios_base::failure &e)
{
ssValue2 >> addrProxy;
}
}
if (fHaveUPnP && strKey == "fUseUPnP") ssValue >> fUseUPnP;
}
else if (strType == "minversion")