summaryrefslogtreecommitdiffstats
path: root/core/java/android
diff options
context:
space:
mode:
authorPaul Jensen <pauljensen@google.com>2014-06-20 13:58:14 -0400
committerPaul Jensen <pauljensen@google.com>2014-06-26 16:33:58 +0000
commit32a58f00d388584f5f47c0d5d4c74ce7c8457d78 (patch)
tree8513eee3b5d8567039c142a90c86529f0db636f9 /core/java/android
parent9a22972080f8331ee779db3b15e76575a9b08ea9 (diff)
downloadframeworks_base-32a58f00d388584f5f47c0d5d4c74ce7c8457d78.zip
frameworks_base-32a58f00d388584f5f47c0d5d4c74ce7c8457d78.tar.gz
frameworks_base-32a58f00d388584f5f47c0d5d4c74ce7c8457d78.tar.bz2
Use return values from JNI functions binding sockets and processes to networks.
bug:15757549 Change-Id: If23b14febc923b9a0348f0cf9029fd4bf6e8d725
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/net/ConnectivityManager.java12
-rw-r--r--core/java/android/net/Network.java5
-rw-r--r--core/java/android/net/NetworkUtils.java10
3 files changed, 13 insertions, 14 deletions
diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java
index b68ce36..396efff 100644
--- a/core/java/android/net/ConnectivityManager.java
+++ b/core/java/android/net/ConnectivityManager.java
@@ -2372,12 +2372,10 @@ public class ConnectivityManager {
*/
public static boolean setProcessDefaultNetwork(Network network) {
if (network == null) {
- NetworkUtils.unbindProcessToNetwork();
+ return NetworkUtils.unbindProcessToNetwork();
} else {
- NetworkUtils.bindProcessToNetwork(network.netId);
+ return NetworkUtils.bindProcessToNetwork(network.netId);
}
- // TODO fix return value
- return true;
}
/**
@@ -2404,11 +2402,9 @@ public class ConnectivityManager {
*/
public static boolean setProcessDefaultNetworkForHostResolution(Network network) {
if (network == null) {
- NetworkUtils.unbindProcessToNetworkForHostResolution();
+ return NetworkUtils.unbindProcessToNetworkForHostResolution();
} else {
- NetworkUtils.bindProcessToNetworkForHostResolution(network.netId);
+ return NetworkUtils.bindProcessToNetworkForHostResolution(network.netId);
}
- // TODO hook up the return value.
- return true;
}
}
diff --git a/core/java/android/net/Network.java b/core/java/android/net/Network.java
index 0a422c6..9a22d78 100644
--- a/core/java/android/net/Network.java
+++ b/core/java/android/net/Network.java
@@ -24,6 +24,7 @@ import java.io.IOException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
+import java.net.SocketException;
import java.net.UnknownHostException;
import javax.net.SocketFactory;
@@ -148,7 +149,9 @@ public class Network implements Parcelable {
// Query a property of the underlying socket to ensure the underlying
// socket exists so a file descriptor is available to bind to a network.
socket.getReuseAddress();
- NetworkUtils.bindSocketToNetwork(socket.getFileDescriptor$().getInt$(), mNetId);
+ if (!NetworkUtils.bindSocketToNetwork(socket.getFileDescriptor$().getInt$(), mNetId)) {
+ throw new SocketException("Failed to bind socket to network.");
+ }
return socket;
}
}
diff --git a/core/java/android/net/NetworkUtils.java b/core/java/android/net/NetworkUtils.java
index 15c0a71..c4b17b6 100644
--- a/core/java/android/net/NetworkUtils.java
+++ b/core/java/android/net/NetworkUtils.java
@@ -118,13 +118,13 @@ public class NetworkUtils {
* is by design so an application doesn't accidentally use sockets it thinks are still bound to
* a particular {@code Network}.
*/
- public native static void bindProcessToNetwork(int netId);
+ public native static boolean bindProcessToNetwork(int netId);
/**
* Clear any process specific {@code Network} binding. This reverts a call to
* {@link #bindProcessToNetwork}.
*/
- public native static void unbindProcessToNetwork();
+ public native static boolean unbindProcessToNetwork();
/**
* Return the netId last passed to {@link #bindProcessToNetwork}, or NETID_UNSET if
@@ -138,7 +138,7 @@ public class NetworkUtils {
*
* @deprecated This is strictly for legacy usage to support startUsingNetworkFeature().
*/
- public native static void bindProcessToNetworkForHostResolution(int netId);
+ public native static boolean bindProcessToNetworkForHostResolution(int netId);
/**
* Clears any process specific {@link Network} binding for host resolution. This does
@@ -146,13 +146,13 @@ public class NetworkUtils {
*
* @deprecated This is strictly for legacy usage to support startUsingNetworkFeature().
*/
- public native static void unbindProcessToNetworkForHostResolution();
+ public native static boolean unbindProcessToNetworkForHostResolution();
/**
* Explicitly binds {@code socketfd} to the network designated by {@code netId}. This
* overrides any binding via {@link #bindProcessToNetwork}.
*/
- public native static void bindSocketToNetwork(int socketfd, int netId);
+ public native static boolean bindSocketToNetwork(int socketfd, int netId);
/**
* Convert a IPv4 address from an integer to an InetAddress.