@@ -26,9 +26,10 @@ class LavalinkSocket(private val node: LavalinkNode) : WebSocketListener(), Clos
2626
2727 var mayReconnect = true
2828 var lastReconnectAttempt = 0L
29- private var reconnectsAttempted = 0
29+ @Volatile
30+ private var connectionsAttempted = 0
3031 val reconnectInterval: Int
31- get() = reconnectsAttempted * 2000 - 2000
32+ get() = connectionsAttempted * 2000 - 2000
3233 var open: Boolean = false
3334 private set
3435
@@ -39,8 +40,7 @@ class LavalinkSocket(private val node: LavalinkNode) : WebSocketListener(), Clos
3940 override fun onOpen (webSocket : WebSocket , response : Response ) {
4041 logger.info(" ${node.name} has been connected!" )
4142 open = true
42- reconnectsAttempted = 0
43- node.lavalink.onNodeConnected(node)
43+ connectionsAttempted = 0
4444 }
4545
4646 override fun onMessage (webSocket : WebSocket , text : String ) {
@@ -80,10 +80,12 @@ class LavalinkSocket(private val node: LavalinkNode) : WebSocketListener(), Clos
8080 node.cachedSession = null
8181 }
8282 if (node.cachedSession == null ) {
83- node.rest.getSession().subscribe { node.cachedSession = null }
83+ node.rest.getSession().subscribe { node.cachedSession = it }
8484 }
8585
86- node.synchronizeAfterResume()
86+ if (resumed) {
87+ node.synchronizeAfterResume()
88+ }
8789
8890 // Move players from older, unavailable nodes to ourselves.
8991 node.transferOrphansToSelf()
@@ -154,15 +156,15 @@ class LavalinkSocket(private val node: LavalinkNode) : WebSocketListener(), Clos
154156 }
155157
156158 override fun onFailure (webSocket : WebSocket , t : Throwable , response : Response ? ) {
157- handleFailureTrhowable (t)
159+ handleFailureThrowable (t)
158160
159161 node.available = false
160162 open = false
161163
162164 node.lavalink.onNodeDisconnected(node)
163165 }
164166
165- private fun handleFailureTrhowable (t : Throwable ) {
167+ private fun handleFailureThrowable (t : Throwable ) {
166168 when (t) {
167169 is EOFException -> {
168170 logger.debug(" Got disconnected from ${node.name} , trying to reconnect" , t)
@@ -190,6 +192,10 @@ class LavalinkSocket(private val node: LavalinkNode) : WebSocketListener(), Clos
190192 logger.error(" Unknown error on ${node.name} " , t)
191193 }
192194 }
195+
196+ if (connectionsAttempted == 1 && lastReconnectAttempt > 0 ) {
197+ node.lavalink.onNodeFirstReconnectFailed(node)
198+ }
193199 }
194200
195201 override fun onClosing (webSocket : WebSocket , code : Int , reason : String ) {
@@ -213,12 +219,10 @@ class LavalinkSocket(private val node: LavalinkNode) : WebSocketListener(), Clos
213219 reason
214220 )
215221 }
216-
217222 }
218223
219224 fun attemptReconnect () {
220225 lastReconnectAttempt = System .currentTimeMillis()
221- reconnectsAttempted++
222226 connect()
223227 }
224228
@@ -234,13 +238,14 @@ class LavalinkSocket(private val node: LavalinkNode) : WebSocketListener(), Clos
234238 .addHeader(" Client-Name" , " Lavalink-Client/${CLIENT_VERSION } " )
235239 .addHeader(" User-Id" , node.lavalink.userId.toString())
236240 .apply {
237- if (node.sessionId != null ) {
241+ if (node.sessionId != null && connectionsAttempted == 0 ) {
238242 addHeader(" Session-Id" , node.sessionId!! )
239243 }
240244 }
241245 .build()
242246
243247 mayReconnect = true
248+ connectionsAttempted++
244249 socket = node.httpClient.newWebSocket(request, this )
245250 }
246251
0 commit comments