This commit is contained in:
rui.zheng 2017-03-03 21:33:05 +08:00
parent d98860877d
commit 26f4e49f05
5 changed files with 13 additions and 15 deletions

View File

@ -12,7 +12,7 @@ import (
) )
const ( const (
Version = "2.4-dev" Version = "2.4-dev20170303"
) )
// Log level for glog // Log level for glog

View File

@ -70,7 +70,7 @@ func (s *HttpServer) HandleRequest(req *http.Request) {
// forward http request // forward http request
lastNode := s.Base.Chain.lastNode 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) s.forwardRequest(req)
return return
} }
@ -215,6 +215,7 @@ func (s *Http2Server) HandleRequest(w http.ResponseWriter, req *http.Request) {
} }
req.Header.Del("Proxy-Authorization") req.Header.Del("Proxy-Authorization")
req.Header.Del("Proxy-Connection")
c, err := s.Base.Chain.Dial(target) c, err := s.Base.Chain.Dial(target)
if err != nil { if err != nil {
@ -242,13 +243,12 @@ func (s *Http2Server) HandleRequest(w http.ResponseWriter, req *http.Request) {
return return
} }
defer conn.Close() defer conn.Close()
glog.V(LINFO).Infof("[http2] %s -> %s : downgrade to HTTP/1.1", req.RemoteAddr, target)
s.Base.transport(conn, c) s.Base.transport(conn, c)
return return
} }
errc := make(chan error, 2) errc := make(chan error, 2)
go func() { go func() {
_, err := io.Copy(c, req.Body) _, err := io.Copy(c, req.Body)
errc <- err errc <- err
@ -274,7 +274,7 @@ func (s *Http2Server) HandleRequest(w http.ResponseWriter, req *http.Request) {
resp, err := http.ReadResponse(bufio.NewReader(c), req) resp, err := http.ReadResponse(bufio.NewReader(c), req)
if err != nil { if err != nil {
glog.V(LWARNING).Infoln(err) glog.V(LWARNING).Infoln("[http2] %s -> %s : %s", req.RemoteAddr, target, err)
return return
} }
defer resp.Body.Close() 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 { if _, err := io.Copy(flushWriter{w}, resp.Body); err != nil {
glog.V(LWARNING).Infof("[http2] %s <- %s : %s", req.RemoteAddr, target, err) glog.V(LWARNING).Infof("[http2] %s <- %s : %s", req.RemoteAddr, target, err)
} }
glog.V(LINFO).Infof("[http2] %s >-< %s", req.RemoteAddr, target) glog.V(LINFO).Infof("[http2] %s >-< %s", req.RemoteAddr, target)
} }

View File

@ -21,10 +21,10 @@
"revisionTime": "2017-01-19T05:34:58Z" "revisionTime": "2017-01-19T05:34:58Z"
}, },
{ {
"checksumSHA1": "qaLXKRQRMKw/NZ3fVYln3PahmGU=", "checksumSHA1": "FiAXa5vUbpoqK2lhegpc9lOpumk=",
"path": "github.com/ginuerzh/gost", "path": "github.com/ginuerzh/gost",
"revision": "82925e4ac7c81687fb985c8cdbf0f072b01c3bc6", "revision": "d98860877d6952f26974ebaa044b29af05528f46",
"revisionTime": "2017-03-03T04:48:46Z" "revisionTime": "2017-03-03T07:45:56Z"
}, },
{ {
"checksumSHA1": "+XIOnTW0rv8Kr/amkXgMraNeUr4=", "checksumSHA1": "+XIOnTW0rv8Kr/amkXgMraNeUr4=",

View File

@ -12,7 +12,7 @@ import (
) )
const ( const (
Version = "2.4-dev" Version = "2.4-dev20170303"
) )
// Log level for glog // Log level for glog

View File

@ -70,7 +70,7 @@ func (s *HttpServer) HandleRequest(req *http.Request) {
// forward http request // forward http request
lastNode := s.Base.Chain.lastNode 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) s.forwardRequest(req)
return return
} }
@ -215,6 +215,7 @@ func (s *Http2Server) HandleRequest(w http.ResponseWriter, req *http.Request) {
} }
req.Header.Del("Proxy-Authorization") req.Header.Del("Proxy-Authorization")
req.Header.Del("Proxy-Connection")
c, err := s.Base.Chain.Dial(target) c, err := s.Base.Chain.Dial(target)
if err != nil { if err != nil {
@ -242,13 +243,12 @@ func (s *Http2Server) HandleRequest(w http.ResponseWriter, req *http.Request) {
return return
} }
defer conn.Close() defer conn.Close()
glog.V(LINFO).Infof("[http2] %s -> %s : downgrade to HTTP/1.1", req.RemoteAddr, target)
s.Base.transport(conn, c) s.Base.transport(conn, c)
return return
} }
errc := make(chan error, 2) errc := make(chan error, 2)
go func() { go func() {
_, err := io.Copy(c, req.Body) _, err := io.Copy(c, req.Body)
errc <- err errc <- err
@ -274,7 +274,7 @@ func (s *Http2Server) HandleRequest(w http.ResponseWriter, req *http.Request) {
resp, err := http.ReadResponse(bufio.NewReader(c), req) resp, err := http.ReadResponse(bufio.NewReader(c), req)
if err != nil { if err != nil {
glog.V(LWARNING).Infoln(err) glog.V(LWARNING).Infoln("[http2] %s -> %s : %s", req.RemoteAddr, target, err)
return return
} }
defer resp.Body.Close() 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 { if _, err := io.Copy(flushWriter{w}, resp.Body); err != nil {
glog.V(LWARNING).Infof("[http2] %s <- %s : %s", req.RemoteAddr, target, err) glog.V(LWARNING).Infof("[http2] %s <- %s : %s", req.RemoteAddr, target, err)
} }
glog.V(LINFO).Infof("[http2] %s >-< %s", req.RemoteAddr, target) glog.V(LINFO).Infof("[http2] %s >-< %s", req.RemoteAddr, target)
} }