diff --git a/src/merge_mining_client_tari.cpp b/src/merge_mining_client_tari.cpp index 1b93320..b6d139d 100644 --- a/src/merge_mining_client_tari.cpp +++ b/src/merge_mining_client_tari.cpp @@ -895,6 +895,7 @@ void MergeMiningClientTari::TariClient::break_pairing() { if (is_paired()) { m_pairedClient->m_pairedClient = nullptr; + m_pairedClient->m_pairedClientSavedResetCounter = std::numeric_limits::max(); m_pairedClient->close(); } m_pairedClient = nullptr; diff --git a/src/merge_mining_client_tari.h b/src/merge_mining_client_tari.h index b383482..aef1ae3 100644 --- a/src/merge_mining_client_tari.h +++ b/src/merge_mining_client_tari.h @@ -116,6 +116,7 @@ private: void reset() override { break_pairing(); } [[nodiscard]] bool on_connect() override; [[nodiscard]] bool on_read(const char* data, uint32_t size) override; + void on_connect_failed(int /*err*/) override { break_pairing(); } void on_disconnected() override { break_pairing(); } alignas(8) char m_buf[BUF_SIZE]; diff --git a/src/tcp_server.cpp b/src/tcp_server.cpp index bc35057..a5cd6b9 100644 --- a/src/tcp_server.cpp +++ b/src/tcp_server.cpp @@ -766,6 +766,7 @@ void TCPServer::on_connect(uv_connect_t* req, int status) LOGWARN(5, "failed to connect to " << static_cast(client->m_addrString) << ", error " << uv_err_name(status)); } server->on_connect_failed(client->m_isV6, client->m_addr, client->m_port); + client->on_connect_failed(status); uv_close(reinterpret_cast(&client->m_socket), on_connection_error); return; } diff --git a/src/tcp_server.h b/src/tcp_server.h index 7c0e0bf..e4cc70f 100644 --- a/src/tcp_server.h +++ b/src/tcp_server.h @@ -65,6 +65,7 @@ public: [[nodiscard]] virtual bool on_connect() = 0; [[nodiscard]] virtual bool on_read(const char* data, uint32_t size) = 0; [[nodiscard]] bool on_proxy_handshake(const char* data, uint32_t size); + virtual void on_connect_failed(int /*err*/) {} virtual void on_read_failed(int /*err*/) {} virtual void on_disconnected() {}