From 00155b1c9dbf8f7fa1d5c9821dbd33c118401e22 Mon Sep 17 00:00:00 2001 From: Nova Date: Sun, 23 Nov 2025 13:41:22 +0330 Subject: [PATCH] fix ws host header --- src/configs/common/transport.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/configs/common/transport.cpp b/src/configs/common/transport.cpp index 1fc4095..d1797af 100644 --- a/src/configs/common/transport.cpp +++ b/src/configs/common/transport.cpp @@ -72,17 +72,10 @@ namespace Configs { method = "GET"; } } - if (query.hasQueryItem("host")) { - host = query.queryItemValue("host"); - if (type == "ws") headers << "host" << host; - } + if (query.hasQueryItem("host")) host = query.queryItemValue("host"); if (query.hasQueryItem("path")) path = query.queryItemValue("path"); if (query.hasQueryItem("method")) method = query.queryItemValue("method"); - if (query.hasQueryItem("headers")) { - auto headersImported = query.queryItemValue("headers").split(","); - if (headersImported.contains("host")) headers = headersImported; - else headers << headersImported; - } + if (query.hasQueryItem("headers")) headers = query.queryItemValue("headers").split(","); 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(); @@ -128,12 +121,19 @@ namespace Configs { QJsonObject object; if (type.isEmpty() || type == "tcp") return object; if (!type.isEmpty()) object["type"] = type; - 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()) { object["headers"] = qStringListToJsonObject(headers); } + if (!host.isEmpty()) { + if (type == "http" || type == "httpupgrade") object["host"] = host; + if (type == "ws") { + auto headersObj = object["headers"].isObject() ? object["headers"].toObject() : QJsonObject(); + headersObj["host"] = host; + object["headers"] = headersObj; + } + } if (!idle_timeout.isEmpty()) object["idle_timeout"] = idle_timeout; if (!ping_timeout.isEmpty()) object["ping_timeout"] = ping_timeout; if (max_early_data > 0) object["max_early_data"] = max_early_data;