HTTP should contain port in 'Host' header (#427)

This commit is contained in:
Vol-Alex
2023-02-12 00:27:40 +01:00
committed by GitHub
parent 679ce519dd
commit 6cc21f3658
3 changed files with 44 additions and 16 deletions

View File

@ -333,6 +333,19 @@ namespace
return Result;
}
int getProtocolPort(const std::string& protocol)
{
if (protocol == "ws" || protocol == "http")
{
return 80;
}
else if (protocol == "wss" || protocol == "https")
{
return 443;
}
return -1;
}
} // namespace
namespace ix
@ -343,6 +356,18 @@ namespace ix
std::string& path,
std::string& query,
int& port)
{
bool isProtocolDefaultPort;
return parse(url, protocol, host, path, query, port, isProtocolDefaultPort);
}
bool UrlParser::parse(const std::string& url,
std::string& protocol,
std::string& host,
std::string& path,
std::string& query,
int& port,
bool& isProtocolDefaultPort)
{
clParseURL res = clParseURL::ParseURL(url);
@ -356,23 +381,12 @@ namespace ix
path = res.m_Path;
query = res.m_Query;
const auto protocolPort = getProtocolPort(protocol);
if (!res.GetPort(&port))
{
if (protocol == "ws" || protocol == "http")
{
port = 80;
}
else if (protocol == "wss" || protocol == "https")
{
port = 443;
}
else
{
// Invalid protocol. Should be caught by regex check
// but this missing branch trigger cpplint linter.
return false;
}
port = protocolPort;
}
isProtocolDefaultPort = port == protocolPort;
if (path.empty())
{