修正转发问题

This commit is contained in:
lwch
2022-07-26 00:31:36 +08:00
parent 8a6c8327e7
commit b0719f40a7
7 changed files with 15 additions and 38 deletions
+5 -23
View File
@@ -2,15 +2,12 @@ package code
import (
"bytes"
"compress/gzip"
"fmt"
"io"
"io/ioutil"
"net/http"
"github.com/lwch/logging"
"github.com/lwch/natpass/code/network"
"github.com/lwch/runtime"
)
func (code *Code) handleRequest(workspace *Workspace, w http.ResponseWriter, r *http.Request) {
@@ -20,8 +17,6 @@ func (code *Code) handleRequest(workspace *Workspace, w http.ResponseWriter, r *
http.Error(w, err.Error(), http.StatusBadGateway)
return
}
logging.Info("send request [%s] [%s] successed, request_id=%d",
workspace.id, workspace.name, reqID)
defer workspace.closeMessage(reqID)
resp := workspace.onResponse(reqID)
if resp == nil {
@@ -30,8 +25,6 @@ func (code *Code) handleRequest(workspace *Workspace, w http.ResponseWriter, r *
http.Error(w, "no response", http.StatusInternalServerError)
return
}
logging.Info("wait response [%s] [%s] successed, request_id=%d",
workspace.id, workspace.name, reqID)
if resp.GetXType() != network.Msg_code_response_hdr {
logging.Error("got invalid message type [%s] [%s]: %s",
@@ -50,7 +43,6 @@ func (code *Code) handleRequest(workspace *Workspace, w http.ResponseWriter, r *
w.WriteHeader(int(hdr.GetCode()))
var idx uint32
var buf []byte
for {
msg := workspace.onResponse(reqID)
if msg == nil {
@@ -75,22 +67,12 @@ func (code *Code) handleRequest(workspace *Workspace, w http.ResponseWriter, r *
http.Error(w, fmt.Sprintf("read error: %s", string(resp.GetBody())), http.StatusResetContent)
return
}
buf = append(buf, resp.GetBody()...)
// _, err = buf.Write(resp.GetBody())
// if err != nil {
// logging.Error("write body: %v", err)
// return
// }
_, err = io.Copy(w, bytes.NewReader(resp.GetBody()))
if err != nil {
logging.Error("write body: %v", err)
return
}
if resp.GetMask()&2 > 0 {
_, err = io.Copy(w, bytes.NewReader(buf))
if err != nil {
logging.Info("header: %s", hdr.String())
r, err := gzip.NewReader(bytes.NewReader(buf))
runtime.Assert(err)
data, err := ioutil.ReadAll(r)
runtime.Assert(err)
logging.Error("write body: %v\n%s", err, string(data))
}
return
}
idx++
@@ -17,7 +17,7 @@ func (ws *Workspace) SendRequest(r *http.Request) (uint64, error) {
return 0, err
}
ws.Lock()
ws.onMessage[reqID] = make(chan *network.Msg)
ws.onMessage[reqID] = make(chan *network.Msg, 1024)
ws.Unlock()
send := ws.remote.SendCodeRequest(ws.target, ws.id, reqID,
r.Method, r.URL.RequestURI(), body, r.Header)