Branch data Line data Source code
1 : : // Copyright (c) 2023-present The Bitcoin Core developers
2 : : // Distributed under the MIT software license, see the accompanying
3 : : // file COPYING or http://www.opensource.org/licenses/mit-license.php.
4 : :
5 : : #include <node/abort.h>
6 : :
7 : : #include <logging.h>
8 : : #include <node/interface_ui.h>
9 : : #include <node/warnings.h>
10 : : #include <util/fs.h>
11 : : #include <util/signalinterrupt.h>
12 : : #include <util/translation.h>
13 : :
14 : : #include <atomic>
15 : : #include <cstdlib>
16 : :
17 : : namespace node {
18 : :
19 : 0 : void AbortNode(const std::function<bool()>& shutdown_request, std::atomic<int>& exit_status, const bilingual_str& message, node::Warnings* warnings)
20 : : {
21 [ # # # # ]: 0 : if (warnings) warnings->Set(Warning::FATAL_INTERNAL_ERROR, message);
22 [ # # # # : 0 : InitError(strprintf(_("A fatal internal error occurred, see %s for details: %s"), fs::PathToString(LogInstance().m_file_path.filename()), message));
# # ]
23 [ # # ]: 0 : exit_status.store(EXIT_FAILURE);
24 [ # # # # ]: 0 : if (shutdown_request && !shutdown_request()) {
25 : 0 : LogError("Failed to send shutdown signal\n");
26 : 0 : };
27 : 0 : }
28 : : } // namespace node
|