Skip to content

Commit

Permalink
src: use UTF-8 for naming interfaces in unix
Browse files Browse the repository at this point in the history
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: #21926
Reviewed-By: Anna Henningsen <[email protected]>
Reviewed-By: Tobias Nießen <[email protected]>
Reviewed-By: Anatoli Papirovski <[email protected]>
Reviewed-By: James M Snell <[email protected]>
  • Loading branch information
ryzokuken authored and addaleax committed Jul 29, 2018
1 parent 86cae94 commit 07cb697
Showing 1 changed file with 5 additions and 7 deletions.
12 changes: 5 additions & 7 deletions src/node_os.cc
Original file line number Diff line number Diff line change
Expand Up @@ -257,15 +257,13 @@ static void GetInterfaceAddresses(const FunctionCallbackInfo<Value>& 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<Array>::Cast(ret->Get(name));
Expand Down

0 comments on commit 07cb697

Please sign in to comment.