[tor-commits] [meek/master] Copy multiple instances of header fields.

dcf at torproject.org dcf at torproject.org
Sat Jul 15 20:39:50 UTC 2017


commit 6057a9e9d6b64b81741cf0404957449c8af8529b
Author: David Fifield <david at bamsoftware.com>
Date:   Sat Jul 15 12:54:06 2017 -0700

    Copy multiple instances of header fields.
    
    Just in case. Previously we only copied the first instance (as provided
    by Header.Get).
---
 appengine/reflect.go | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/appengine/reflect.go b/appengine/reflect.go
index bc6992c..ccf11f3 100644
--- a/appengine/reflect.go
+++ b/appengine/reflect.go
@@ -67,9 +67,11 @@ func copyRequest(r *http.Request) (*http.Request, error) {
 		return nil, err
 	}
 	for _, key := range reflectedHeaderFields {
-		value := r.Header.Get(key)
-		if value != "" {
-			c.Header.Add(key, value)
+		values, ok := r.Header[key]
+		if ok {
+			for _, value := range values {
+				c.Header.Add(key, value)
+			}
 		}
 	}
 	// Set the original client IP address in a Meek-IP header. We would use
@@ -106,9 +108,11 @@ func handler(w http.ResponseWriter, r *http.Request) {
 	}
 	defer resp.Body.Close()
 	for _, key := range reflectedHeaderFields {
-		value := resp.Header.Get(key)
-		if value != "" {
-			w.Header().Add(key, value)
+		values, ok := resp.Header[key]
+		if ok {
+			for _, value := range values {
+				w.Header().Add(key, value)
+			}
 		}
 	}
 	w.WriteHeader(resp.StatusCode)



More information about the tor-commits mailing list