refactor: streamline http request forwarding

This commit is contained in:
SunBK201 2025-11-28 22:27:15 +08:00
parent 47566f9223
commit f7bca9cf0a
2 changed files with 6 additions and 19 deletions

View File

@ -5,7 +5,6 @@ import (
"fmt"
"io"
"log/slog"
"net"
"net/http"
"strings"
"time"
@ -132,12 +131,12 @@ func (s *Server) ProcessLR(c *ConnLink) (err error) {
req = s.Rewriter.Rewrite(req, c.LAddr, c.RAddr, decision)
}
if err = ForwardHTTP(c.RConn, req); err != nil {
err = fmt.Errorf("ForwardHTTP: %w", err)
return
if err := req.Write(c.RConn); err != nil {
return fmt.Errorf("req.Write: %w", err)
}
if req.Header.Get("Upgrade") == "websocket" && req.Header.Get("Connection") == "Upgrade" {
c.LogInfo("websocket upgrade detected, switch to direct proxy")
c.LogInfo("websocket upgrade detected, switch to direct forward")
statistics.AddConnection(&statistics.ConnectionRecord{
Protocol: sniff.WebSocket,
SrcAddr: c.LAddr,
@ -147,14 +146,3 @@ func (s *Server) ProcessLR(c *ConnLink) (err error) {
}
}
}
func ForwardHTTP(dst net.Conn, req *http.Request) error {
if err := req.Write(dst); err != nil {
return fmt.Errorf("req.Write: %w", err)
}
err := req.Body.Close()
if err != nil {
return fmt.Errorf("req.Body.Close: %w", err)
}
return nil
}

View File

@ -123,9 +123,8 @@ func (s *Server) rewriteAndForward(target net.Conn, req *http.Request, dstAddr,
if decision.ShouldRewrite() {
req = s.Rewriter.Rewrite(req, srcAddr, dstAddr, decision)
}
if err = base.ForwardHTTP(target, req); err != nil {
err = fmt.Errorf("base.ForwardHTTP: %w", err)
return
if err := req.Write(target); err != nil {
return fmt.Errorf("req.Write: %w", err)
}
return nil
}