mirror of
https://github.com/lwch/natpass.git
synced 2024-04-21 12:41:54 +00:00
增加log
This commit is contained in:
@@ -1,19 +1,27 @@
|
||||
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) {
|
||||
reqID, err := workspace.SendRequest(r)
|
||||
if err != nil {
|
||||
logging.Error("send: %v", err)
|
||||
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 {
|
||||
@@ -22,6 +30,8 @@ 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",
|
||||
@@ -37,14 +47,14 @@ func (code *Code) handleRequest(workspace *Workspace, w http.ResponseWriter, r *
|
||||
}
|
||||
}
|
||||
|
||||
logging.Info("header: %v", hdr.GetHeader())
|
||||
|
||||
w.WriteHeader(int(hdr.GetCode()))
|
||||
|
||||
var idx uint32
|
||||
var buf []byte
|
||||
for {
|
||||
msg := workspace.onResponse(reqID)
|
||||
if msg == nil {
|
||||
logging.Error("no response")
|
||||
http.Error(w, "no response", http.StatusBadGateway)
|
||||
return
|
||||
}
|
||||
@@ -65,12 +75,22 @@ func (code *Code) handleRequest(workspace *Workspace, w http.ResponseWriter, r *
|
||||
http.Error(w, fmt.Sprintf("read error: %s", string(resp.GetBody())), http.StatusResetContent)
|
||||
return
|
||||
}
|
||||
_, err = w.Write(resp.GetBody())
|
||||
if err != nil {
|
||||
logging.Error("write body: %v", err)
|
||||
return
|
||||
}
|
||||
buf = append(buf, resp.GetBody()...)
|
||||
// _, err = buf.Write(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++
|
||||
|
||||
@@ -39,7 +39,7 @@ func (ws *Workspace) handleRequest(msg *network.Msg) {
|
||||
n, err := response.Body.Read(buf)
|
||||
if err != nil {
|
||||
if err == io.EOF {
|
||||
send := ws.remote.SendCodeResponseBody(ws.target, ws.id, req.GetRequestId(), idx, true, true, nil)
|
||||
send := ws.remote.SendCodeResponseBody(ws.target, ws.id, req.GetRequestId(), idx, true, true, buf[:n])
|
||||
ws.sendBytes += send
|
||||
ws.sendPacket++
|
||||
idx++
|
||||
|
||||
Reference in New Issue
Block a user