aboutsummaryrefslogtreecommitdiff
path: root/src/p2pool
diff options
context:
space:
mode:
authorselsta <selsta@sent.at>2023-04-09 03:00:42 +0200
committerselsta <selsta@sent.at>2023-04-13 15:44:52 +0200
commit6ac8e7a464cc56190854121e3ec4e42363cadc9e (patch)
tree421f72068679ded56d72363b62023854dcda77a9 /src/p2pool
parentf650e963630f49b44a2ef16211f565555b9f159e (diff)
downloadmonzero-gui-6ac8e7a464cc56190854121e3ec4e42363cadc9e.tar.gz
monzero-gui-6ac8e7a464cc56190854121e3ec4e42363cadc9e.tar.xz
monzero-gui-6ac8e7a464cc56190854121e3ec4e42363cadc9e.zip
p2pool: add more detailed failure message
Diffstat (limited to 'src/p2pool')
-rw-r--r--src/p2pool/P2PoolManager.cpp11
-rw-r--r--src/p2pool/P2PoolManager.h11
2 files changed, 17 insertions, 5 deletions
diff --git a/src/p2pool/P2PoolManager.cpp b/src/p2pool/P2PoolManager.cpp
index e4655c14..0119aa98 100644
--- a/src/p2pool/P2PoolManager.cpp
+++ b/src/p2pool/P2PoolManager.cpp
@@ -68,7 +68,10 @@ void P2PoolManager::download() {
std::chrono::milliseconds timeout = std::chrono::seconds(10);
http_client.set_server(url.host().toStdString(), "443", {});
bool success = http_client.invoke_get(url.path().toStdString(), timeout, {}, std::addressof(response), {{"User-Agent", userAgent}});
- if (response->m_response_code == 302) {
+ if (response->m_response_code == 404) {
+ emit p2poolDownloadFailure(BinaryNotAvailable);
+ return;
+ } else if (response->m_response_code == 302) {
epee::net_utils::http::fields_list fields = response->m_header_info.m_etc_fields;
for (std::pair<std::string, std::string> i : fields) {
if (i.first == "Location") {
@@ -82,7 +85,7 @@ void P2PoolManager::download() {
}
}
if (!success) {
- emit p2poolDownloadFailure();
+ emit p2poolDownloadFailure(ConnectionIssue);
}
else {
std::string stringData = response->m_body;
@@ -90,7 +93,7 @@ void P2PoolManager::download() {
QByteArray hashData = QCryptographicHash::hash(data, QCryptographicHash::Sha256);
QString hash = hashData.toHex();
if (hash != validHash) {
- emit p2poolDownloadFailure();
+ emit p2poolDownloadFailure(HashVerificationFailed);
}
else {
file.open(QIODevice::WriteOnly);
@@ -102,7 +105,7 @@ void P2PoolManager::download() {
emit p2poolDownloadSuccess();
}
else {
- emit p2poolDownloadFailure();
+ emit p2poolDownloadFailure(InstallationFailed);
}
}
}
diff --git a/src/p2pool/P2PoolManager.h b/src/p2pool/P2PoolManager.h
index f1679567..b813e042 100644
--- a/src/p2pool/P2PoolManager.h
+++ b/src/p2pool/P2PoolManager.h
@@ -51,13 +51,22 @@ public:
Q_INVOKABLE bool isInstalled();
Q_INVOKABLE void getStatus();
Q_INVOKABLE void download();
+
+ enum DownloadError {
+ BinaryNotAvailable,
+ ConnectionIssue,
+ HashVerificationFailed,
+ InstallationFailed,
+ };
+ Q_ENUM(DownloadError)
+
private:
bool running(NetworkType::Type nettype) const;
signals:
void p2poolStartFailure() const;
void p2poolStatus(bool isMining, int hashrate) const;
- void p2poolDownloadFailure() const;
+ void p2poolDownloadFailure(int errorCode) const;
void p2poolDownloadSuccess() const;
private: