changeset 348:9543ca97aa70

Re-enable content gzip encoding in WFS proxy.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Mon, 06 Aug 2018 17:10:23 +0200
parents 72c76ab112e9
children 56f6c5ab0f3d
files controllers/externalwfs.go
diffstat 1 files changed, 11 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/controllers/externalwfs.go	Mon Aug 06 16:53:45 2018 +0200
+++ b/controllers/externalwfs.go	Mon Aug 06 17:10:23 2018 +0200
@@ -97,29 +97,31 @@
 	xml := isXML(resp.Header)
 
 	gzipped := strings.Contains(resp.Header.Get("Content-Encoding"), "gzip")
-	if xml && gzipped {
-		resp.Header.Del("Content-Encoding")
-	}
 
 	if xml {
 		log.Printf("rewrite from %s to %s\n", prefix, to)
-		var r io.Reader
+
+		pr, pw := io.Pipe()
+
+		var r io.ReadCloser
+		var w io.WriteCloser
 		if gzipped {
 			var err error
 			r, err = gzip.NewReader(resp.Body)
 			if err != nil {
 				return err
 			}
+			w = gzip.NewWriter(pw)
 		} else {
 			r = resp.Body
+			w = pw
 		}
 
-		pr, pw := io.Pipe()
-
-		go func(closer io.ReadCloser) {
+		go func(force io.ReadCloser) {
 			defer func() {
+				w.Close()
 				pw.Close()
-				closer.Close()
+				force.Close()
 			}()
 			/*
 				if _, err := io.Copy(pw, r); err != nil {
@@ -127,7 +129,7 @@
 					return
 				}
 			*/
-			if err := rewrite(pw, r, prefix, to); err != nil {
+			if err := rewrite(w, r, prefix, to); err != nil {
 				log.Printf("rewrite failed: %v\n", err)
 				return
 			}