修订代码,令grpc回落写入响应头,关联 #208

This commit is contained in:
e1732a364fed
2000-01-01 00:00:00 +00:00
parent 2c35f66157
commit 037638368d
4 changed files with 17 additions and 2 deletions

View File

@@ -184,6 +184,7 @@ func (s *Server) StartHandle(underlay net.Conn, newSubConnFunc func(net.Conn), f
fm.IsH2 = true
fm.H2Request = rq
fm.H2RW = rw
if s.closed {
return

View File

@@ -47,6 +47,7 @@ type FallbackMeta struct {
Reason string
H2Request *http.Request
H2RW http.ResponseWriter
XFF net.Addr
}

View File

@@ -79,6 +79,7 @@ type incomingInserverConnState struct {
isFallbackH2 bool
fallbackRequestPath string
fallbackH2Request *http.Request
fallbackRW http.ResponseWriter
fallbackFirstBuffer *bytes.Buffer
fallbackXver int //若大于等于0则证明该进项已经被确定需要进行fallback。

16
main.go
View File

@@ -399,6 +399,7 @@ func handleNewIncomeConnection(inServer proxy.Server, defaultClientForThis proxy
newiics.wrappedConn = fallbackMeta.Conn
newiics.isFallbackH2 = fallbackMeta.IsH2
newiics.fallbackH2Request = fallbackMeta.H2Request
newiics.fallbackRW = fallbackMeta.H2RW
passToOutClient(newiics, true, nil, nil, netLayer.Addr{})
})
@@ -663,8 +664,8 @@ func passToOutClient(iics incomingInserverConnState, isfallback bool, wlc net.Co
rq.Host = targetAddr.Name
urlStr := "https://" + targetAddr.String() + iics.fallbackRequestPath
url, _ := url.Parse(urlStr)
rq.URL = url
u, _ := url.Parse(urlStr)
rq.URL = u
var transport *http2.Transport
@@ -679,6 +680,11 @@ func passToOutClient(iics incomingInserverConnState, isfallback bool, wlc net.Co
},
AllowHTTP: true,
}
if ce := utils.CanLogDebug("fallback grpc"); ce != nil {
ce.Write(zap.String("path", iics.fallbackRequestPath))
}
rq.URL, _ = url.Parse("http://127.0.0.1" + iics.fallbackRequestPath)
}
} else if fbResult > 0 {
@@ -733,6 +739,12 @@ func passToOutClient(iics incomingInserverConnState, isfallback bool, wlc net.Co
return
}
for k, v := range rsp.Header {
iics.fallbackRW.Header().Set(k, v[0])
}
iics.fallbackRW.WriteHeader(rsp.StatusCode)
netLayer.TryCopy(wlc, rsp.Body, iics.id)
return