message: init: Capture copy of blocknotify setting for BlockNotifyCallback
  Can be reviewed with --color-moved=dimmed-zebra --color-moved-ws=ignore-all-space
diff: @@ -586,21 +586,6 @@ std::string LicenseInfo()
  "\n";
  }
  -#if HAVE_SYSTEM
  -static void BlockNotifyCallback(SynchronizationState sync_state, const CBlockIndex* pBlockIndex)
  -{
  - if (sync_state != SynchronizationState::POST_INIT || !pBlockIndex)
  - return;
  -
  - std::string strCmd = gArgs.GetArg("-blocknotify", "");
  - if (!strCmd.empty()) {
  - boost::replace_all(strCmd, "%s", pBlockIndex->GetBlockHash().GetHex());
  - std::thread t(runCommand, strCmd);
  - t.detach(); // thread runs free
  - }
  -}
  -#endif
  -
  static bool fHaveGenesis = false;
  static Mutex g_genesis_wait_mutex;
  static std::condition_variable g_genesis_wait_cv;
  @@ -1680,8 +1665,21 @@ bool AppInitMain(const util::Ref& context, NodeContext& node, interfaces::BlockA
  }
  #if HAVE_SYSTEM
  - if (gArgs.IsArgSet("-blocknotify"))
  + if (args.IsArgSet("-blocknotify")) {
  + const std::string block_notify = args.GetArg("-blocknotify", "");
  + const auto BlockNotifyCallback = [block_notify](SynchronizationState sync_state, const CBlockIndex* pBlockIndex) {
  + if (sync_state != SynchronizationState::POST_INIT || !pBlockIndex)
  + return;
  +
  + std::string strCmd = block_notify;
  + if (!strCmd.empty()) {
  + boost::replace_all(strCmd, "%s", pBlockIndex->GetBlockHash().GetHex());
  + std::thread t(runCommand, strCmd);
  + t.detach(); // thread runs free
  + }
  + };
  uiInterface.NotifyBlockTip_connect(BlockNotifyCallback);
  + }
  #endif
  std::vector<fs::path> vImportFiles;
  