Fix host in headers field does not work XTLS#3191

This commit is contained in:
风扇滑翔翼 2024-03-27 21:06:56 +08:00 committed by yuhan6665
parent e2439c0483
commit 8a439bf3f2

View File

@ -181,10 +181,10 @@ func (c *WebSocketConfig) Build() (proto.Message, error) {
}
type HttpUpgradeConfig struct {
Path string `json:"path"`
Host string `json:"host"`
Path string `json:"path"`
Host string `json:"host"`
Headers map[string]string `json:"headers"`
AcceptProxyProtocol bool `json:"acceptProxyProtocol"`
AcceptProxyProtocol bool `json:"acceptProxyProtocol"`
}
// Build implements Buildable.
@ -200,6 +200,14 @@ func (c *HttpUpgradeConfig) Build() (proto.Message, error) {
path = u.String()
}
}
// If http host is not set in the Host field, but in headers field, we add it to Host Field here.
// If we don't do that, http host will be overwritten as address.
// Host priority: Host field > headers field > address.
if c.Host == "" && c.Headers["host"] != "" {
c.Host = c.Headers["host"]
} else if c.Host == "" && c.Headers["Host"] != "" {
c.Host = c.Headers["Host"]
}
config := &httpupgrade.Config{
Path: path,
Host: c.Host,