Browse Source

Fix VLESS & Trojan fallbacks xver

pull/212/head
RPRX 4 years ago committed by GitHub
parent
commit
8ffc430351
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 23
      proxy/trojan/server.go
  2. 23
      proxy/vless/inbound/inbound.go

23
proxy/trojan/server.go

@ -500,19 +500,16 @@ func (s *Server) fallback(ctx context.Context, sid errors.ExportOption, err erro
postRequest := func() error { postRequest := func() error {
defer timer.SetTimeout(sessionPolicy.Timeouts.DownlinkOnly) defer timer.SetTimeout(sessionPolicy.Timeouts.DownlinkOnly)
if fb.Xver != 0 { if fb.Xver != 0 {
var remoteAddr, remotePort, localAddr, localPort string ipType := 4
ipType, network := 0, connection.RemoteAddr().Network() remoteAddr, remotePort, err := net.SplitHostPort(connection.RemoteAddr().String())
if len(network) >= 3 && network[:3] == "tcp" { if err != nil {
var err error ipType = 0
remoteAddr, remotePort, err = net.SplitHostPort(connection.RemoteAddr().String()) }
if err != nil { localAddr, localPort, err := net.SplitHostPort(connection.LocalAddr().String())
return err if err != nil {
} ipType = 0
localAddr, localPort, err = net.SplitHostPort(connection.LocalAddr().String()) }
if err != nil { if ipType == 4 {
return err
}
ipType = 4
for i := 0; i < len(remoteAddr); i++ { for i := 0; i < len(remoteAddr); i++ {
if remoteAddr[i] == ':' { if remoteAddr[i] == ':' {
ipType = 6 ipType = 6

23
proxy/vless/inbound/inbound.go

@ -335,19 +335,16 @@ func (h *Handler) Process(ctx context.Context, network net.Network, connection i
postRequest := func() error { postRequest := func() error {
defer timer.SetTimeout(sessionPolicy.Timeouts.DownlinkOnly) defer timer.SetTimeout(sessionPolicy.Timeouts.DownlinkOnly)
if fb.Xver != 0 { if fb.Xver != 0 {
var remoteAddr, remotePort, localAddr, localPort string ipType := 4
ipType, network := 0, connection.RemoteAddr().Network() remoteAddr, remotePort, err := net.SplitHostPort(connection.RemoteAddr().String())
if len(network) >= 3 && network[:3] == "tcp" { if err != nil {
var err error ipType = 0
remoteAddr, remotePort, err = net.SplitHostPort(connection.RemoteAddr().String()) }
if err != nil { localAddr, localPort, err := net.SplitHostPort(connection.LocalAddr().String())
return err if err != nil {
} ipType = 0
localAddr, localPort, err = net.SplitHostPort(connection.LocalAddr().String()) }
if err != nil { if ipType == 4 {
return err
}
ipType = 4
for i := 0; i < len(remoteAddr); i++ { for i := 0; i < len(remoteAddr); i++ {
if remoteAddr[i] == ':' { if remoteAddr[i] == ':' {
ipType = 6 ipType = 6

Loading…
Cancel
Save