Implement VpnService.setBlocking().
Bug: 12879610
Change-Id: I3a0ad9eae5f7dd9c01f75b9da71810bad38f9fec
diff --git a/services/core/java/com/android/server/connectivity/Vpn.java b/services/core/java/com/android/server/connectivity/Vpn.java
index 7b68d55..4b5a2cb 100644
--- a/services/core/java/com/android/server/connectivity/Vpn.java
+++ b/services/core/java/com/android/server/connectivity/Vpn.java
@@ -77,6 +77,7 @@
import com.android.server.net.BaseNetworkObserver;
import java.io.File;
+import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
@@ -470,6 +471,13 @@
if (oldInterface != null && !oldInterface.equals(interfaze)) {
jniReset(oldInterface);
}
+
+ try {
+ IoUtils.setBlocking(tun.getFileDescriptor(), config.blocking);
+ } catch (IOException e) {
+ throw new IllegalStateException(
+ "Cannot set tunnel's fd as blocking=" + config.blocking, e);
+ }
} catch (RuntimeException e) {
IoUtils.closeQuietly(tun);
agentDisconnect();