plugin: update http_proxy
@@ -66,14 +66,21 @@ func (hp *HttpProxy) Handle(conn io.ReadWriteCloser, realConn frpNet.Conn) {
wrapConn := frpNet.WrapReadWriteCloserToConn(conn, realConn)
sc, rd := frpNet.NewShareConn(wrapConn)
- request, err := http.ReadRequest(bufio.NewReader(rd))
+ firstBytes := make([]byte, 7)
+ _, err := rd.Read(firstBytes)
if err != nil {
wrapConn.Close()
return
}
- if request.Method == http.MethodConnect {
- hp.handleConnectReq(request, frpIo.WrapReadWriteCloser(rd, wrapConn, nil))
+ if strings.ToUpper(string(firstBytes)) == "CONNECT" {
+ bufRd := bufio.NewReader(sc)
+ request, err := http.ReadRequest(bufRd)
+ if err != nil {
+ wrapConn.Close()
+ return
+ }
+ hp.handleConnectReq(request, frpIo.WrapReadWriteCloser(bufRd, wrapConn, wrapConn.Close))
return
}
