diff options
| author | oldmud0 <oldmud0@users.noreply.github.com> | 2017-12-29 17:03:24 -0600 |
|---|---|---|
| committer | oldmud0 <oldmud0@users.noreply.github.com> | 2017-12-29 17:10:47 -0600 |
| commit | 2925c8c8910e6c16348c24152f84de3ab2adc6d9 (patch) | |
| tree | 6b925005d157a7e8df2a7f72af489e131b5c2f07 | |
| parent | 0770c8f5bf2b9338f23ca61cde18b46c85d4b389 (diff) | |
Fail over to non-SRV master server connection
This will eliminate the connection failure dialog. Instead, the reconnect timer will run indefinitely.
| -rw-r--r-- | networkmanager.cpp | 19 | ||||
| -rw-r--r-- | networkmanager.h | 13 |
2 files changed, 28 insertions, 4 deletions
diff --git a/networkmanager.cpp b/networkmanager.cpp index fa1bd919..8c0eaa7a 100644 --- a/networkmanager.cpp +++ b/networkmanager.cpp @@ -34,13 +34,18 @@ void NetworkManager::connect_to_master() #ifdef MS_FAILOVER_SUPPORTED perform_srv_lookup(); #else + connect_to_master_nosrv(); +#endif +} + +void NetworkManager::connect_to_master_nosrv() +{ QObject::connect(ms_socket, SIGNAL(error(QAbstractSocket::SocketError)), - this, SLOT(on_ms_connect_error(QAbstractSocket::SocketError))); + this, SLOT(on_ms_socket_error(QAbstractSocket::SocketError))); QObject::connect(ms_socket, SIGNAL(connected()), this, SLOT(on_ms_nosrv_connect_success())); ms_socket->connectToHost(ms_nosrv_hostname, ms_port); -#endif } void NetworkManager::connect_to_server(server_type p_server) @@ -165,7 +170,12 @@ void NetworkManager::on_srv_lookup() } } } - emit ms_connect_finished(connected, false); + + // Failover to non-SRV connection + if (!connected) + connect_to_master_nosrv(); + else + emit ms_connect_finished(connected, false); #endif } @@ -173,6 +183,9 @@ void NetworkManager::on_ms_nosrv_connect_success() { emit ms_connect_finished(true, false); + QObject::disconnect(ms_socket, SIGNAL(connected()), + this, SLOT(on_ms_nosrv_connect_success())); + QObject::connect(ms_socket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(on_ms_socket_error(QAbstractSocket::SocketError))); } diff --git a/networkmanager.h b/networkmanager.h index 00a7a960..32aef733 100644 --- a/networkmanager.h +++ b/networkmanager.h @@ -8,6 +8,12 @@ #define MS_FAILOVER_SUPPORTED #endif +//#define LOCAL_MS + +#ifdef LOCAL_MS +#undef MS_FAILOVER_SUPPORTED +#endif + #include "aopacket.h" #include "aoapplication.h" @@ -31,12 +37,16 @@ public: QTimer *ms_reconnect_timer; const QString ms_srv_hostname = "_aoms._tcp.aceattorneyonline.com"; +#ifdef LOCAL_MS + const QString ms_nosrv_hostname = "localhost"; +#else const QString ms_nosrv_hostname = "master.aceattorneyonline.com"; +#endif const int ms_port = 27016; const int timeout_milliseconds = 2000; - const int ms_reconnect_delay_ms = 5000; + const int ms_reconnect_delay_ms = 7000; bool ms_partial_packet = false; QString ms_temp_packet = ""; @@ -47,6 +57,7 @@ public: unsigned int s_decryptor = 5; void connect_to_master(); + void connect_to_master_nosrv(); void connect_to_server(server_type p_server); public slots: |
