diff --git a/locale/nl/LC_MESSAGES/bitcoin.po b/locale/nl/LC_MESSAGES/bitcoin.po
index 97216add9..986a1e5d9 100644
--- a/locale/nl/LC_MESSAGES/bitcoin.po
+++ b/locale/nl/LC_MESSAGES/bitcoin.po
@@ -448,7 +448,7 @@ msgstr "&Open Bitcoin"
#: ../../../src/ui.cpp:2682
msgid "&Send Bitcoins"
-msgstr "&Open Bitcoin"
+msgstr "&Verstuur Bitcoins"
#: ../../../src/ui.cpp:2683
msgid "O&ptions..."
diff --git a/share/uiproject.fbp b/share/uiproject.fbp
index d5e6b1e36..7d2c25841 100644
--- a/share/uiproject.fbp
+++ b/share/uiproject.fbp
@@ -2090,7 +2090,7 @@
0
wxID_ANY
- &Connect through socks4 proxy:
+ &Connect through socks4 proxy (requires restart to apply):
m_checkBoxUseProxy
diff --git a/src/bitcoinrpc.cpp b/src/bitcoinrpc.cpp
index 5bc7353f4..c8248fa4f 100644
--- a/src/bitcoinrpc.cpp
+++ b/src/bitcoinrpc.cpp
@@ -342,21 +342,19 @@ Value getnewaddress(const Array& params, bool fHelp)
strAccount = AccountFromValue(params[0]);
// Generate a new key that is added to wallet
- string strAddress = CBitcoinAddress(pwalletMain->GetOrReuseKeyFromPool()).ToString();
+ CBitcoinAddress address(pwalletMain->GetOrReuseKeyFromPool());
// This could be done in the same main CS as GetKeyFromKeyPool.
CRITICAL_BLOCK(pwalletMain->cs_mapAddressBook)
- pwalletMain->SetAddressBookName(strAddress, strAccount);
+ pwalletMain->SetAddressBookName(address, strAccount);
- return strAddress;
+ return address.ToString();
}
// requires cs_main, cs_mapWallet, cs_mapAddressBook locks
CBitcoinAddress GetAccountAddress(string strAccount, bool bForceNew=false)
{
- string strAddress;
-
CWalletDB walletdb(pwalletMain->strWalletFile);
CAccount account;
@@ -393,8 +391,7 @@ CBitcoinAddress GetAccountAddress(string strAccount, bool bForceNew=false)
else
{
account.vchPubKey = pwalletMain->GetOrReuseKeyFromPool();
- string strAddress = CBitcoinAddress(account.vchPubKey).ToString();
- pwalletMain->SetAddressBookName(strAddress, strAccount);
+ pwalletMain->SetAddressBookName(CBitcoinAddress(account.vchPubKey), strAccount);
walletdb.WriteAccount(strAccount, account);
}
}
@@ -434,8 +431,7 @@ Value setaccount(const Array& params, bool fHelp)
"setaccount \n"
"Sets the account associated with the given address.");
- string strAddress = params[0].get_str();
- CBitcoinAddress address(strAddress);
+ CBitcoinAddress address(params[0].get_str());
if (!address.IsValid())
throw JSONRPCError(-5, "Invalid bitcoin address");
@@ -456,7 +452,7 @@ Value setaccount(const Array& params, bool fHelp)
GetAccountAddress(strOldAccount, true);
}
- pwalletMain->SetAddressBookName(strAddress, strAccount);
+ pwalletMain->SetAddressBookName(address, strAccount);
}
return Value::null;
@@ -470,8 +466,9 @@ Value getaccount(const Array& params, bool fHelp)
"getaccount \n"
"Returns the account associated with the given address.");
- string strAddress = params[0].get_str();
- CBitcoinAddress address(strAddress);
+ CBitcoinAddress address(params[0].get_str());
+ if (!address.IsValid())
+ throw JSONRPCError(-5, "Invalid bitcoin address");
string strAccount;
CRITICAL_BLOCK(pwalletMain->cs_mapAddressBook)
@@ -536,7 +533,9 @@ Value sendtoaddress(const Array& params, bool fHelp)
"sendtoaddress [comment] [comment-to]\n"
" is a real and is rounded to the nearest 0.00000001");
- string strAddress = params[0].get_str();
+ CBitcoinAddress address(params[0].get_str());
+ if (!address.IsValid())
+ throw JSONRPCError(-5, "Invalid bitcoin address");
// Amount
int64 nAmount = AmountFromValue(params[1]);
@@ -554,7 +553,7 @@ Value sendtoaddress(const Array& params, bool fHelp)
if(pwalletMain->IsLocked())
throw JSONRPCError(-14, "Error: The wallet passphrase entered was incorrect.");
- string strError = pwalletMain->SendMoneyToBitcoinAddress(strAddress, nAmount, wtx);
+ string strError = pwalletMain->SendMoneyToBitcoinAddress(address, nAmount, wtx);
if (strError != "")
throw JSONRPCError(-4, strError);
}
@@ -807,7 +806,9 @@ Value sendfrom(const Array& params, bool fHelp)
" is a real and is rounded to the nearest 0.00000001");
string strAccount = AccountFromValue(params[0]);
- string strAddress = params[1].get_str();
+ CBitcoinAddress address(params[1].get_str());
+ if (!address.IsValid())
+ throw JSONRPCError(-5, "Invalid bitcoin address");
int64 nAmount = AmountFromValue(params[2]);
int nMinDepth = 1;
if (params.size() > 3)
@@ -833,7 +834,7 @@ Value sendfrom(const Array& params, bool fHelp)
throw JSONRPCError(-6, "Account has insufficient funds");
// Send
- string strError = pwalletMain->SendMoneyToBitcoinAddress(strAddress, nAmount, wtx);
+ string strError = pwalletMain->SendMoneyToBitcoinAddress(address, nAmount, wtx);
if (strError != "")
throw JSONRPCError(-4, strError);
}
@@ -1538,8 +1539,7 @@ Value validateaddress(const Array& params, bool fHelp)
"validateaddress \n"
"Return information about .");
- string strAddress = params[0].get_str();
- CBitcoinAddress address(strAddress);
+ CBitcoinAddress address(params[0].get_str());
bool isValid = address.IsValid();
Object ret;
@@ -1742,7 +1742,7 @@ string pAllowInSafeMode[] =
"getinfo",
"getnewaddress",
"getaccountaddress",
- "setlabel",
+ "setlabel", // deprecated
"getaccount",
"getlabel", // deprecated
"getaddressesbyaccount",
@@ -2373,7 +2373,7 @@ int CommandLineRPC(int argc, char *argv[])
if (strMethod == "getreceivedbyaccount" && n > 1) ConvertTo(params[1]);
if (strMethod == "getreceivedbylabel" && n > 1) ConvertTo(params[1]); // deprecated
if (strMethod == "getallreceived" && n > 0) ConvertTo(params[0]); // deprecated
- if (strMethod == "getallreceived" && n > 1) ConvertTo(params[1]);
+ if (strMethod == "getallreceived" && n > 1) ConvertTo(params[1]); // deprecated
if (strMethod == "listreceivedbyaddress" && n > 0) ConvertTo(params[0]);
if (strMethod == "listreceivedbyaddress" && n > 1) ConvertTo(params[1]);
if (strMethod == "listreceivedbyaccount" && n > 0) ConvertTo(params[0]);
diff --git a/src/init.cpp b/src/init.cpp
index c328ca37d..eeb22bbaf 100644
--- a/src/init.cpp
+++ b/src/init.cpp
@@ -246,7 +246,8 @@ bool AppInit2(int argc, char* argv[])
fPrintToDebugger = GetBoolArg("-printtodebugger");
fTestNet = GetBoolArg("-testnet");
- fNoListen = GetBoolArg("-nolisten");
+ bool fTOR = (fUseProxy && addrProxy.port == htons(9050));
+ fNoListen = GetBoolArg("-nolisten") || fTOR;
fLogTimestamps = GetBoolArg("-logtimestamps");
for (int i = 1; i < argc; i++)
diff --git a/src/net.cpp b/src/net.cpp
index 2a90f6d0c..d69778821 100644
--- a/src/net.cpp
+++ b/src/net.cpp
@@ -1092,13 +1092,14 @@ void ThreadMapPort2(void* parg)
{
char intClient[16];
char intPort[6];
+ string strDesc = "Bitcoin " + FormatFullVersion();
#ifndef __WXMSW__
r = UPNP_AddPortMapping(urls.controlURL, data.first.servicetype,
- port, port, lanaddr, 0, "TCP", 0);
+ port, port, lanaddr, strDesc.c_str(), "TCP", 0);
#else
r = UPNP_AddPortMapping(urls.controlURL, data.first.servicetype,
- port, port, lanaddr, 0, "TCP", 0, "0");
+ port, port, lanaddr, strDesc.c_str(), "TCP", 0, "0");
#endif
if(r!=UPNPCOMMAND_SUCCESS)
printf("AddPortMapping(%s, %s, %s) failed with code %d (%s)\n",
diff --git a/src/uibase.cpp b/src/uibase.cpp
index 18eec4413..6d219ad66 100644
--- a/src/uibase.cpp
+++ b/src/uibase.cpp
@@ -367,7 +367,7 @@ COptionsDialogBase::COptionsDialogBase( wxWindow* parent, wxWindowID id, const w
wxBoxSizer* bSizer102;
bSizer102 = new wxBoxSizer( wxHORIZONTAL );
- m_checkBoxUseProxy = new wxCheckBox( m_panelMain, wxID_ANY, _("&Connect through socks4 proxy: "), wxDefaultPosition, wxDefaultSize, 0 );
+ m_checkBoxUseProxy = new wxCheckBox( m_panelMain, wxID_ANY, _("&Connect through socks4 proxy (requires restart to apply): "), wxDefaultPosition, wxDefaultSize, 0 );
bSizer102->Add( m_checkBoxUseProxy, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
bSizer69->Add( bSizer102, 1, wxEXPAND, 5 );
diff --git a/src/util.h b/src/util.h
index 7ac36c0f4..a1e3c263d 100644
--- a/src/util.h
+++ b/src/util.h
@@ -621,7 +621,10 @@ inline pthread_t CreateThread(void(*pfn)(void*), void* parg, bool fWantHandle=fa
return (pthread_t)0;
}
if (!fWantHandle)
+ {
+ pthread_detach(hthread);
return (pthread_t)-1;
+ }
return hthread;
}