Skip to content

Commit

Permalink
report: use uv_getnameinfo() for socket endpoints
Browse files Browse the repository at this point in the history
PR-URL: #25962
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
  • Loading branch information
cjihrig authored and addaleax committed Feb 8, 2019
1 parent c01bbc5 commit afb2d17
Showing 1 changed file with 11 additions and 24 deletions.
35 changes: 11 additions & 24 deletions src/node_report_utils.cc
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@ using node::MallocedBuffer;
void ReportEndpoints(uv_handle_t* h, std::ostringstream& out) {
struct sockaddr_storage addr_storage;
struct sockaddr* addr = reinterpret_cast<sockaddr*>(&addr_storage);
char hostbuf[NI_MAXHOST];
char portbuf[NI_MAXSERV];
uv_any_handle* handle = reinterpret_cast<uv_any_handle*>(h);
int addr_size = sizeof(addr_storage);
int rc = -1;
Expand All @@ -26,33 +24,22 @@ void ReportEndpoints(uv_handle_t* h, std::ostringstream& out) {
break;
}
if (rc == 0) {
// getnameinfo will format host and port and handle IPv4/IPv6.
rc = getnameinfo(addr,
addr_size,
hostbuf,
sizeof(hostbuf),
portbuf,
sizeof(portbuf),
NI_NUMERICSERV);
if (rc == 0) {
out << std::string(hostbuf) << ":" << std::string(portbuf);
}
// uv_getnameinfo will format host and port and handle IPv4/IPv6.
uv_getnameinfo_t local;
rc = uv_getnameinfo(h->loop, &local, nullptr, addr, NI_NUMERICSERV);

if (rc == 0)
out << local.host << ":" << local.service;

if (h->type == UV_TCP) {
// Get the remote end of the connection.
rc = uv_tcp_getpeername(&(handle->tcp), addr, &addr_size);
if (rc == 0) {
rc = getnameinfo(addr,
addr_size,
hostbuf,
sizeof(hostbuf),
portbuf,
sizeof(portbuf),
NI_NUMERICSERV);
if (rc == 0) {
out << " connected to ";
out << std::string(hostbuf) << ":" << std::string(portbuf);
}
uv_getnameinfo_t remote;
rc = uv_getnameinfo(h->loop, &remote, nullptr, addr, NI_NUMERICSERV);

if (rc == 0)
out << " connected to " << remote.host << ":" << remote.service;
} else if (rc == UV_ENOTCONN) {
out << " (not connected)";
}
Expand Down

0 comments on commit afb2d17

Please sign in to comment.