go: Fix cross test server

Client: go

This was a bug introduced by 91565d490e98306ac6797dd6ed4f72c0e8222e78
that broke go's cross-test server, but because other CI issues we didn't
run cross-test so we didn't notice the issue.
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