]> Cypherpunks repositories - gostls13.git/commitdiff
http: add more MPEG-4 MIME types to sniffer, and disable MP4 sniffing.
authorDavid Symonds <dsymonds@golang.org>
Thu, 4 Aug 2011 12:10:17 +0000 (22:10 +1000)
committerDavid Symonds <dsymonds@golang.org>
Thu, 4 Aug 2011 12:10:17 +0000 (22:10 +1000)
R=rsc
CC=golang-dev
https://golang.org/cl/4808056

src/pkg/http/sniff.go
src/pkg/http/sniff_test.go

index 97b234e2813afc635642607e9bf4cc96c71ac005..d6086875073578be2cae51ae7e9923f3d02cafa3 100644 (file)
@@ -98,7 +98,8 @@ var sniffSignatures = []sniffSig{
        &exactSig{[]byte("\x50\x4B\x03\x04"), "application/zip"},
        &exactSig{[]byte("\x1F\x8B\x08"), "application/x-gzip"},
 
-       mp4Sig(0),
+       // TODO(dsymonds): Re-enable this when the spec is sorted w.r.t. MP4.
+       //mp4Sig(0),
 
        textSig(0), // should be last
 }
@@ -179,8 +180,18 @@ func (mp4Sig) match(data []byte, firstNonWS int) string {
                        // minor version number
                        continue
                }
-               if bytes.Equal(data[st:st+3], []byte("mp4")) {
+               seg := string(data[st : st+3])
+               switch seg {
+               case "mp4", "iso", "M4V", "M4P", "M4B":
                        return "video/mp4"
+                       /* The remainder are not in the spec.
+                       case "M4A":
+                               return "audio/mp4"
+                       case "3gp":
+                               return "video/3gpp"
+                       case "jp2":
+                               return "image/jp2" // JPEG 2000
+                       */
                }
        }
        return ""
index baf3a418b53b5b1d85b9637530ff08629b24279a..faf05e405a57bdfac9d2cb003431bbd3721f24c0 100644 (file)
@@ -35,7 +35,9 @@ var sniffTests = []struct {
        {"GIF 87a", []byte(`GIF87a`), "image/gif"},
        {"GIF 89a", []byte(`GIF89a...`), "image/gif"},
 
-       {"MP4", []byte("\x00\x00\x00\x18ftypmp42\x00\x00\x00\x00mp42isom<\x06t\xbfmdat"), "video/mp4"},
+       // TODO(dsymonds): Re-enable this when the spec is sorted w.r.t. MP4.
+       //{"MP4 video", []byte("\x00\x00\x00\x18ftypmp42\x00\x00\x00\x00mp42isom<\x06t\xbfmdat"), "video/mp4"},
+       //{"MP4 audio", []byte("\x00\x00\x00\x20ftypM4A \x00\x00\x00\x00M4A mp42isom\x00\x00\x00\x00"), "audio/mp4"},
 }
 
 func TestDetectContentType(t *testing.T) {