mirror of
https://github.com/SunBK201/UA3F.git
synced 2025-12-16 08:44:29 +00:00
refactor: streamline http request forwarding
This commit is contained in:
parent
47566f9223
commit
f7bca9cf0a
@ -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
|
||||
}
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user