]> Cypherpunks repositories - gostls13.git/commitdiff
Wrap kludge text in HTML comments so the text/html output will remain valid HTML.
authorDavid Symonds <dsymonds@golang.org>
Tue, 25 Aug 2009 00:31:35 +0000 (17:31 -0700)
committerDavid Symonds <dsymonds@golang.org>
Tue, 25 Aug 2009 00:31:35 +0000 (17:31 -0700)
Be more conservative: only mess with text/html and text/plain output.

R=rsc
APPROVED=rsc
DELTA=20  (12 added, 5 deleted, 3 changed)
OCL=33806
CL=33812

src/pkg/http/server.go

index 4ffdc780be3ee10ba6e6231ef3cf7b64c39f8ac4..b7a81905c349ebaf04becfce6415cb7ba3ba30ae 100644 (file)
@@ -209,11 +209,6 @@ func errorKludge(c *Conn, req *Request) {
                return;
        }
 
-       // Is it text?  ("Content-Type" is always in the map)
-       if s := c.header["Content-Type"]; len(s) < 5 || s[0:5] != "text/" {
-               return;
-       }
-
        // Is it a broken browser?
        var msg string;
        switch agent := req.UserAgent; {
@@ -225,9 +220,21 @@ func errorKludge(c *Conn, req *Request) {
                return;
        }
        msg += " would ignore this error page if this text weren't here.\n";
-       io.WriteString(c, "\n");
-       for c.written < min {
-               io.WriteString(c, msg);
+
+       // Is it text?  ("Content-Type" is always in the map)
+       baseType := strings.Split(c.header["Content-Type"], ";", 2)[0];
+       switch baseType {
+       case "text/html":
+               io.WriteString(c, "<!-- ");
+               for c.written < min {
+                       io.WriteString(c, msg);
+               }
+               io.WriteString(c, " -->");
+       case "text/plain":
+               io.WriteString(c, "\n");
+               for c.written < min {
+                       io.WriteString(c, msg);
+               }
        }
 }