diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/bitcoind.cpp | 2 | ||||
-rw-r--r-- | src/qt/bitcoin.cpp | 2 | ||||
-rw-r--r-- | src/qt/paymentserver.cpp | 10 | ||||
-rw-r--r-- | src/util/threadnames.cpp | 5 | ||||
-rw-r--r-- | src/util/threadnames.h | 5 |
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(); |