veyron.io/veyron/veyron/runtimes/google/ipc: Bugfix.  dhcpListener was never triggered, even for ":0" addresses.

Summary: roaming.ListenSpec doesn't trigger dhcpListener.  The reason is that the original address was used in the checks (as opposed to the address returned by externalEndpoint()).  Also, the loopback bit was flipped.

Minor change to make the code not panic for Android.

Change-Id: I2509e7603d491ca89773cb6d650f93e45a74c818
diff --git a/profiles/internal/gce/gce_linux_android.go b/profiles/internal/gce/gce_linux_android.go
index eafa31c..24288f1 100644
--- a/profiles/internal/gce/gce_linux_android.go
+++ b/profiles/internal/gce/gce_linux_android.go
@@ -9,7 +9,7 @@
 )
 
 func RunningOnGCE() bool {
-	panic("The GCE profile was unexpectedly used with android.")
+	return false
 }
 
 func ExternalIPAddress() (net.IP, error) {
diff --git a/runtimes/google/ipc/server.go b/runtimes/google/ipc/server.go
index dba781d..39e0649 100644
--- a/runtimes/google/ipc/server.go
+++ b/runtimes/google/ipc/server.go
@@ -318,9 +318,6 @@
 		ln.Close()
 		return nil, err
 	}
-	if ipaddr == nil {
-		vlog.VI(2).Infof("the address %q requested for listening contained a fixed IP address which disables roaming, use :0 instead", address)
-	}
 
 	s.Lock()
 	if s.stopped {
@@ -330,9 +327,14 @@
 		return nil, errServerStopped
 	}
 
-	h, _, _ := net.SplitHostPort(address)
+	var ip net.IP
+	if ipaddr != nil {
+		ip = net.ParseIP(ipaddr.String())
+	} else {
+		vlog.VI(2).Infof("the address %q requested for listening contained a fixed IP address which disables roaming, use :0 instead", address)
+	}
 	publisher := listenSpec.StreamPublisher
-	if ip := net.ParseIP(h); ip != nil && ip.IsLoopback() && publisher != nil {
+	if ip != nil && !ip.IsLoopback() && publisher != nil {
 		streamName := listenSpec.StreamName
 		ch := make(chan config.Setting)
 		_, err := publisher.ForkStream(streamName, ch)