Skip to content

Commit f845ad9

Browse files
jasnelladuh95
authored andcommitted
src: improve error handling in tcp_wrap.cc
PR-URL: #57211 Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: Matthew Aitken <maitken033380023@gmail.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
1 parent cea50b7 commit f845ad9

File tree

1 file changed

+32
-18
lines changed

1 file changed

+32
-18
lines changed

src/tcp_wrap.cc

+32-18
Original file line numberDiff line numberDiff line change
@@ -390,8 +390,9 @@ MaybeLocal<Object> AddressToJS(Environment* env,
390390

391391
int port;
392392

393-
if (info.IsEmpty())
393+
if (info.IsEmpty()) {
394394
info = Object::New(env->isolate());
395+
}
395396

396397
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;
424430

425431
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;
437448

438449
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
}
443457

444458
return scope.Escape(info);

0 commit comments

Comments
 (0)