From 43996f34a338e2ab63c965bf8d39e2488b8f62df Mon Sep 17 00:00:00 2001 From: Jesse Wilson Date: Mon, 6 Jan 2020 21:10:22 -0500 Subject: [PATCH] Fix a regression closing WebSockets before connect Closes: https://github.com/square/okhttp/issues/5705 --- .../src/main/java/okhttp3/internal/ws/RealWebSocket.kt | 5 ++++- .../java/okhttp3/internal/ws/WebSocketHttpTest.java | 10 ++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/okhttp/src/main/java/okhttp3/internal/ws/RealWebSocket.kt b/okhttp/src/main/java/okhttp3/internal/ws/RealWebSocket.kt index 7dedfbad9d70..5febac244439 100644 --- a/okhttp/src/main/java/okhttp3/internal/ws/RealWebSocket.kt +++ b/okhttp/src/main/java/okhttp3/internal/ws/RealWebSocket.kt @@ -395,7 +395,10 @@ class RealWebSocket( private fun runWriter() { this.assertThreadHoldsLock() - taskQueue.schedule(writerTask!!) + val writerTask = writerTask + if (writerTask != null) { + taskQueue.schedule(writerTask) + } } /** diff --git a/okhttp/src/test/java/okhttp3/internal/ws/WebSocketHttpTest.java b/okhttp/src/test/java/okhttp3/internal/ws/WebSocketHttpTest.java index 74ac2a443481..7074c090fd6b 100644 --- a/okhttp/src/test/java/okhttp3/internal/ws/WebSocketHttpTest.java +++ b/okhttp/src/test/java/okhttp3/internal/ws/WebSocketHttpTest.java @@ -762,6 +762,16 @@ public final class WebSocketHttpTest { assertThat(webServer.takeRequest().getSequenceNumber()).isEqualTo(1); } + /** https://github.com/square/okhttp/issues/5705 */ + @Test public void closeWithoutSuccessfulConnect() { + Request request = new Request.Builder() + .url(webServer.url("/")) + .build(); + WebSocket webSocket = client.newWebSocket(request, clientListener); + webSocket.send("hello"); + webSocket.close(1000, null); + } + private MockResponse upgradeResponse(RecordedRequest request) { String key = request.getHeader("Sec-WebSocket-Key"); return new MockResponse()