From 26f4e49f0538177eb5ec33c84a280afe2ae16042 Mon Sep 17 00:00:00 2001 From: "rui.zheng" Date: Fri, 3 Mar 2017 21:33:05 +0800 Subject: [PATCH] fix issue #91 --- cmd/gost/vendor/github.com/ginuerzh/gost/gost.go | 2 +- cmd/gost/vendor/github.com/ginuerzh/gost/http.go | 9 ++++----- cmd/gost/vendor/vendor.json | 6 +++--- gost.go | 2 +- http.go | 9 ++++----- 5 files changed, 13 insertions(+), 15 deletions(-) diff --git a/cmd/gost/vendor/github.com/ginuerzh/gost/gost.go b/cmd/gost/vendor/github.com/ginuerzh/gost/gost.go index fb0e42e..50f4085 100644 --- a/cmd/gost/vendor/github.com/ginuerzh/gost/gost.go +++ b/cmd/gost/vendor/github.com/ginuerzh/gost/gost.go @@ -12,7 +12,7 @@ import ( ) const ( - Version = "2.4-dev" + Version = "2.4-dev20170303" ) // Log level for glog diff --git a/cmd/gost/vendor/github.com/ginuerzh/gost/http.go b/cmd/gost/vendor/github.com/ginuerzh/gost/http.go index 4f9da62..c0ef87f 100644 --- a/cmd/gost/vendor/github.com/ginuerzh/gost/http.go +++ b/cmd/gost/vendor/github.com/ginuerzh/gost/http.go @@ -70,7 +70,7 @@ func (s *HttpServer) HandleRequest(req *http.Request) { // forward http request lastNode := s.Base.Chain.lastNode - if lastNode != nil && (lastNode.Protocol == "http" || lastNode.Protocol == "") { + if lastNode != nil && lastNode.Transport == "" && (lastNode.Protocol == "http" || lastNode.Protocol == "") { s.forwardRequest(req) return } @@ -215,6 +215,7 @@ func (s *Http2Server) HandleRequest(w http.ResponseWriter, req *http.Request) { } req.Header.Del("Proxy-Authorization") + req.Header.Del("Proxy-Connection") c, err := s.Base.Chain.Dial(target) if err != nil { @@ -242,13 +243,12 @@ func (s *Http2Server) HandleRequest(w http.ResponseWriter, req *http.Request) { return } defer conn.Close() - + glog.V(LINFO).Infof("[http2] %s -> %s : downgrade to HTTP/1.1", req.RemoteAddr, target) s.Base.transport(conn, c) return } errc := make(chan error, 2) - go func() { _, err := io.Copy(c, req.Body) errc <- err @@ -274,7 +274,7 @@ func (s *Http2Server) HandleRequest(w http.ResponseWriter, req *http.Request) { resp, err := http.ReadResponse(bufio.NewReader(c), req) if err != nil { - glog.V(LWARNING).Infoln(err) + glog.V(LWARNING).Infoln("[http2] %s -> %s : %s", req.RemoteAddr, target, err) return } defer resp.Body.Close() @@ -288,7 +288,6 @@ func (s *Http2Server) HandleRequest(w http.ResponseWriter, req *http.Request) { if _, err := io.Copy(flushWriter{w}, resp.Body); err != nil { glog.V(LWARNING).Infof("[http2] %s <- %s : %s", req.RemoteAddr, target, err) } - glog.V(LINFO).Infof("[http2] %s >-< %s", req.RemoteAddr, target) } diff --git a/cmd/gost/vendor/vendor.json b/cmd/gost/vendor/vendor.json index ceca9ca..043e68e 100644 --- a/cmd/gost/vendor/vendor.json +++ b/cmd/gost/vendor/vendor.json @@ -21,10 +21,10 @@ "revisionTime": "2017-01-19T05:34:58Z" }, { - "checksumSHA1": "qaLXKRQRMKw/NZ3fVYln3PahmGU=", + "checksumSHA1": "FiAXa5vUbpoqK2lhegpc9lOpumk=", "path": "github.com/ginuerzh/gost", - "revision": "82925e4ac7c81687fb985c8cdbf0f072b01c3bc6", - "revisionTime": "2017-03-03T04:48:46Z" + "revision": "d98860877d6952f26974ebaa044b29af05528f46", + "revisionTime": "2017-03-03T07:45:56Z" }, { "checksumSHA1": "+XIOnTW0rv8Kr/amkXgMraNeUr4=", diff --git a/gost.go b/gost.go index fb0e42e..50f4085 100644 --- a/gost.go +++ b/gost.go @@ -12,7 +12,7 @@ import ( ) const ( - Version = "2.4-dev" + Version = "2.4-dev20170303" ) // Log level for glog diff --git a/http.go b/http.go index 4f9da62..c0ef87f 100644 --- a/http.go +++ b/http.go @@ -70,7 +70,7 @@ func (s *HttpServer) HandleRequest(req *http.Request) { // forward http request lastNode := s.Base.Chain.lastNode - if lastNode != nil && (lastNode.Protocol == "http" || lastNode.Protocol == "") { + if lastNode != nil && lastNode.Transport == "" && (lastNode.Protocol == "http" || lastNode.Protocol == "") { s.forwardRequest(req) return } @@ -215,6 +215,7 @@ func (s *Http2Server) HandleRequest(w http.ResponseWriter, req *http.Request) { } req.Header.Del("Proxy-Authorization") + req.Header.Del("Proxy-Connection") c, err := s.Base.Chain.Dial(target) if err != nil { @@ -242,13 +243,12 @@ func (s *Http2Server) HandleRequest(w http.ResponseWriter, req *http.Request) { return } defer conn.Close() - + glog.V(LINFO).Infof("[http2] %s -> %s : downgrade to HTTP/1.1", req.RemoteAddr, target) s.Base.transport(conn, c) return } errc := make(chan error, 2) - go func() { _, err := io.Copy(c, req.Body) errc <- err @@ -274,7 +274,7 @@ func (s *Http2Server) HandleRequest(w http.ResponseWriter, req *http.Request) { resp, err := http.ReadResponse(bufio.NewReader(c), req) if err != nil { - glog.V(LWARNING).Infoln(err) + glog.V(LWARNING).Infoln("[http2] %s -> %s : %s", req.RemoteAddr, target, err) return } defer resp.Body.Close() @@ -288,7 +288,6 @@ func (s *Http2Server) HandleRequest(w http.ResponseWriter, req *http.Request) { if _, err := io.Copy(flushWriter{w}, resp.Body); err != nil { glog.V(LWARNING).Infof("[http2] %s <- %s : %s", req.RemoteAddr, target, err) } - glog.V(LINFO).Infof("[http2] %s >-< %s", req.RemoteAddr, target) }