use hostname when address null ProxyProperties parcelling
In ProxyProperties parcel, use toString so that hostname
is used when address is null
Change-Id: I4813dbdaf3c4a7bb404edf960d0f990c732ec0b8
diff --git a/core/java/android/net/ProxyProperties.java b/core/java/android/net/ProxyProperties.java
index 140b71f..5fd0d89 100644
--- a/core/java/android/net/ProxyProperties.java
+++ b/core/java/android/net/ProxyProperties.java
@@ -88,13 +88,23 @@
* @hide
*/
public void writeToParcel(Parcel dest, int flags) {
+ String host = null;
if (mProxy != null) {
- InetAddress addr = mProxy.getAddress();
- if (addr != null) {
- dest.writeByte((byte)1);
- dest.writeByteArray(addr.getAddress());
- dest.writeInt(mProxy.getPort());
- }
+ try {
+ InetAddress addr = mProxy.getAddress();
+ if (addr != null) {
+ host = addr.getHostAddress();
+ } else {
+ /* Does not resolve when addr is null */
+ host = mProxy.getHostName();
+ }
+ } catch (Exception e) { }
+ }
+
+ if (host != null) {
+ dest.writeByte((byte)1);
+ dest.writeString(host);
+ dest.writeInt(mProxy.getPort());
} else {
dest.writeByte((byte)0);
}
@@ -111,9 +121,11 @@
ProxyProperties proxyProperties = new ProxyProperties();
if (in.readByte() == 1) {
try {
- InetAddress addr = InetAddress.getByAddress(in.createByteArray());
- proxyProperties.setSocketAddress(new InetSocketAddress(addr, in.readInt()));
- } catch (UnknownHostException e) { }
+ String host = in.readString();
+ int port = in.readInt();
+ proxyProperties.setSocketAddress(InetSocketAddress.createUnresolved(
+ host, port));
+ } catch (IllegalArgumentException e) { }
}
proxyProperties.setExclusionList(in.readString());
return proxyProperties;