Skip to content

Commit 5a47d7e

Browse files
committed
agents: fix crash in StatsDAgent
With some specific udp send errors, it's not possible to retrieve the peername. Handle this case to avoid crashes. Fixes: #31 PR-URL: #32 Reviewed-by: Trevor Norris <trev.norris@gmail.com>
1 parent b2c1bb3 commit 5a47d7e

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

agents/statsd/src/statsd_agent.cc

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -264,9 +264,13 @@ void StatsDUdp::write_cb_(nsuv::ns_udp_send* req, int status, StatsDUdp* udp) {
264264
struct sockaddr_storage ss;
265265
struct sockaddr* addr = reinterpret_cast<struct sockaddr*>(&ss);
266266
int len = sizeof(ss);
267-
ASSERT_EQ(0, uv_udp_getpeername(req->handle(), addr, &len));
268-
Debug("Error '%s' sending data to: %s.\n",
269-
uv_err_name(status), addr_to_string(addr).c_str());
267+
int r = uv_udp_getpeername(req->handle(), addr, &len);
268+
if (r == 0) {
269+
Debug("Error '%s' sending data to: %s.\n",
270+
uv_err_name(status), addr_to_string(addr).c_str());
271+
} else {
272+
Debug("Error '%s' sending data to\n", uv_err_name(status));
273+
}
270274
}
271275

272276
udp_req_data_tup* req_data = req->get_data<udp_req_data_tup>();

0 commit comments

Comments
 (0)