Przeglądaj źródła

Test fix issue for websocket and gzip

TC pushbot 5 4 lat temu
rodzic
commit
e19a852bd2
2 zmienionych plików z 16 dodań i 2 usunięć
  1. 8 2
      mediaServer.go
  2. 8 0
      mod/network/gzipmiddleware/gzipmiddleware.go

+ 8 - 2
mediaServer.go

@@ -30,8 +30,14 @@ PLEASE ALWAYS USE URLENCODE IN THE LINK PASSED INTO THE /media ENDPOINT
 //
 
 func mediaServer_init() {
-	http.HandleFunc("/media/", gzipmiddleware.CompressFunc(serverMedia))
-	http.HandleFunc("/media/getMime/", gzipmiddleware.CompressFunc(serveMediaMime))
+	if *enable_gzip {
+		http.HandleFunc("/media/", gzipmiddleware.CompressFunc(serverMedia))
+		http.HandleFunc("/media/getMime/", gzipmiddleware.CompressFunc(serveMediaMime))
+	} else {
+		http.HandleFunc("/media/", serverMedia)
+		http.HandleFunc("/media/getMime/", serveMediaMime)
+	}
+
 }
 
 //This function validate the incoming media request and return the real path for the targed file

+ 8 - 0
mod/network/gzipmiddleware/gzipmiddleware.go

@@ -43,6 +43,14 @@ func (w *gzipResponseWriter) Write(b []byte) (int, error) {
 func Compress(h http.Handler) http.Handler {
 	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
 		if !strings.Contains(r.Header.Get("Accept-Encoding"), "gzip") {
+			//If the client do not support gzip
+			h.ServeHTTP(w, r)
+			return
+		}
+
+		//Check if this is websocket request. Skip this if true
+		if r.Header["Upgrade"] != nil && r.Header["Upgrade"][0] == "websocket" {
+			//WebSocket request. Do not gzip it
 			h.ServeHTTP(w, r)
 			return
 		}