Fix - ReconnectingWebSocket race condition mClosed

Summary:
Changelog : [Internal]
Use synchronized blocks to avoid race conditions surrounding mClosed.

Reviewed By: makovkastar

Differential Revision: D31019994

fbshipit-source-id: 48793bd3bea98224d8df344bc4fc8771b517cf72
This commit is contained in:
Amy Nichol
2021-09-22 01:11:34 -07:00
committed by Facebook GitHub Bot
parent e20335a2ac
commit 94bcfb71a2
@@ -66,8 +66,10 @@ public final class ReconnectingWebSocket extends WebSocketListener {
}
public void connect() {
if (mClosed) {
throw new IllegalStateException("Can't connect closed client");
synchronized (this) {
if (mClosed) {
throw new IllegalStateException("Can't connect closed client");
}
}
Request request = new Request.Builder().url(mUrl).build();
@@ -82,8 +84,10 @@ public final class ReconnectingWebSocket extends WebSocketListener {
}
private void reconnect() {
if (mClosed) {
throw new IllegalStateException("Can't reconnect closed client");
synchronized (this) {
if (mClosed) {
throw new IllegalStateException("Can't reconnect closed client");
}
}
if (!mSuppressConnectionErrors) {
@@ -102,8 +106,10 @@ public final class ReconnectingWebSocket extends WebSocketListener {
}
public void closeQuietly() {
mClosed = true;
closeWebSocketQuietly();
synchronized (this) {
mClosed = true;
closeWebSocketQuietly();
}
mMessageCallback = null;
if (mConnectionCallback != null) {