diff --git a/lib/go/Make.deps b/lib/go/Make.deps
index c233e7e..56e75da 100644
--- a/lib/go/Make.deps
+++ b/lib/go/Make.deps
@@ -6,8 +6,10 @@
 bufio.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/bufio.a
 bytes.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/bytes.a
 cmath.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/cmath.a
+compress/bzip2.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/compress/bzip2.a
 compress/flate.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/compress/flate.a
 compress/gzip.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/compress/gzip.a
+compress/lzw.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/compress/lzw.a
 compress/zlib.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/compress/zlib.a
 container/heap.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/container/heap.a
 container/list.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/container/list.a
@@ -15,16 +17,22 @@
 container/vector.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/container/vector.a
 crypto.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/crypto.a
 crypto/aes.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/crypto/aes.a
-crypto/block.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/crypto/block.a
 crypto/blowfish.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/crypto/blowfish.a
 crypto/cast5.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/crypto/cast5.a
 crypto/cipher.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/crypto/cipher.a
+crypto/des.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/crypto/des.a
 crypto/dsa.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/crypto/dsa.a
+crypto/ecdsa.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/crypto/ecdsa.a
 crypto/elliptic.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/crypto/elliptic.a
 crypto/hmac.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/crypto/hmac.a
 crypto/md4.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/crypto/md4.a
 crypto/md5.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/crypto/md5.a
 crypto/ocsp.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/crypto/ocsp.a
+crypto/openpgp.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/crypto/openpgp.a
+crypto/openpgp/armor.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/crypto/openpgp/armor.a
+crypto/openpgp/error.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/crypto/openpgp/error.a
+crypto/openpgp/packet.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/crypto/openpgp/packet.a
+crypto/openpgp/s2k.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/crypto/openpgp/s2k.a
 crypto/rand.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/crypto/rand.a
 crypto/rc4.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/crypto/rc4.a
 crypto/ripemd160.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/crypto/ripemd160.a
@@ -36,6 +44,7 @@
 crypto/tls.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/crypto/tls.a
 crypto/twofish.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/crypto/twofish.a
 crypto/x509.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/crypto/x509.a
+crypto/x509/crl.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/crypto/x509/crl.a
 crypto/xtea.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/crypto/xtea.a
 debug/dwarf.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/debug/dwarf.a
 debug/macho.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/debug/macho.a
@@ -67,17 +76,27 @@
 go/scanner.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/go/scanner.a
 go/token.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/go/token.a
 go/typechecker.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/go/typechecker.a
+go/types.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/go/types.a
 gob.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/gob.a
 hash.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/hash.a
 hash/adler32.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/hash/adler32.a
 hash/crc32.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/hash/crc32.a
 hash/crc64.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/hash/crc64.a
+hash/fnv.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/hash/fnv.a
 html.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/html.a
 http.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/http.a
+http/cgi.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/http/cgi.a
+http/fcgi.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/http/fcgi.a
 http/pprof.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/http/pprof.a
+http/httptest.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/http/httptest.a
+http/spdy.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/http/spdy.a
 image.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/image.a
+image/bmp.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/image/bmp.a
+image/gif.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/image/gif.a
 image/jpeg.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/image/jpeg.a
 image/png.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/image/png.a
+image/tiff.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/image/tiff.a
+image/ycbcr.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/image/ycbcr.a
 index/suffixarray.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/index/suffixarray.a
 io.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/io.a
 io/ioutil.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/io/ioutil.a
@@ -92,8 +111,10 @@
 netchan.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/netchan.a
 os.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/os.a
 os/signal.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/os/signal.a
+os/user.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/os/user.a
 patch.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/patch.a
 path.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/path.a
+path/filepath.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/path/filepath.a
 rand.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/rand.a
 reflect.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/reflect.a
 regexp.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/regexp.a
@@ -109,6 +130,7 @@
 strconv.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/strconv.a
 strings.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/strings.a
 sync.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/sync.a
+sync/atomic.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/sync/atomic.a
 syscall.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/syscall.a
 syslog.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/syslog.a
 tabwriter.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/tabwriter.a
@@ -127,8 +149,11 @@
 ../cmd/cgo.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/../cmd/cgo.a
 ../cmd/ebnflint.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/../cmd/ebnflint.a
 ../cmd/godoc.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/../cmd/godoc.a
+../cmd/gofix.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/../cmd/gofix.a
 ../cmd/gofmt.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/../cmd/gofmt.a
 ../cmd/goinstall.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/../cmd/goinstall.a
+../cmd/gotest.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/../cmd/gotest.a
+../cmd/gotype.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/../cmd/gotype.a
 ../cmd/govet.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/../cmd/govet.a
 ../cmd/goyacc.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/../cmd/goyacc.a
 ../cmd/hgpatch.install: ${GOROOT}/pkg/${GOOS}_${GOARCH}/../cmd/hgpatch.a
diff --git a/lib/go/thrift/thttp_client.go b/lib/go/thrift/thttp_client.go
index e09ecdf..08dd9ce 100644
--- a/lib/go/thrift/thttp_client.go
+++ b/lib/go/thrift/thttp_client.go
@@ -23,6 +23,7 @@
   "bytes"
   "http"
   "os"
+  "strconv"
 )
 
 
@@ -69,11 +70,11 @@
 
 
 func NewTHttpClient(url string) (TTransport, os.Error) {
-  response, finalUrl, err := http.Get(url)
+  parsedURL, err := http.ParseURL(url)
   if err != nil {
     return nil, err
   }
-  parsedURL, err := http.ParseURL(finalUrl)
+  response, err := http.Get(url)
   if err != nil {
     return nil, err
   }
@@ -139,7 +140,7 @@
   }
   if response.StatusCode != http.StatusOK {
     // TODO(pomack) log bad response
-    return NewTTransportException(UNKNOWN_TRANSPORT_EXCEPTION, "HTTP Response code: "+string(response.StatusCode))
+    return NewTTransportException(UNKNOWN_TRANSPORT_EXCEPTION, "HTTP Response code: "+ strconv.Itoa(response.StatusCode))
   }
   p.response = response
   return nil
diff --git a/lib/go/thrift/thttp_client_test.go b/lib/go/thrift/thttp_client_test.go
index 1af8cd3..fdd2f50 100644
--- a/lib/go/thrift/thttp_client_test.go
+++ b/lib/go/thrift/thttp_client_test.go
@@ -22,20 +22,13 @@
 import (
   . "thrift"
   "testing"
-  "http"
-  "net"
 )
 
 func TestHttpClient(t *testing.T) {
-  addr, err := FindAvailableTCPServerPort(40000)
-  if err != nil {
-    t.Fatalf("Unable to find available tcp port addr: %s", err)
+  l, addr := HttpClientSetupForTest(t)
+  if l != nil {
+    defer l.Close()
   }
-  l, err := net.Listen(addr.Network(), addr.String())
-  if err != nil {
-    t.Fatalf("Unable to setup tcp listener on %s: %s", addr.String(), err)
-  }
-  go http.Serve(l, &HTTPEchoServer{})
   trans, err := NewTHttpPostClient("http://" + addr.String())
   if err != nil {
     l.Close()
diff --git a/lib/go/thrift/tnonblocking_socket.go b/lib/go/thrift/tnonblocking_socket.go
index a1c0310..9b175b8 100644
--- a/lib/go/thrift/tnonblocking_socket.go
+++ b/lib/go/thrift/tnonblocking_socket.go
@@ -108,7 +108,7 @@
   }
 
   var err os.Error
-  if p.conn, err = net.Dial(p.addr.Network(), "", p.addr.String()); err != nil {
+  if p.conn, err = net.Dial(p.addr.Network(), p.addr.String()); err != nil {
     LOGGER.Print("Could not open socket", err.String())
     return NewTTransportException(NOT_OPEN, err.String())
   }
diff --git a/lib/go/thrift/tprotocol_test.go b/lib/go/thrift/tprotocol_test.go
index 22d6ad6..71ef8e9 100644
--- a/lib/go/thrift/tprotocol_test.go
+++ b/lib/go/thrift/tprotocol_test.go
@@ -25,7 +25,7 @@
   "http"
   "math"
   "net"
-  "io"
+  "io/ioutil"
   "os"
   "bytes"
   "fmt"
@@ -64,18 +64,26 @@
 type HTTPEchoServer struct{}
 
 func (p *HTTPEchoServer) ServeHTTP(w http.ResponseWriter, req *http.Request) {
-  w.WriteHeader(http.StatusOK)
-  io.Copy(w, req.Body)
+  buf, err := ioutil.ReadAll(req.Body)
+  if err != nil {
+    w.WriteHeader(http.StatusBadRequest)
+    w.Write(buf)
+  } else {
+    w.WriteHeader(http.StatusOK)
+    w.Write(buf)
+  }
 }
 
 func HttpClientSetupForTest(t *testing.T) (net.Listener, net.Addr) {
   addr, err := FindAvailableTCPServerPort(40000)
   if err != nil {
     t.Fatalf("Unable to find available tcp port addr: %s", err)
+    return nil, addr
   }
   l, err := net.Listen(addr.Network(), addr.String())
   if err != nil {
     t.Fatalf("Unable to setup tcp listener on %s: %s", addr.String(), err)
+    return l, addr
   }
   go http.Serve(l, &HTTPEchoServer{})
   return l, addr
@@ -85,6 +93,7 @@
 func ReadWriteProtocolTest(t *testing.T, protocolFactory TProtocolFactory) {
   buf := bytes.NewBuffer(make([]byte, 0, 1024))
   l, addr := HttpClientSetupForTest(t)
+  defer l.Close()
   transports := []TTransportFactory{
     NewTMemoryBufferTransportFactory(1024),
     NewTIOStreamTransportFactory(buf, buf, true),
@@ -164,7 +173,6 @@
   //  trans.Close()
   //}
 
-  l.Close()
 }
 
 func ReadWriteBool(t *testing.T, p TProtocol, trans TTransport) {
diff --git a/lib/go/thrift/tsocket.go b/lib/go/thrift/tsocket.go
index 758c132..3fc6253 100644
--- a/lib/go/thrift/tsocket.go
+++ b/lib/go/thrift/tsocket.go
@@ -134,7 +134,7 @@
     return NewTTransportException(NOT_OPEN, "Cannot open bad address.")
   }
   var err os.Error
-  if p.conn, err = net.Dial(p.addr.Network(), "", p.addr.String()); err != nil {
+  if p.conn, err = net.Dial(p.addr.Network(), p.addr.String()); err != nil {
     LOGGER.Print("Could not open socket", err.String())
     return NewTTransportException(NOT_OPEN, err.String())
   }
diff --git a/lib/go/thrift/ttransport.go b/lib/go/thrift/ttransport.go
index 45557f8..f29b0b4 100644
--- a/lib/go/thrift/ttransport.go
+++ b/lib/go/thrift/ttransport.go
@@ -22,6 +22,7 @@
 import (
   "os"
   "log"
+  "strconv"
 )
 
 type Flusher interface {
@@ -162,7 +163,7 @@
     ret, err = p.Read(buf[n:])
     if ret <= 0 {
       if err != nil {
-        err = NewTTransportExceptionDefaultString("Cannot read. Remote side has closed. Tried to read " + string(size) + " bytes, but only got " + string(n) + " bytes.")
+        err = NewTTransportExceptionDefaultString("Cannot read. Remote side has closed. Tried to read " + strconv.Itoa(size) + " bytes, but only got " + strconv.Itoa(n) + " bytes.")
       }
       return ret, err
     }
diff --git a/lib/go/thrift/ttransport_test.go b/lib/go/thrift/ttransport_test.go
index b9630de..4158a74 100644
--- a/lib/go/thrift/ttransport_test.go
+++ b/lib/go/thrift/ttransport_test.go
@@ -124,7 +124,7 @@
     l, err := net.Listen("tcp", s)
     if err == nil {
       l.Close()
-      return net.ResolveTCPAddr(s)
+      return net.ResolveTCPAddr("tcp", s)
     }
   }
   return nil, NewTTransportException(UNKNOWN_TRANSPORT_EXCEPTION, "Could not find available server port")
