diff --git a/stream/ch/chain/net/srv/vpn/DapStreamChChainNetSrvVpn.cpp b/stream/ch/chain/net/srv/vpn/DapStreamChChainNetSrvVpn.cpp
index bcaf9486392b689abb1355ed7cf0e7c76a5c3537..3362f4b248edb1d846ce3cfe53e1e7554954bca4 100644
--- a/stream/ch/chain/net/srv/vpn/DapStreamChChainNetSrvVpn.cpp
+++ b/stream/ch/chain/net/srv/vpn/DapStreamChChainNetSrvVpn.cpp
@@ -302,16 +302,15 @@ void ChChainNetSrvVpn::tunCreate()
                 streamer()->upstreamSocket());
 #ifdef ANDROID
     jint tunSocket = 0;
-    bool l_permGranted = QAndroidJniObject::callStaticMethod<jboolean>("com/demlabs/dapchain/DapChainVpnService",
-                                                                            "checkPermissions", "()Z");
-    if (!l_permGranted) {
-        emit tunError("Invalid socket");
-        return;
-    }
     for (; tunSocket == 0;) {
         QThread::msleep(1000);
         tunSocket = QtAndroid::androidService().callMethod<jint>("getTunSocket");
     }
+    if (tunSocket == -1) {
+        qCritical() << "Permission denied!";
+        emit androidPermissionDenied();
+        return;
+    }
     qInfo() << "Socket num: " << tunSocket;
     workerStart(tunSocket);
 #else
diff --git a/stream/ch/chain/net/srv/vpn/DapStreamChChainNetSrvVpn.h b/stream/ch/chain/net/srv/vpn/DapStreamChChainNetSrvVpn.h
index 08af58b7c7808d16c1b054b50865679cae69972c..268476cf5237616c2c52423ef3efa6563675be17 100644
--- a/stream/ch/chain/net/srv/vpn/DapStreamChChainNetSrvVpn.h
+++ b/stream/ch/chain/net/srv/vpn/DapStreamChChainNetSrvVpn.h
@@ -129,6 +129,7 @@ namespace Dap {
             void tunCreated();
             void tunDestroyed();
             void tunError(const QString&);
+            void androidPermissionDenied();
             void tunWriteData();
 
             void sendCmdAll(const QString&);