mirror of
https://github.com/SunBK201/UA3F.git
synced 2025-12-16 16:57:08 +00:00
fix: modify isHTTP function to return error and handle network connection issues
This commit is contained in:
parent
1df2c88e4f
commit
7b6f526090
16
src/main.go
16
src/main.go
@ -346,11 +346,11 @@ func Socks5Forward(client, target net.Conn, destAddrPort string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func isHTTP(reader *bufio.Reader) bool {
|
func isHTTP(reader *bufio.Reader) (bool, error) {
|
||||||
buf, err := reader.Peek(7)
|
buf, err := reader.Peek(7)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logrus.Error(fmt.Sprintf("Peek error: %s", err.Error()))
|
logrus.Error(fmt.Sprintf("Peek error: %s", err.Error()))
|
||||||
return false
|
return false, err
|
||||||
}
|
}
|
||||||
hint := string(buf)
|
hint := string(buf)
|
||||||
is_http := false
|
is_http := false
|
||||||
@ -360,7 +360,7 @@ func isHTTP(reader *bufio.Reader) bool {
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return is_http
|
return is_http, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func buildNewUA(originUA string, targetUA string, uaRegexp *regexp2.Regexp, enablePartialReplace bool) string {
|
func buildNewUA(originUA string, targetUA string, uaRegexp *regexp2.Regexp, enablePartialReplace bool) string {
|
||||||
@ -377,8 +377,14 @@ func buildNewUA(originUA string, targetUA string, uaRegexp *regexp2.Regexp, enab
|
|||||||
|
|
||||||
func transfer(dst net.Conn, src net.Conn, destAddrPort string) {
|
func transfer(dst net.Conn, src net.Conn, destAddrPort string) {
|
||||||
srcReader := bufio.NewReader(src)
|
srcReader := bufio.NewReader(src)
|
||||||
is_http := isHTTP(srcReader)
|
is_http, err := isHTTP(srcReader)
|
||||||
if !is_http {
|
if err != nil {
|
||||||
|
if strings.Contains(err.Error(), "use of closed network connection") {
|
||||||
|
logrus.Error(fmt.Sprintf("[%s] isHTTP error: %s", destAddrPort, err.Error()))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !is_http && err == nil {
|
||||||
cache.Add(destAddrPort, destAddrPort)
|
cache.Add(destAddrPort, destAddrPort)
|
||||||
logrus.Debug(fmt.Sprintf("Not HTTP, Add LRU Relay Cache: %s, Cache Len: %d", destAddrPort, cache.Len()))
|
logrus.Debug(fmt.Sprintf("Not HTTP, Add LRU Relay Cache: %s, Cache Len: %d", destAddrPort, cache.Len()))
|
||||||
io.Copy(dst, srcReader)
|
io.Copy(dst, srcReader)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user