From 2548f75a92ab03679615a31483144b0532e4c6d0 Mon Sep 17 00:00:00 2001 From: Ujjwal Sharma Date: Sun, 22 Jul 2018 03:36:20 +0530 Subject: [PATCH] src: use UTF-8 for naming interfaces in unix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use a UTF-8 encoded string for naming interfaces in unix, instead of using Latin-1, as had been done on windows previously. PR-URL: https://github.com/nodejs/node/pull/21926 Reviewed-By: Anna Henningsen Reviewed-By: Tobias Nießen Reviewed-By: Anatoli Papirovski Reviewed-By: James M Snell --- src/node_os.cc | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/node_os.cc b/src/node_os.cc index e0ea7e7b828518..c9eef808b0addf 100644 --- a/src/node_os.cc +++ b/src/node_os.cc @@ -257,15 +257,13 @@ static void GetInterfaceAddresses(const FunctionCallbackInfo& args) { for (i = 0; i < count; i++) { const char* const raw_name = interfaces[i].name; - // On Windows, the interface name is the UTF8-encoded friendly name and may - // contain non-ASCII characters. On UNIX, it's just a binary string with - // no particular encoding but we treat it as a one-byte Latin-1 string. -#ifdef _WIN32 + // Use UTF-8 on both Windows and Unixes (While it may be true that UNIX + // systems are somewhat encoding-agnostic here, it’s more than reasonable + // to assume UTF8 as the default as well. It’s what people will expect if + // they name the interface from any input that uses UTF-8, which should be + // the most frequent case by far these days.) name = String::NewFromUtf8(env->isolate(), raw_name, v8::NewStringType::kNormal).ToLocalChecked(); -#else - name = OneByteString(env->isolate(), raw_name); -#endif if (ret->Has(env->context(), name).FromJust()) { ifarr = Local::Cast(ret->Get(name));