From 44914f01d33d8ab4eebd2b3cffd88ce766cfaf2c Mon Sep 17 00:00:00 2001 From: Nova Date: Sun, 23 Nov 2025 13:24:34 +0330 Subject: [PATCH] fix host header in websocket --- src/configs/common/transport.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/configs/common/transport.cpp b/src/configs/common/transport.cpp index 43b0e91..1fc4095 100644 --- a/src/configs/common/transport.cpp +++ b/src/configs/common/transport.cpp @@ -72,10 +72,17 @@ namespace Configs { method = "GET"; } } - if (query.hasQueryItem("host")) host = query.queryItemValue("host"); + if (query.hasQueryItem("host")) { + host = query.queryItemValue("host"); + if (type == "ws") headers << "host" << host; + } if (query.hasQueryItem("path")) path = query.queryItemValue("path"); if (query.hasQueryItem("method")) method = query.queryItemValue("method"); - if (query.hasQueryItem("headers")) headers = query.queryItemValue("headers").split(","); + if (query.hasQueryItem("headers")) { + auto headersImported = query.queryItemValue("headers").split(","); + if (headersImported.contains("host")) headers = headersImported; + else headers << headersImported; + } if (query.hasQueryItem("idle_timeout")) idle_timeout = query.queryItemValue("idle_timeout"); if (query.hasQueryItem("ping_timeout")) ping_timeout = query.queryItemValue("ping_timeout"); if (query.hasQueryItem("max_early_data")) max_early_data = query.queryItemValue("max_early_data").toInt(); @@ -121,7 +128,7 @@ namespace Configs { QJsonObject object; if (type.isEmpty() || type == "tcp") return object; if (!type.isEmpty()) object["type"] = type; - if (!host.isEmpty()) object["host"] = host; + if (!host.isEmpty() && (type == "http" || type == "httpupgrade")) object["host"] = host; if (!path.isEmpty()) object["path"] = path; if (!method.isEmpty()) object["method"] = method; if (!headers.isEmpty()) {