diff --git a/app/src/main/cpp/src/websocket_client.cpp b/app/src/main/cpp/src/websocket_client.cpp index 05ed5a1a..4034f8bd 100644 --- a/app/src/main/cpp/src/websocket_client.cpp +++ b/app/src/main/cpp/src/websocket_client.cpp @@ -160,7 +160,7 @@ Java_org_fptn_vpn_services_websocket_NativeWebSocketClientImpl_nativeStop( // Send extern "C" JNIEXPORT jboolean JNICALL Java_org_fptn_vpn_services_websocket_NativeWebSocketClientImpl_nativeSend( - JNIEnv* env, jobject thiz, jlong native_handle, jbyteArray data) { + JNIEnv* env, jobject thiz, jlong native_handle, jbyteArray data, jlong length) { (void)thiz; bool status = false; @@ -170,7 +170,6 @@ Java_org_fptn_vpn_services_websocket_NativeWebSocketClientImpl_nativeSend( if (websocket_client && env && data) { // Java bytes to std::string jbyte* buffer = env->GetByteArrayElements(data, nullptr); - const jsize length = env->GetArrayLength(data); if (buffer != nullptr && length != 0) { std::string packet(reinterpret_cast(buffer), length); status = websocket_client->Send(std::move(packet)); diff --git a/app/src/main/cpp/src/wrappers/wrapper_https_client/wrapper_https_client.h b/app/src/main/cpp/src/wrappers/wrapper_https_client/wrapper_https_client.h index 8010e3de..5b0a7f3c 100644 --- a/app/src/main/cpp/src/wrappers/wrapper_https_client/wrapper_https_client.h +++ b/app/src/main/cpp/src/wrappers/wrapper_https_client/wrapper_https_client.h @@ -26,10 +26,10 @@ class WrapperHttpsClient { std::string md5_fingerprint, fptn::protocol::https::CensorshipStrategy censorship_strategy); - Response Get(const std::string& handle, int timeout = 5); + Response Get(const std::string& handle, int timeout = 10); Response Post( - const std::string& handle, const std::string& request, int timeout = 5); + const std::string& handle, const std::string& request, int timeout = 10); private: const JNIEnv* env_; diff --git a/app/src/main/java/org/fptn/vpn/services/vpn/FptnConnection.java b/app/src/main/java/org/fptn/vpn/services/vpn/FptnConnection.java index e7c86319..fabba69f 100644 --- a/app/src/main/java/org/fptn/vpn/services/vpn/FptnConnection.java +++ b/app/src/main/java/org/fptn/vpn/services/vpn/FptnConnection.java @@ -174,12 +174,6 @@ public void run() { final String dnsServer = webSocketClient.getDnsServerIPv4(); builder.addDnsServer(dnsServer); -// builder.addDnsServer(InetAddress.getByName("1.1.1.1")); -// builder.addDnsServer(InetAddress.getByName("8.8.8.8")); -// builder.addDnsServer(InetAddress.getByName("9.9.9.9")); -// builder.addDnsServer(InetAddress.getByName("216.146.35.35")); -// builder.addDnsServer(InetAddress.getByName("208.67.222.222")); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { builder.excludeRoute(new IpPrefix(InetAddress.getByName(serverEntity.getHost()), 32)); builder.excludeRoute(TUN_INTERFACE_SUBNET.getAsIpPrefix()); @@ -242,8 +236,10 @@ public void run() { try { int length = inputStream.read(byteBuffer); if (length > 0) { + // update speed count uploadRate.update(length); - webSocketClient.send(byteBuffer); + // send byteArray with length of new bytes + webSocketClient.send(byteBuffer, length); } else { // if read buffer empty - sleep // I set blocking mode - it looks like no need anymore diff --git a/app/src/main/java/org/fptn/vpn/services/websocket/NativeWebSocketClientImpl.java b/app/src/main/java/org/fptn/vpn/services/websocket/NativeWebSocketClientImpl.java index 83cf84d2..44fbdb39 100644 --- a/app/src/main/java/org/fptn/vpn/services/websocket/NativeWebSocketClientImpl.java +++ b/app/src/main/java/org/fptn/vpn/services/websocket/NativeWebSocketClientImpl.java @@ -85,9 +85,9 @@ public boolean isStarted() { return nativeIsStarted(nativeHandle); } - public void send(byte[] data) { + public void send(byte[] data, long length) { if (nativeHandle != 0L && nativeIsStarted(nativeHandle)) { - nativeSend(nativeHandle, data); + nativeSend(nativeHandle, data, length); } } @@ -145,7 +145,7 @@ private native long nativeCreate(String server_ip, private native boolean nativeStop(long nativeHandle); - private native boolean nativeSend(long nativeHandle, byte[] data); + private native boolean nativeSend(long nativeHandle, byte[] data, long length); private native boolean nativeIsStarted(long nativeHandle); } diff --git a/app/src/main/java/org/fptn/vpn/services/websocket/WebSocketClientWrapper.java b/app/src/main/java/org/fptn/vpn/services/websocket/WebSocketClientWrapper.java index d597460a..e19affe7 100644 --- a/app/src/main/java/org/fptn/vpn/services/websocket/WebSocketClientWrapper.java +++ b/app/src/main/java/org/fptn/vpn/services/websocket/WebSocketClientWrapper.java @@ -96,9 +96,11 @@ public synchronized void stopWebSocket() { } } - public void send(byte[] bytes) { - if (nativeWebSocketClient != null && nativeWebSocketClient.isStarted()) { - nativeWebSocketClient.send(bytes); + public void send(byte[] bytes, long length) { + if (nativeWebSocketClient != null + && nativeWebSocketClient.isStarted() + && length > 0) { + nativeWebSocketClient.send(bytes, length); } else { throw new RuntimeException("nativeWebSocketClient is null or not started"); } @@ -114,7 +116,7 @@ private String getAccessToken() throws PVNClientException { serverEntity.getUsername(), serverEntity.getPassword()); - NativeResponse response = nativeHttpsClient.Post(LOGIN_URL, request, 5); + NativeResponse response = nativeHttpsClient.Post(LOGIN_URL, request, 15); if (response != null) { if (response.code == 200) { try { @@ -138,7 +140,7 @@ private String getAccessToken() throws PVNClientException { } public String getDnsServerIPv4() throws PVNClientException { - NativeResponse response = nativeHttpsClient.Get(DNS_URL, 5); + NativeResponse response = nativeHttpsClient.Get(DNS_URL, 15); if (response != null) { if (response.code == 200) { try {