diff --git a/.travis.yml b/.travis.yml
index f1839ac174ae552179a3bf3cc20f992de56c1c1f..82d8316dda3c727c534f8dcf425dcbc0d503345d 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -14,24 +14,23 @@ env:
   global:
     - RUBY_VERSION=2.1
     - COVERALLS_PARALLEL=true
+    - CPPFLAGS=-I/tmp/prebuilt/include
     - NUGET="mono nuget.exe"
   matrix:
     - CONFIG=opt TEST=sanity
-    - CONFIG=dbg TEST=c
-    - CONFIG=dbg TEST=c++
-    - CONFIG=opt TEST=c
-    - CONFIG=opt TEST=c++
+    - CONFIG=dbg TEST="c c++"
+    - CONFIG=opt TEST="c c++"
     - CONFIG=opt TEST=node
     - CONFIG=opt TEST=ruby
     - CONFIG=opt TEST=python
     - CONFIG=opt TEST=csharp
-    - CONFIG=gcov TEST=c
-    - CONFIG=gcov TEST=c++
+    - CONFIG=gcov TEST="c c++"
     - USE_GCC=4.4 CONFIG=opt TEST=build
     - USE_GCC=4.5 CONFIG=opt TEST=build
 script:
   - rvm use $RUBY_VERSION
   - gem install bundler
+  - ./tools/run_tests/prepare_travis.sh
   - if [ ! -z "$USE_GCC" ] ; then export CC=gcc-$USE_GCC ; export CXX=g++-$USE_GCC ; fi
   - ./tools/run_tests/run_tests.py -l $TEST -t -j 16 -c $CONFIG -s 4.0
 after_success:
diff --git a/src/core/iomgr/tcp_windows.c b/src/core/iomgr/tcp_windows.c
index 71534eaa3df0e34ac03e7b2d8536d3c6b0e326eb..940cd5bcde17c1ea2c0f0e3a069111173eac483e 100644
--- a/src/core/iomgr/tcp_windows.c
+++ b/src/core/iomgr/tcp_windows.c
@@ -289,7 +289,7 @@ static grpc_endpoint_write_status win_write(grpc_endpoint *ep,
     return ret;
   }
 
-  memset(&socket->write_info, 0, sizeof(OVERLAPPED));
+  memset(&socket->write_info.overlapped, 0, sizeof(OVERLAPPED));
   status = WSASend(socket->socket, buffers, tcp->write_slices.count,
                    &bytes_sent, 0, &socket->write_info.overlapped, NULL);
   if (allocated) gpr_free(allocated);
diff --git a/src/node/src/client.js b/src/node/src/client.js
index fad369c2f8002b37ef203d30921f3136fed77092..b2b79e8b706ec0fd68aed8d32cee9adfc6cc483e 100644
--- a/src/node/src/client.js
+++ b/src/node/src/client.js
@@ -488,6 +488,7 @@ function makeClientConstructor(methods) {
         callback(null, metadata);
       };
     }
+    this.server_address = address;
     this.channel = new grpc.Channel(address, options);
   }
 
diff --git a/tools/run_tests/prepare_travis.sh b/tools/run_tests/prepare_travis.sh
new file mode 100755
index 0000000000000000000000000000000000000000..a8ddc578d5fdde4cc1e5a2066d968a0d41378bc5
--- /dev/null
+++ b/tools/run_tests/prepare_travis.sh
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+cd `dirname $0`/../..
+grpc_dir=`pwd`
+
+distrib=`md5sum /etc/issue | cut -f1 -d\ `
+echo "Configuring for disbribution $distrib"
+git submodule | while read sha path extra ; do
+  cd /tmp
+  name=`basename $path`
+  file=$name-$sha-$CONFIG-prebuilt-$distrib.tar.gz
+  echo -n "$file ..."
+  url=http://storage.googleapis.com/grpc-prebuilt-packages/$file
+  wget -q $url && (
+    echo " Found."
+    tar xfz $file
+  ) || true
+done
+
+mkdir -p bins/$CONFIG/protobuf
+mkdir -p libs/$CONFIG/protobuf
+mkdir -p libs/$CONFIG/openssl
+
+function cpt {
+  cp /tmp/prebuilt/$1 $2/$CONFIG/$3
+  touch $2/$CONFIG/$3/`basename $1`
+}
+
+if [ -e /tmp/prebuilt/bin/protoc ] ; then
+  touch third_party/protobuf/configure
+  cpt bin/protoc bins protobuf
+  cpt lib/libprotoc.a libs protobuf
+  cpt lib/libprotobuf.a libs protobuf
+fi
+
+if [ -e /tmp/prebuilt/lib/libssl.a ] ; then
+  cpt lib/libcrypto.a libs openssl
+  cpt lib/libssl.a libs openssl
+fi