Skip to content
Snippets Groups Projects
Verified Commit f1b0585c authored by Janne Mareike Koschinski's avatar Janne Mareike Koschinski
Browse files

Fixes an issue with autoreconnect

parent 556d1e30
No related branches found
No related tags found
No related merge requests found
Pipeline #469 canceled
...@@ -291,7 +291,15 @@ class QuasselService : DaggerLifecycleService(), ...@@ -291,7 +291,15 @@ class QuasselService : DaggerLifecycleService(),
service?.apply { service?.apply {
disconnect() disconnect()
sessionManager.connect( sessionManager.connect(
clientData, trustManager, hostnameVerifier, address, user to pass, requireSsl, reconnect SessionManager.ConnectionInfo(
clientData = clientData,
trustManager = trustManager,
hostnameVerifier = hostnameVerifier,
address = address,
userData = Pair(user, pass),
requireSsl = requireSsl,
shouldReconnect = reconnect
)
) )
} }
} }
......
...@@ -56,12 +56,17 @@ class SessionManager( ...@@ -56,12 +56,17 @@ class SessionManager(
fun close() = session.or(lastSession).close() fun close() = session.or(lastSession).close()
private var lastClientData: ClientData? = null data class ConnectionInfo(
private var lastTrustManager: X509TrustManager? = null val clientData: ClientData,
private var lastHostnameVerifier: HostnameVerifier? = null val trustManager: X509TrustManager,
private var lastAddress: SocketAddress? = null val hostnameVerifier: HostnameVerifier,
private var lastUserData: Pair<String, String>? = null val address: SocketAddress,
private var lastShouldReconnect = false val userData: Pair<String, String>,
val requireSsl: Boolean,
val shouldReconnect: Boolean
)
private var lastConnectionInfo: ConnectionInfo? = null
private var inProgressSession = BehaviorSubject.createDefault(ISession.NULL) private var inProgressSession = BehaviorSubject.createDefault(ISession.NULL)
private var lastSession: ISession = offlineSession private var lastSession: ISession = offlineSession
...@@ -111,31 +116,20 @@ class SessionManager( ...@@ -111,31 +116,20 @@ class SessionManager(
} }
fun connect( fun connect(
clientData: ClientData, connectionInfo: ConnectionInfo
trustManager: X509TrustManager,
hostnameVerifier: HostnameVerifier,
address: SocketAddress,
userData: Pair<String, String>,
requireSsl: Boolean,
shouldReconnect: Boolean = false
) { ) {
log(DEBUG, "SessionManager", "Connecting") log(DEBUG, "SessionManager", "Connecting")
inProgressSession.value.close() inProgressSession.value.close()
lastClientData = clientData lastConnectionInfo = connectionInfo
lastTrustManager = trustManager
lastHostnameVerifier = hostnameVerifier
lastAddress = address
lastUserData = userData
lastShouldReconnect = shouldReconnect
hasErrored = false hasErrored = false
inProgressSession.onNext( inProgressSession.onNext(
Session( Session(
address, connectionInfo.address,
userData, connectionInfo.userData,
requireSsl, connectionInfo.requireSsl,
trustManager, connectionInfo.trustManager,
hostnameVerifier, connectionInfo.hostnameVerifier,
clientData, connectionInfo.clientData,
handlerService, handlerService,
heartBeatFactory, heartBeatFactory,
disconnectFromCore, disconnectFromCore,
...@@ -173,15 +167,11 @@ class SessionManager( ...@@ -173,15 +167,11 @@ class SessionManager(
} }
fun reconnect(forceReconnect: Boolean = false) { fun reconnect(forceReconnect: Boolean = false) {
if (lastShouldReconnect || forceReconnect) { if (lastConnectionInfo?.shouldReconnect == true || forceReconnect) {
val clientData = lastClientData val connectionInfo = lastConnectionInfo
val trustManager = lastTrustManager
val hostnameVerifier = lastHostnameVerifier if (connectionInfo != null) {
val address = lastAddress connect(connectionInfo)
val userData = lastUserData
if (clientData != null && trustManager != null && hostnameVerifier != null && address != null && userData != null) {
connect(clientData, trustManager, hostnameVerifier, address, userData, forceReconnect)
} else { } else {
log(INFO, "SessionManager", "Reconnect failed: not enough data available") log(INFO, "SessionManager", "Reconnect failed: not enough data available")
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment