If a time server does not respond, the client does not time out, but waits ages for a response.
If the request is sent over UDP, it may make sense to resend the request in case the request or response is lost along the way.
$ time timeout 120 ./target/release/roughenough-client -v roughtime.int08h.com 2002 -k "AW5uAoTSTDfG5NfY1bTh08GUnOqlRb+HVhbJ3ODJvsE="
Requesting time from: "roughtime.int08h.com":2002
real 2m0.016s
user 0m0.008s
sys 0m0.012s
If a time server does not respond, the client does not time out, but waits ages for a response. If the request is sent over UDP, it may make sense to resend the request in case the request or response is lost along the way.