fix(hostname): fix handling of non-ASCII hostnames on Windows (#3382)

This commit is contained in:
Cameron Gutman
2024-11-09 14:05:46 -06:00
committed by GitHub
parent d552073eaf
commit fb1f5b5a89
8 changed files with 51 additions and 5 deletions

View File

@@ -1846,6 +1846,16 @@ namespace platf {
return output;
}
std::string
get_host_name() {
WCHAR hostname[256];
if (GetHostNameW(hostname, ARRAYSIZE(hostname)) == SOCKET_ERROR) {
BOOST_LOG(error) << "GetHostNameW() failed: "sv << WSAGetLastError();
return "Sunshine"s;
}
return to_utf8(hostname);
}
class win32_high_precision_timer: public high_precision_timer {
public:
win32_high_precision_timer() {

View File

@@ -9,8 +9,6 @@
#include <windns.h>
#include <winerror.h>
#include <boost/asio/ip/host_name.hpp>
#include "misc.h"
#include "src/config.h"
#include "src/logging.h"
@@ -108,7 +106,7 @@ namespace platf::publish {
std::wstring domain { SERVICE_TYPE_DOMAIN.data(), SERVICE_TYPE_DOMAIN.size() };
auto hostname = boost::asio::ip::host_name();
auto hostname = platf::get_host_name();
auto name = from_utf8(net::mdns_instance_name(hostname) + '.') + domain;
auto host = from_utf8(hostname + ".local");