◐ Shell
clean mode source ↗

src: improve error handling in `tcp_wrap.cc` · nodejs/node@f845ad9

@@ -390,8 +390,9 @@ MaybeLocal<Object> AddressToJS(Environment* env,

390390391391

int port;

392392393-

if (info.IsEmpty())

393+

if (info.IsEmpty()) {

394394

info = Object::New(env->isolate());

395+

}

395396396397

switch (addr->sa_family) {

397398

case AF_INET6:

@@ -413,32 +414,45 @@ MaybeLocal<Object> AddressToJS(Environment* env,

413414

}

414415

}

415416

port = ntohs(a6->sin6_port);

416-

info->Set(env->context(),

417-

env->address_string(),

418-

OneByteString(env->isolate(), ip)).Check();

419-

info->Set(env->context(), env->family_string(), env->ipv6_string()).Check();

420-

info->Set(env->context(),

421-

env->port_string(),

422-

Integer::New(env->isolate(), port)).Check();

417+

if (info->Set(env->context(),

418+

env->address_string(),

419+

OneByteString(env->isolate(), ip))

420+

.IsNothing() ||

421+

info->Set(env->context(), env->family_string(), env->ipv6_string())

422+

.IsNothing() ||

423+

info->Set(env->context(),

424+

env->port_string(),

425+

Integer::New(env->isolate(), port))

426+

.IsNothing()) {

427+

return {};

428+

}

423429

break;

424430425431

case AF_INET:

426432

a4 = reinterpret_cast<const sockaddr_in*>(addr);

427433

uv_inet_ntop(AF_INET, &a4->sin_addr, ip, sizeof ip);

428434

port = ntohs(a4->sin_port);

429-

info->Set(env->context(),

430-

env->address_string(),

431-

OneByteString(env->isolate(), ip)).Check();

432-

info->Set(env->context(), env->family_string(), env->ipv4_string()).Check();

433-

info->Set(env->context(),

434-

env->port_string(),

435-

Integer::New(env->isolate(), port)).Check();

435+

if (info->Set(env->context(),

436+

env->address_string(),

437+

OneByteString(env->isolate(), ip))

438+

.IsNothing() ||

439+

info->Set(env->context(), env->family_string(), env->ipv4_string())

440+

.IsNothing() ||

441+

info->Set(env->context(),

442+

env->port_string(),

443+

Integer::New(env->isolate(), port))

444+

.IsNothing()) {

445+

return {};

446+

}

436447

break;

437448438449

default:

439-

info->Set(env->context(),

440-

env->address_string(),

441-

String::Empty(env->isolate())).Check();

450+

if (info->Set(env->context(),

451+

env->address_string(),

452+

String::Empty(env->isolate()))

453+

.IsNothing()) {

454+

return {};

455+

}

442456

}

443457444458

return scope.Escape(info);