From 18917d2b7dd5c32f6f8037333510282514f29011 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20Spie=C3=9F?= Date: Fri, 5 Aug 2022 01:55:04 +0200 Subject: [PATCH 1/3] Implement gateway resume url handling --- .../net/dv8tion/jda/internal/requests/WebSocketClient.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/dv8tion/jda/internal/requests/WebSocketClient.java b/src/main/java/net/dv8tion/jda/internal/requests/WebSocketClient.java index 8f2290d08f..6afb565b41 100644 --- a/src/main/java/net/dv8tion/jda/internal/requests/WebSocketClient.java +++ b/src/main/java/net/dv8tion/jda/internal/requests/WebSocketClient.java @@ -90,6 +90,7 @@ public class WebSocketClient extends WebSocketAdapter implements WebSocketListen protected volatile String sessionId = null; protected final Object readLock = new Object(); protected Decompressor decompressor; + protected String resumeUrl = null; protected final ReentrantLock queueLock = new ReentrantLock(); protected final ScheduledExecutorService executor; @@ -345,7 +346,7 @@ protected synchronized void connect() throw new RejectedExecutionException("JDA is shutdown!"); initiating = true; - String url = api.getGatewayUrl() + String url = resumeUrl != null ? resumeUrl : api.getGatewayUrl() + "?encoding=" + encoding.name().toLowerCase() + "&v=" + JDAInfo.DISCORD_GATEWAY_VERSION; if (compression != Compression.NONE) @@ -738,6 +739,7 @@ protected void sendResume() protected void invalidate() { + resumeUrl = null; sessionId = null; sentAuthInfo = false; @@ -926,6 +928,7 @@ protected void onDispatch(DataObject raw) // otherwise the audio connection requests that are currently pending might be removed in the process handlers.get("READY").handle(responseTotal, raw); sessionId = content.getString("session_id"); + resumeUrl = content.getString("resume_gateway_url", null); break; case "RESUMED": reconnectTimeoutS = 2; From 3a4105b00820e89cb6dbbf47f0a9466a303c8c7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20Spie=C3=9F?= Date: Fri, 5 Aug 2022 02:36:11 +0200 Subject: [PATCH 2/3] Clear resume URL on connect error --- .../java/net/dv8tion/jda/internal/requests/WebSocketClient.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/net/dv8tion/jda/internal/requests/WebSocketClient.java b/src/main/java/net/dv8tion/jda/internal/requests/WebSocketClient.java index 6afb565b41..3aff294e5f 100644 --- a/src/main/java/net/dv8tion/jda/internal/requests/WebSocketClient.java +++ b/src/main/java/net/dv8tion/jda/internal/requests/WebSocketClient.java @@ -379,6 +379,7 @@ protected synchronized void connect() } catch (IOException | WebSocketException e) { + resumeUrl = null; api.resetGatewayUrl(); //Completely fail here. We couldn't make the connection. throw new IllegalStateException(e); From 7a20b7f82d0a58bac16a6ce5925d0b3ef018805c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20Spie=C3=9F?= Date: Tue, 9 Aug 2022 23:56:20 +0200 Subject: [PATCH 3/3] Add parenthesis around the ternary --- .../java/net/dv8tion/jda/internal/requests/WebSocketClient.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/dv8tion/jda/internal/requests/WebSocketClient.java b/src/main/java/net/dv8tion/jda/internal/requests/WebSocketClient.java index 3aff294e5f..72b36021bd 100644 --- a/src/main/java/net/dv8tion/jda/internal/requests/WebSocketClient.java +++ b/src/main/java/net/dv8tion/jda/internal/requests/WebSocketClient.java @@ -346,7 +346,7 @@ protected synchronized void connect() throw new RejectedExecutionException("JDA is shutdown!"); initiating = true; - String url = resumeUrl != null ? resumeUrl : api.getGatewayUrl() + String url = (resumeUrl != null ? resumeUrl : api.getGatewayUrl()) + "?encoding=" + encoding.name().toLowerCase() + "&v=" + JDAInfo.DISCORD_GATEWAY_VERSION; if (compression != Compression.NONE)