diff --git a/test/end2end_test.go b/test/end2end_test.go
index a7a6ed7..946df32 100644
--- a/test/end2end_test.go
+++ b/test/end2end_test.go
@@ -74,6 +74,8 @@
 	testAppUA = "myApp1/1.0 myApp2/0.9"
 )
 
+var raceMode bool // set by race_test.go in race mode
+
 type testServer struct {
 	security string // indicate the authentication protocol used by this server.
 }
@@ -770,6 +772,15 @@
 
 	numRPC := 1000
 	rpcSpacing := 2 * time.Millisecond
+	if raceMode {
+		// The race detector has a limit on how many goroutines it can track.
+		// This test is near the upper limit, and goes over the limit
+		// depending on the environment (the http.Handler environment uses
+		// more goroutines)
+		t.Logf("Shortening test in race mode.")
+		numRPC /= 2
+		rpcSpacing *= 2
+	}
 
 	wg.Add(1)
 	go func() {
diff --git a/test/race_test.go b/test/race_test.go
new file mode 100644
index 0000000..b3a7056
--- /dev/null
+++ b/test/race_test.go
@@ -0,0 +1,39 @@
+// +build race
+
+/*
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+package grpc_test
+
+func init() {
+	raceMode = true
+}
diff --git a/transport/http_util.go b/transport/http_util.go
index f1233fa..2517311 100644
--- a/transport/http_util.go
+++ b/transport/http_util.go
@@ -120,7 +120,7 @@
 // reserved by gRPC protocol. Any other headers are classified as the
 // user-specified metadata.
 func isReservedHeader(hdr string) bool {
-	if hdr[0] == ':' {
+	if hdr != "" && hdr[0] == ':' {
 		return true
 	}
 	switch hdr {
diff --git a/transport/transport_test.go b/transport/transport_test.go
index 4b50f73..07128d5 100644
--- a/transport/transport_test.go
+++ b/transport/transport_test.go
@@ -660,3 +660,26 @@
 		t.Fatalf("GetStreamFromContext(%v) = %v, %t, want: %v, true", ctx, *s, ok, expectedStream)
 	}
 }
+
+func TestIsReservedHeader(t *testing.T) {
+	tests := []struct {
+		h    string
+		want bool
+	}{
+		{"", false}, // but should be rejected earlier
+		{"foo", false},
+		{"content-type", true},
+		{"grpc-message-type", true},
+		{"grpc-encoding", true},
+		{"grpc-message", true},
+		{"grpc-status", true},
+		{"grpc-timeout", true},
+		{"te", true},
+	}
+	for _, tt := range tests {
+		got := isReservedHeader(tt.h)
+		if got != tt.want {
+			t.Errorf("isReservedHeader(%q) = %v; want %v", tt.h, got, tt.want)
+		}
+	}
+}
