diff --git a/test/go/src/bin/testserver/main.go b/test/go/src/bin/testserver/main.go
index 652fafa..0cfb62c 100644
--- a/test/go/src/bin/testserver/main.go
+++ b/test/go/src/bin/testserver/main.go
@@ -59,7 +59,10 @@
 				return
 			}
 		} else {
-			http.ListenAndServe(fmt.Sprintf(":%d", *port), nil)
+			if err := http.ListenAndServe(fmt.Sprintf(":%d", *port), nil); err != nil {
+				fmt.Println(err)
+				return
+			}
 		}
 	} else {
 		server := thrift.NewTSimpleServer4(processor, serverTransport, transportFactory, protocolFactory)
diff --git a/test/go/src/common/server.go b/test/go/src/common/server.go
index 0af2702..85429f0 100644
--- a/test/go/src/common/server.go
+++ b/test/go/src/common/server.go
@@ -49,7 +49,7 @@
 ) (thrift.TProcessor, thrift.TServerTransport, thrift.TTransportFactory, thrift.TProtocolFactory, string /* addr */, error) {
 
 	var err error
-	hostPort := fmt.Sprintf("%s:0", host)
+	hostPort := fmt.Sprintf("%s:%d", host, port)
 	var cfg *thrift.TConfiguration = nil
 
 	var protocolFactory thrift.TProtocolFactory
@@ -73,6 +73,15 @@
 
 	var serverTransport thrift.TServerTransport
 	var addr string
+	if transport == "http" {
+		// In cross-test servers, we would call http.ListenAndServe
+		// again on the host:port, so don't use the listen to fill the
+		// addr and just generate it here instead.
+		addr = hostPort
+		if domain_socket != "" {
+			addr = domain_socket
+		}
+	}
 	if ssl {
 		cfg := new(tls.Config)
 		if cert, err := tls.LoadX509KeyPair(certPath+"/server.crt", certPath+"/server.key"); err != nil {
@@ -80,14 +89,16 @@
 		} else {
 			cfg.Certificates = append(cfg.Certificates, cert)
 		}
-		transport, transportErr := thrift.NewTSSLServerSocket(hostPort, cfg)
+		serverSocket, transportErr := thrift.NewTSSLServerSocket(hostPort, cfg)
 		if transportErr == nil {
-			listenErr := transport.Listen()
-			if listenErr == nil {
-				serverTransport = transport
-				addr = transport.Addr().String()
-			} else {
-				err = listenErr
+			if transport != "http" {
+				listenErr := serverSocket.Listen()
+				if listenErr == nil {
+					serverTransport = serverSocket
+					addr = serverSocket.Addr().String()
+				} else {
+					err = listenErr
+				}
 			}
 		} else {
 			err = transportErr
@@ -97,14 +108,16 @@
 			serverTransport, err = thrift.NewTServerSocket(domain_socket)
 			addr = domain_socket
 		} else {
-			transport, transportErr := thrift.NewTServerSocket(hostPort)
+			serverSocket, transportErr := thrift.NewTServerSocket(hostPort)
 			if transportErr == nil {
-				listenErr := transport.Listen()
-				if listenErr == nil {
-					serverTransport = transport
-					addr = transport.Addr().String()
-				} else {
-					err = listenErr
+				if transport != "http" {
+					listenErr := serverSocket.Listen()
+					if listenErr == nil {
+						serverTransport = serverSocket
+						addr = serverSocket.Addr().String()
+					} else {
+						err = listenErr
+					}
 				}
 			} else {
 				err = transportErr
