diff --git a/traceroute.cc b/traceroute.cc index d7c4d6b22..8740777fb 100644 --- a/traceroute.cc +++ b/traceroute.cc @@ -1012,10 +1012,12 @@ Traceroute::outputTarget(Target * t) { } log_write(LOG_PLAIN, "%s", Tbl->printableTable(NULL)); - if (tg->getState() == G_DEAD_TTL) + if (tg->getState() == G_DEAD_TTL) { log_write(LOG_PLAIN, "! maximum TTL reached (50)\n"); - else if (!tg->gotReply || (tp && (tp->ipreplysrc.s_addr != tg->ipdst))) - log_write(LOG_PLAIN, "! destination not reached (%s)\n", inet_ntoa(tp->ipdst)); + } else if (!tg->gotReply || (tp && (tp->ipreplysrc.s_addr != tg->ipdst))) { + struct in_addr addr = { tg->ipdst }; + log_write(LOG_PLAIN, "! destination not reached (%s)\n", inet_ntoa(addr)); + } log_flush(LOG_PLAIN); delete Tbl; @@ -1082,8 +1084,10 @@ Traceroute::outputXMLTrace(TraceGroup * tg) { if (tg->getState() == G_DEAD_TTL) log_write(LOG_XML, "\n"); - else if (!tg->gotReply || (tp && (tp->ipreplysrc.s_addr != tg->ipdst))) - log_write(LOG_XML, "\n", inet_ntoa(tp->ipdst)); + else if (!tg->gotReply || (tp && (tp->ipreplysrc.s_addr != tg->ipdst))) { + addr.s_addr = tg->ipdst; + log_write(LOG_XML, "\n", inet_ntoa(addr)); + } /* traceroute XML footer */ log_write(LOG_XML, "\n");