// and upper case after each dash.
                // (Host, User-Agent, If-Modified-Since).
                // MIME headers are ASCII only, so no Unicode issues.
-               if a[i] == ' ' {
-                       a[i] = '-'
-                       upper = true
-                       continue
-               }
                c := a[i]
-               if upper && 'a' <= c && c <= 'z' {
+               if c == ' ' {
+                       c = '-'
+               } else if upper && 'a' <= c && c <= 'z' {
                        c -= toLower
                } else if !upper && 'A' <= c && c <= 'Z' {
                        c += toLower
 
        {"user-agent", "User-Agent"},
        {"USER-AGENT", "User-Agent"},
        {"üser-agenT", "üser-Agent"}, // non-ASCII unchanged
+
+       // This caused a panic due to mishandling of a space:
+       {"C Ontent-Transfer-Encoding", "C-Ontent-Transfer-Encoding"},
+       {"foo bar", "Foo-Bar"},
 }
 
 func TestCanonicalMIMEHeaderKey(t *testing.T) {