#1138 Fixed reconnect.

This commit is contained in:
XMRig 2019-08-30 10:04:12 +07:00
parent df91a85128
commit 5678d15841
4 changed files with 43 additions and 28 deletions

View file

@ -70,21 +70,15 @@ static const char *states[] = {
"host-lookup",
"connecting",
"connected",
"closing"
"closing",
"reconnecting"
};
#endif
xmrig::Client::Client(int id, const char *agent, IClientListener *listener) :
BaseClient(id, listener),
m_agent(agent),
m_tls(nullptr),
m_expire(0),
m_jobs(0),
m_keepAlive(0),
m_key(0),
m_stream(nullptr),
m_socket(nullptr)
m_agent(agent)
{
m_key = m_storage.add(this);
m_dns = new Dns(this);
@ -238,8 +232,12 @@ void xmrig::Client::tick(uint64_t now)
return;
}
if (m_expire && now > m_expire && m_state == ConnectingState) {
connect();
if (m_state == ReconnectingState && m_expire && now > m_expire) {
return connect();
}
if (m_state == ConnectingState && m_expire && now > m_expire) {
return reconnect();
}
}
@ -449,7 +447,6 @@ int xmrig::Client::resolve(const String &host)
{
setState(HostLookupState);
m_expire = 0;
m_recvBuf.reset();
if (m_failures == -1) {
@ -814,12 +811,10 @@ void xmrig::Client::reconnect()
return m_listener->onClose(this, -1);
}
setState(ConnectingState);
setState(ReconnectingState);
m_failures++;
m_listener->onClose(this, static_cast<int>(m_failures));
m_expire = Chrono::steadyMSecs() + m_retryPause;
}
@ -831,6 +826,23 @@ void xmrig::Client::setState(SocketState state)
return;
}
switch (state) {
case HostLookupState:
m_expire = 0;
break;
case ConnectingState:
m_expire = Chrono::steadyMSecs() + kConnectTimeout;
break;
case ReconnectingState:
m_expire = Chrono::steadyMSecs() + m_retryPause;
break;
default:
break;
}
m_state = state;
}