Ver Fonte

Android library: move bindToDevice into HostService interface

Refactor the bindToDevice method to be part of the HostService interface, making it a required override for implementers. This removes reliance on the VpnService instance and enforces proper exception handling by default.
Eugene Fryntov há 1 ano atrás
pai
commit
2b264b8438
1 ficheiros alterados com 4 adições e 5 exclusões
  1. 4 5
      MobileLibrary/Android/PsiphonTunnel/PsiphonTunnel.java

+ 4 - 5
MobileLibrary/Android/PsiphonTunnel/PsiphonTunnel.java

@@ -86,8 +86,9 @@ public class PsiphonTunnel {
     public interface HostService extends HostLogger, HostLibraryLoader {
         Context getContext();
         String getPsiphonConfig();
-        // Optional getter for the VpnService instance to be used by bindToDevice
-        default VpnService getVpnService() {return null;}
+        default void bindToDevice(long fileDescriptor) throws Exception {
+            throw new IllegalStateException("bindToDevice not implemented");
+        }
 
         // Tunnel core notice handler callbacks
         default void onAvailableEgressRegions(List<String> regions) {}
@@ -534,9 +535,7 @@ public class PsiphonTunnel {
     }
 
     private String bindToDevice(long fileDescriptor) throws Exception {
-        if (!mHostService.getVpnService().protect((int)fileDescriptor)) {
-            throw new Exception("protect socket failed");
-        }
+        mHostService.bindToDevice(fileDescriptor);
         return "";
     }