diff --git a/examples/client_test.cpp b/examples/client_test.cpp index 1ff3f4beb..fbc6f7add 100644 --- a/examples/client_test.cpp +++ b/examples/client_test.cpp @@ -1785,19 +1785,32 @@ COLUMN OPTIONS std::vector tr = h.trackers(); for (lt::announce_entry const& ae : h.trackers()) { - auto best_ae = std::min_element(ae.endpoints.begin(), ae.endpoints.end() - , [](lt::announce_endpoint const& l, lt::announce_endpoint const& r) { return l.fails < r.fails; } ); - - if (pos + 1 >= terminal_height) break; - std::snprintf(str, sizeof(str), "%2d %-55s fails: %-3d (%-3d) %s %s %5d \"%s\" %s\x1b[K\n" - , ae.tier, ae.url.c_str() - , best_ae != ae.endpoints.end() ? best_ae->fails : 0, ae.fail_limit, ae.verified?"OK ":"- " - , to_string(best_ae != ae.endpoints.end() ? int(total_seconds(best_ae->next_announce - now)) : 0, 8).c_str() - , best_ae != ae.endpoints.end() && best_ae->min_announce > now ? int(total_seconds(best_ae->min_announce - now)) : 0 - , best_ae != ae.endpoints.end() && best_ae->last_error ? best_ae->last_error.message().c_str() : "" - , best_ae != ae.endpoints.end() ? best_ae->message.c_str() : ""); + std::snprintf(str, sizeof(str), "%2d %-55s %s\x1b[K\n" + , ae.tier, ae.url.c_str(), ae.verified?"OK ":"- "); out += str; pos += 1; + int idx = 0; + for (auto const& ep : ae.endpoints) + { + ++idx; + if (!ep.enabled) continue; + if (pos + 1 >= terminal_height) break; + + std::snprintf(str, sizeof(str), " [%2d] fails: %-3d (%-3d) %s %5d \"%s\" %s\x1b[K\n" + , idx + , ep.fails, ae.fail_limit + , to_string(int(total_seconds(ep.next_announce - now)), 8).c_str() + , ep.min_announce > now ? int(total_seconds(ep.min_announce - now)) : 0 + , ep.last_error ? ep.last_error.message().c_str() : "" + , ep.message.c_str()); + out += str; + pos += 1; + // we only need to show this error once, not for every + // endpoint + if (ep.last_error == boost::asio::error::host_not_found) break; + } + + if (pos + 1 >= terminal_height) break; } }