Stabilize VPN farm WebSocket dataplane

This commit is contained in:
2026-05-15 09:33:31 +03:00
parent 5f4ac89767
commit 2cb6005cd3
7 changed files with 68 additions and 14 deletions
+2 -2
View File
@@ -30,8 +30,8 @@ android {
applicationId "su.cin.rapvpn"
minSdk 26
targetSdk 35
versionCode 188
versionName "0.2.188"
versionCode 189
versionName "0.2.189"
buildConfigField "String", "DEFAULT_BACKEND_URL", "\"${normalizeGradleString(defaultBackendUrl)}\""
buildConfigField "String", "DEFAULT_CLUSTER_ID", "\"${normalizeGradleString(defaultClusterId)}\""
buildConfigField "String", "DEFAULT_ORGANIZATION_ID", "\"${normalizeGradleString(defaultOrganizationId)}\""
@@ -1190,7 +1190,7 @@ public class RapVpnService extends VpnService {
private void startPacketWebSocketRelay(String relayUrl, String clusterId, String vpnConnectionId) {
try {
VpnPacketWebSocketRelay old = packetWebSocketRelay;
if (old != null && !relayUrl.equals(old.baseUrl())) {
if (old != null && (!relayUrl.equals(old.baseUrl()) || !old.isOpen())) {
old.close();
packetWebSocketRelay = null;
}
@@ -105,6 +105,7 @@ final class VpnPacketWebSocketRelay {
Request.Builder requestBuilder = new Request.Builder().url(wsUrl);
this.fabricServiceChannel.applyHeaders(requestBuilder);
Request request = requestBuilder.build();
lastError = "connecting";
webSocket = httpClient.newWebSocket(request, new Listener());
}
}
@@ -210,7 +211,11 @@ final class VpnPacketWebSocketRelay {
open = false;
connecting = false;
reconnectAfterMs = System.currentTimeMillis() + 3000;
lastError = t == null ? "websocket failure" : t.getClass().getSimpleName() + ": " + t.getMessage();
String responseStatus = "";
if (response != null) {
responseStatus = " status=" + response.code();
}
lastError = (t == null ? "websocket failure" : t.getClass().getSimpleName() + ": " + t.getMessage()) + responseStatus;
Log.w(TAG, "vpn packet websocket failed " + baseUrl + ": " + lastError);
}
}