diff --git a/main.qml b/main.qml index f97a2732..a399f058 100644 --- a/main.qml +++ b/main.qml @@ -699,13 +699,13 @@ ApplicationWindow { currentWallet.connected(true); } - function onDaemonStartFailure(){ + function onDaemonStartFailure(error) { console.log("daemon start failed"); hideProcessingSplash(); // resume refresh currentWallet.startRefresh(); informationPopup.title = qsTr("Daemon failed to start") + translationManager.emptyString; - informationPopup.text = qsTr("Please check your wallet and daemon log for errors. You can also try to start %1 manually.").arg((isWindows)? "monerod.exe" : "monerod") + informationPopup.text = error + ".\n\n" + qsTr("Please check your wallet and daemon log for errors. You can also try to start %1 manually.").arg((isWindows)? "monerod.exe" : "monerod") informationPopup.icon = StandardIcon.Critical informationPopup.onCloseCallback = null informationPopup.open(); diff --git a/src/daemon/DaemonManager.cpp b/src/daemon/DaemonManager.cpp index 74da6351..8d995458 100644 --- a/src/daemon/DaemonManager.cpp +++ b/src/daemon/DaemonManager.cpp @@ -63,6 +63,12 @@ DaemonManager *DaemonManager::instance(const QStringList *args) bool DaemonManager::start(const QString &flags, NetworkType::Type nettype, const QString &dataDir, const QString &bootstrapNodeAddress, bool noSync /* = false*/) { + if (!QFileInfo(m_monerod).isFile()) + { + emit daemonStartFailure("\"" + QDir::toNativeSeparators(m_monerod) + "\" " + tr("executable is missing")); + return false; + } + // prepare command line arguments and pass to monerod QStringList arguments; @@ -130,7 +136,7 @@ bool DaemonManager::start(const QString &flags, NetworkType::Type nettype, const if (!started) { qDebug() << "Daemon start error: " + m_daemon->errorString(); - emit daemonStartFailure(); + emit daemonStartFailure(m_daemon->errorString()); return false; } @@ -140,7 +146,7 @@ bool DaemonManager::start(const QString &flags, NetworkType::Type nettype, const emit daemonStarted(); m_noSync = noSync; } else { - emit daemonStartFailure(); + emit daemonStartFailure(tr("Timed out, local node is not responding after %1 seconds").arg(DAEMON_START_TIMEOUT_SECONDS)); } }); diff --git a/src/daemon/DaemonManager.h b/src/daemon/DaemonManager.h index a03d3d9b..4bbd3133 100644 --- a/src/daemon/DaemonManager.h +++ b/src/daemon/DaemonManager.h @@ -64,7 +64,7 @@ private: signals: void daemonStarted() const; void daemonStopped() const; - void daemonStartFailure() const; + void daemonStartFailure(const QString &error) const; void daemonConsoleUpdated(QString message) const; public slots: