Skip to content

Commit 74829f7

Browse files
committed
in secure mode, in secure mode, use the host name instead of the IP adddress for the host, and the port number used in the Host header cause SSL handshake Error, disable it for now
1 parent 8c9531f commit 74829f7

File tree

2 files changed

+22
-22
lines changed

2 files changed

+22
-22
lines changed

Development/nmos/client_utils.cpp

+17-5
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#include "cpprest/ws_client.h"
1616
#include "nmos/certificate_settings.h"
1717
#include "nmos/json_fields.h"
18+
#include "nmos/mdns.h"
1819
#include "nmos/slog.h"
1920
#include "nmos/ssl_context_options.h"
2021

@@ -263,14 +264,25 @@ namespace nmos
263264
{
264265
// unstash the host name for the Host header
265266
// cf. nmos::details::resolve_service
266-
std::unique_ptr<web::http::client::http_client> client(new web::http::client::http_client(web::uri_builder(base_uri).set_user_info({}).to_uri(), client_config));
267+
// Note: in secure mode, use the host name instead of the IP adddress for the host
268+
web::uri base_uri_{ base_uri };
269+
if (!base_uri.user_info().empty() && nmos::is_service_protocol_secure(utility::us2s(base_uri.scheme())))
270+
{
271+
auto host = base_uri.user_info();
272+
base_uri_ = web::uri_builder(base_uri).set_user_info({}).set_host(host).to_uri();
273+
}
274+
std::unique_ptr<web::http::client::http_client> client(new web::http::client::http_client(base_uri_, client_config));
275+
267276
if (!base_uri.user_info().empty())
268277
{
269278
auto host = base_uri.user_info();
270-
if (base_uri.port() > 0)
271-
{
272-
host.append(U(":")).append(utility::conversions::details::to_string_t(base_uri.port()));
273-
}
279+
280+
// hmm, in secure mode, the port number used in the Host header cause SSL handshake Error, disable it for now
281+
//if (base_uri.port() > 0)
282+
//{
283+
// host.append(U(":")).append(utility::conversions::details::to_string_t(base_uri.port()));
284+
//}
285+
274286
client->add_handler([host](web::http::http_request request, std::shared_ptr<web::http::http_pipeline_stage> next_stage) -> pplx::task<web::http::http_response>
275287
{
276288
request.headers().add(web::http::header_names::host, host);

Development/nmos/mdns.cpp

+5-17
Original file line numberDiff line numberDiff line change
@@ -563,23 +563,11 @@ namespace nmos
563563
{
564564
// sneakily stash the host name for the Host header in user info
565565
// cf. nmos::details::make_http_client
566-
if (is_service_protocol_secure(resolved_proto))
567-
{
568-
results->push_back({ { *resolved_ver, resolved_pri }, resolved_uri
569-
.set_user_info(host_name)
570-
.set_host(host_name)
571-
.to_uri()
572-
});
573-
break;
574-
}
575-
else
576-
{
577-
results->push_back({ { *resolved_ver, resolved_pri }, resolved_uri
578-
.set_user_info(host_name)
579-
.set_host(utility::s2us(ip_address))
580-
.to_uri()
581-
});
582-
}
566+
results->push_back({ { *resolved_ver, resolved_pri }, resolved_uri
567+
.set_user_info(host_name)
568+
.set_host(utility::s2us(ip_address))
569+
.to_uri()
570+
});
583571
}
584572

585573
return true;

0 commit comments

Comments
 (0)