Browse Source

XHTTP client: Move `dest2` into `MemoryStreamConfig` as well

pull/3968/head
RPRX 3 weeks ago committed by GitHub
parent
commit
9fbb6fbb3b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 10
      transport/internet/memory_settings.go
  2. 9
      transport/internet/splithttp/dialer.go

10
transport/internet/memory_settings.go

@ -1,7 +1,10 @@
package internet package internet
import "github.com/xtls/xray-core/common/net"
// MemoryStreamConfig is a parsed form of StreamConfig. This is used to reduce the number of Protobuf parsings. // MemoryStreamConfig is a parsed form of StreamConfig. This is used to reduce the number of Protobuf parsings.
type MemoryStreamConfig struct { type MemoryStreamConfig struct {
Destination *net.Destination
ProtocolName string ProtocolName string
ProtocolSettings interface{} ProtocolSettings interface{}
SecurityType string SecurityType string
@ -23,6 +26,13 @@ func ToMemoryStreamConfig(s *StreamConfig) (*MemoryStreamConfig, error) {
} }
if s != nil { if s != nil {
if s.Address != nil {
mss.Destination = &net.Destination{
Address: s.Address.AsAddress(),
Port: net.Port(s.Port),
Network: net.Network_TCP,
}
}
mss.SocketSettings = s.SocketSettings mss.SocketSettings = s.SocketSettings
} }

9
transport/internet/splithttp/dialer.go

@ -264,12 +264,7 @@ func Dial(ctx context.Context, dest net.Destination, streamSettings *internet.Me
} }
globalDialerAccess.Unlock() globalDialerAccess.Unlock()
memory2 := streamSettings.DownloadSettings memory2 := streamSettings.DownloadSettings
dest2 := net.Destination{ httpClient2, muxRes2 = getHTTPClient(ctx, *memory2.Destination, memory2) // just panic
Address: transportConfiguration.DownloadSettings.Address.AsAddress(), // just panic
Port: net.Port(transportConfiguration.DownloadSettings.Port),
Network: net.Network_TCP,
}
httpClient2, muxRes2 = getHTTPClient(ctx, dest2, memory2)
if tls.ConfigFromStreamSettings(memory2) != nil || reality.ConfigFromStreamSettings(memory2) != nil { if tls.ConfigFromStreamSettings(memory2) != nil || reality.ConfigFromStreamSettings(memory2) != nil {
requestURL2.Scheme = "https" requestURL2.Scheme = "https"
} else { } else {
@ -278,7 +273,7 @@ func Dial(ctx context.Context, dest net.Destination, streamSettings *internet.Me
config2 := memory2.ProtocolSettings.(*Config) config2 := memory2.ProtocolSettings.(*Config)
requestURL2.Host = config2.Host requestURL2.Host = config2.Host
if requestURL2.Host == "" { if requestURL2.Host == "" {
requestURL2.Host = dest2.NetAddr() requestURL2.Host = memory2.Destination.NetAddr()
} }
requestURL2.Path = requestURL.Path // the same requestURL2.Path = requestURL.Path // the same
requestURL2.RawQuery = config2.GetNormalizedQuery() requestURL2.RawQuery = config2.GetNormalizedQuery()

Loading…
Cancel
Save