refactor: Remove empty caption from ThreadSafeMessageBox
What changed, and why it matters
This is a simple code cleanup: a function used to show pop-up messages had an unused 'caption' parameter that was always passed as empty. The commit removes that parameter everywhere. The commit message explicitly says it does not change any user-facing behavior, and the code changes match that claim.
No security action needed. This is a behavior-preserving refactor.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The commit refactors ThreadSafeMessageBox and related callbacks to remove the unused caption std::string parameter. All call sites previously passed an empty string for caption, and the QT GUI path still passes an empty caption to its internal helper. The non-GUI (noui) handler’s default branch now builds strCaption = ": " instead of caption + ": ", but since caption was always empty, the resulting log output is unchanged. The test-only noui_ThreadSafeMessageBoxRedirect drops the caption from its log line, again with no functional change because the caption was always empty.
Changed components
src/node/interface_ui.hsrc/node/interface_ui.cppsrc/noui.cppsrc/noui.hsrc/interfaces/node.hsrc/qt/bitcoingui.cppsrc/init.cppsrc/net.cppsrc/httpserver.cppInspect captured patch +19 / −19
diff --git a/src/httpserver.cpp b/src/httpserver.cpp
index 6cf47eba..c55922ce 100644
--- a/src/httpserver.cpp
+++ b/src/httpserver.cpp
@@ -230,7 +230,7 @@ static bool InitHTTPAllowList()
if (!subnet.IsValid()) {
uiInterface.ThreadSafeMessageBox(
Untranslated(strprintf("Invalid -rpcallowip subnet specification: %s. Valid values are a single IP (e.g. 1.2.3.4), a network/netmask (e.g. 1.2.3.4/255.255.255.0), a network/CIDR (e.g. 1.2.3.4/24), all ipv4 (0.0.0.0/0), or all ipv6 (::/0). RFC4193 is allowed only if -cjdnsreachable=0.", strAllow)),
- "", CClientUIInterface::MSG_ERROR);
+ CClientUIInterface::MSG_ERROR);
return false;
}
rpc_allow_subnets.push_back(subnet);
diff --git a/src/init.cpp b/src/init.cpp
index e353fdfa..2a2fc42e 100644
--- a/src/init.cpp
+++ b/src/init.cpp
@@ -1377,7 +1377,7 @@ static ChainstateLoadResult InitAndLoadChainstate(
options.coins_error_cb = [] {
uiInterface.ThreadSafeMessageBox(
_("Error reading from database, shutting down."),
- "", CClientUIInterface::MSG_ERROR);
+ CClientUIInterface::MSG_ERROR);
};
uiInterface.InitMessage(_("Loading block index…"));
auto catch_exceptions = [](auto&& f) -> ChainstateLoadResult {
diff --git a/src/interfaces/node.h b/src/interfaces/node.h
index e01b1cc7..6a051d8d 100644
--- a/src/interfaces/node.h
+++ b/src/interfaces/node.h
@@ -219,7 +219,7 @@ public:
//! Register handler for message box messages.
using MessageBoxFn =
- std::function<bool(const bilingual_str& message, const std::string& caption, unsigned int style)>;
+ std::function<bool(const bilingual_str& message, unsigned int style)>;
virtual std::unique_ptr<Handler> handleMessageBox(MessageBoxFn fn) = 0;
//! Register handler for question messages.
diff --git a/src/net.cpp b/src/net.cpp
index d92cb72c..9b8644fe 100644
--- a/src/net.cpp
+++ b/src/net.cpp
@@ -3423,7 +3423,7 @@ bool CConnman::Bind(const CService& addr_, unsigned int flags, NetPermissionFlag
bilingual_str strError;
if (!BindListenPort(addr, strError, permissions)) {
if ((flags & BF_REPORT_ERROR) && m_client_interface) {
- m_client_interface->ThreadSafeMessageBox(strError, "", CClientUIInterface::MSG_ERROR);
+ m_client_interface->ThreadSafeMessageBox(strError, CClientUIInterface::MSG_ERROR);
}
return false;
}
@@ -3478,7 +3478,7 @@ bool CConnman::Start(CScheduler& scheduler, const Options& connOptions)
if (m_client_interface) {
m_client_interface->ThreadSafeMessageBox(
_("Failed to listen on any port. Use -listen=0 if you want this."),
- "", CClientUIInterface::MSG_ERROR);
+ CClientUIInterface::MSG_ERROR);
}
return false;
}
@@ -3546,7 +3546,7 @@ bool CConnman::Start(CScheduler& scheduler, const Options& connOptions)
if (m_client_interface) {
m_client_interface->ThreadSafeMessageBox(
_("Cannot provide specific connections and have addrman find outgoing connections at the same time."),
- "", CClientUIInterface::MSG_ERROR);
+ CClientUIInterface::MSG_ERROR);
}
return false;
}
diff --git a/src/node/interface_ui.cpp b/src/node/interface_ui.cpp
index 3f3638bf..d96c5155 100644
--- a/src/node/interface_ui.cpp
+++ b/src/node/interface_ui.cpp
@@ -47,7 +47,7 @@ ADD_SIGNALS_IMPL_WRAPPER(NotifyBlockTip);
ADD_SIGNALS_IMPL_WRAPPER(NotifyHeaderTip);
ADD_SIGNALS_IMPL_WRAPPER(BannedListChanged);
-bool CClientUIInterface::ThreadSafeMessageBox(const bilingual_str& message, const std::string& caption, unsigned int style) { return g_ui_signals.ThreadSafeMessageBox(message, caption, style).value_or(false);}
+bool CClientUIInterface::ThreadSafeMessageBox(const bilingual_str& message, unsigned int style) { return g_ui_signals.ThreadSafeMessageBox(message, style).value_or(false);}
bool CClientUIInterface::ThreadSafeQuestion(const bilingual_str& message, const std::string& non_interactive_message, unsigned int style) { return g_ui_signals.ThreadSafeQuestion(message, non_interactive_message, style).value_or(false);}
void CClientUIInterface::InitMessage(const std::string& message) { return g_ui_signals.InitMessage(message); }
void CClientUIInterface::InitWallet() { return g_ui_signals.InitWallet(); }
@@ -61,7 +61,7 @@ void CClientUIInterface::BannedListChanged() { return g_ui_signals.BannedListCha
bool InitError(const bilingual_str& str)
{
- uiInterface.ThreadSafeMessageBox(str, "", CClientUIInterface::MSG_ERROR);
+ uiInterface.ThreadSafeMessageBox(str, CClientUIInterface::MSG_ERROR);
return false;
}
@@ -79,5 +79,5 @@ bool InitError(const bilingual_str& str, const std::vector<std::string>& details
void InitWarning(const bilingual_str& str)
{
- uiInterface.ThreadSafeMessageBox(str, "", CClientUIInterface::MSG_WARNING);
+ uiInterface.ThreadSafeMessageBox(str, CClientUIInterface::MSG_WARNING);
}
diff --git a/src/node/interface_ui.h b/src/node/interface_ui.h
index e2946f63..ce5171bb 100644
--- a/src/node/interface_ui.h
+++ b/src/node/interface_ui.h
@@ -74,9 +74,9 @@ public:
boost::signals2::connection signal_name##_connect(std::function<signal_name##Sig> fn)
/** Show message box. */
- ADD_SIGNALS_DECL_WRAPPER(ThreadSafeMessageBox, bool, const bilingual_str& message, const std::string& caption, unsigned int style);
+ ADD_SIGNALS_DECL_WRAPPER(ThreadSafeMessageBox, bool, const bilingual_str& message, unsigned int style);
- /** If possible, ask the user a question. If not, falls back to ThreadSafeMessageBox(noninteractive_message, caption, style) and returns false. */
+ /** If possible, ask the user a question. If not, falls back to ThreadSafeMessageBox(noninteractive_message, style) and returns false. */
ADD_SIGNALS_DECL_WRAPPER(ThreadSafeQuestion, bool, const bilingual_str& message, const std::string& noninteractive_message, unsigned int style);
/** Progress message during initialization. */
diff --git a/src/noui.cpp b/src/noui.cpp
index 8f16752d..7451a999 100644
--- a/src/noui.cpp
+++ b/src/noui.cpp
@@ -19,7 +19,7 @@ boost::signals2::connection noui_ThreadSafeMessageBoxConn;
boost::signals2::connection noui_ThreadSafeQuestionConn;
boost::signals2::connection noui_InitMessageConn;
-bool noui_ThreadSafeMessageBox(const bilingual_str& message, const std::string& caption, unsigned int style)
+bool noui_ThreadSafeMessageBox(const bilingual_str& message, unsigned int style)
{
bool fSecure = style & CClientUIInterface::SECURE;
style &= ~CClientUIInterface::SECURE;
@@ -39,7 +39,7 @@ bool noui_ThreadSafeMessageBox(const bilingual_str& message, const std::string&
if (!fSecure) LogInfo("%s\n", message.original);
break;
default:
- strCaption = caption + ": "; // Use supplied caption (can be empty)
+ strCaption = ": "; // caption is always empty TODO fix this
if (!fSecure) LogInfo("%s%s\n", strCaption, message.original);
}
@@ -49,7 +49,7 @@ bool noui_ThreadSafeMessageBox(const bilingual_str& message, const std::string&
bool noui_ThreadSafeQuestion(const bilingual_str& /* ignored interactive message */, const std::string& message, unsigned int style)
{
- return noui_ThreadSafeMessageBox(Untranslated(message), /*caption=*/"", style);
+ return noui_ThreadSafeMessageBox(Untranslated(message), style);
}
void noui_InitMessage(const std::string& message)
@@ -64,9 +64,9 @@ void noui_connect()
noui_InitMessageConn = uiInterface.InitMessage_connect(noui_InitMessage);
}
-bool noui_ThreadSafeMessageBoxRedirect(const bilingual_str& message, const std::string& caption, unsigned int style)
+bool noui_ThreadSafeMessageBoxRedirect(const bilingual_str& message, unsigned int style)
{
- LogInfo("%s: %s", caption, message.original);
+ LogInfo("%s", message.original);
return false;
}
diff --git a/src/noui.h b/src/noui.h
index e869fa82..332346f5 100644
--- a/src/noui.h
+++ b/src/noui.h
@@ -10,7 +10,7 @@
struct bilingual_str;
/** Non-GUI handler, which logs and prints messages. */
-bool noui_ThreadSafeMessageBox(const bilingual_str& message, const std::string& caption, unsigned int style);
+bool noui_ThreadSafeMessageBox(const bilingual_str& message, unsigned int style);
/** Non-GUI handler, which logs and prints questions. */
bool noui_ThreadSafeQuestion(const bilingual_str& /* ignored interactive message */, const std::string& message, unsigned int style);
/** Non-GUI handler, which only logs a message. */
diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp
index 13f4cb05..3c3f84c7 100644
--- a/src/qt/bitcoingui.cpp
+++ b/src/qt/bitcoingui.cpp
@@ -1615,8 +1615,8 @@ static bool ThreadSafeMessageBox(BitcoinGUI* gui, const bilingual_str& message,
void BitcoinGUI::subscribeToCoreSignals()
{
// Connect signals to client
- m_handler_message_box = m_node.handleMessageBox([this](const bilingual_str& message, const std::string& caption, unsigned int style) {
- return ThreadSafeMessageBox(this, message, caption, style);
+ m_handler_message_box = m_node.handleMessageBox([this](const bilingual_str& message, unsigned int style) {
+ return ThreadSafeMessageBox(this, message, /*caption=*/"", style);
});
m_handler_question = m_node.handleQuestion([this](const bilingual_str& message, const std::string& /*non_interactive_message*/, unsigned int style) {
return ThreadSafeMessageBox(this, message, /*caption=*/"", style);
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.