Forráskód Böngészése

Fix host in headers field does not work XTLS#3191

风扇滑翔翼 1 éve
szülő
commit
8a439bf3f2
1 módosított fájl, 11 hozzáadás és 3 törlés
  1. 11 3
      infra/conf/transport_internet.go

+ 11 - 3
infra/conf/transport_internet.go

@@ -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,