aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/bitcoind.cpp2
-rw-r--r--src/qt/bitcoin.cpp2
-rw-r--r--src/qt/paymentserver.cpp10
-rw-r--r--src/util/threadnames.cpp5
-rw-r--r--src/util/threadnames.h5
5 files changed, 18 insertions, 6 deletions
diff --git a/src/bitcoind.cpp b/src/bitcoind.cpp
index 615b955f6e..17989a4214 100644
--- a/src/bitcoind.cpp
+++ b/src/bitcoind.cpp
@@ -45,7 +45,7 @@ static bool AppInit(int argc, char* argv[])
bool fRet = false;
- util::ThreadRename("init");
+ util::ThreadSetInternalName("init");
//
// Parameters
diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp
index ec6075c8fb..86f4dc91a1 100644
--- a/src/qt/bitcoin.cpp
+++ b/src/qt/bitcoin.cpp
@@ -416,7 +416,7 @@ int GuiMain(int argc, char* argv[])
std::tie(argc, argv) = winArgs.get();
#endif
SetupEnvironment();
- util::ThreadRename("main");
+ util::ThreadSetInternalName("main");
std::unique_ptr<interfaces::Node> node = interfaces::MakeNode();
diff --git a/src/qt/paymentserver.cpp b/src/qt/paymentserver.cpp
index 00d83d23dd..806cc3c41e 100644
--- a/src/qt/paymentserver.cpp
+++ b/src/qt/paymentserver.cpp
@@ -82,7 +82,7 @@ static QString ipcServerName()
// the main GUI window is up and ready to ask the user
// to send payment.
-static QList<QString> savedPaymentRequests;
+static QSet<QString> savedPaymentRequests;
//
// Sending to the server is done synchronously, at startup.
@@ -107,7 +107,8 @@ void PaymentServer::ipcParseCommandLine(interfaces::Node& node, int argc, char*
// will start a mainnet instance and throw a "wrong network" error.
if (arg.startsWith(BITCOIN_IPC_PREFIX, Qt::CaseInsensitive)) // bitcoin: URI
{
- savedPaymentRequests.append(arg);
+ if (savedPaymentRequests.contains(arg)) continue;
+ savedPaymentRequests.insert(arg);
SendCoinsRecipient r;
if (GUIUtil::parseBitcoinURI(arg, &r) && !r.address.isEmpty())
@@ -127,7 +128,8 @@ void PaymentServer::ipcParseCommandLine(interfaces::Node& node, int argc, char*
#ifdef ENABLE_BIP70
else if (QFile::exists(arg)) // Filename
{
- savedPaymentRequests.append(arg);
+ if (savedPaymentRequests.contains(arg)) continue;
+ savedPaymentRequests.insert(arg);
PaymentRequestPlus request;
if (readPaymentRequestFromFile(arg, request))
@@ -280,7 +282,7 @@ void PaymentServer::handleURIOrFile(const QString& s)
{
if (saveURIs)
{
- savedPaymentRequests.append(s);
+ savedPaymentRequests.insert(s);
return;
}
diff --git a/src/util/threadnames.cpp b/src/util/threadnames.cpp
index c25e9ed661..168f9325d0 100644
--- a/src/util/threadnames.cpp
+++ b/src/util/threadnames.cpp
@@ -60,3 +60,8 @@ void util::ThreadRename(std::string&& name)
SetThreadName(("b-" + name).c_str());
SetInternalName(std::move(name));
}
+
+void util::ThreadSetInternalName(std::string&& name)
+{
+ SetInternalName(std::move(name));
+}
diff --git a/src/util/threadnames.h b/src/util/threadnames.h
index aaf07b9bf8..69a1b55bfe 100644
--- a/src/util/threadnames.h
+++ b/src/util/threadnames.h
@@ -10,8 +10,13 @@
namespace util {
//! Rename a thread both in terms of an internal (in-memory) name as well
//! as its system thread name.
+//! @note Do not call this for the main thread, as this will interfere with
+//! UNIX utilities such as top and killall. Use ThreadSetInternalName instead.
void ThreadRename(std::string&&);
+//! Set the internal (in-memory) name of the current thread only.
+void ThreadSetInternalName(std::string&&);
+
//! Get the thread's internal (in-memory) name; used e.g. for identification in
//! logging.
const std::string& ThreadGetInternalName();