src: improve error handling in `tcp_wrap.cc` · nodejs/node@f845ad9
@@ -390,8 +390,9 @@ MaybeLocal<Object> AddressToJS(Environment* env,
390390391391int port;
392392393-if (info.IsEmpty())
393+if (info.IsEmpty()) {
394394 info = Object::New(env->isolate());
395+ }
395396396397switch (addr->sa_family) {
397398case 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+ }
423429break;
424430425431case AF_INET:
426432 a4 = reinterpret_cast<const sockaddr_in*>(addr);
427433uv_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+ }
436447break;
437448438449default:
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 }
443457444458return scope.Escape(info);