ntpd: try to avoid DNS requests *during* NTP roundtrip. +23 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
907647fb15
commit
7cb1d6ccf3
@ -166,6 +166,15 @@ set_next(ntp_peer_t *p, unsigned t)
|
|||||||
p->next_action_time = time(NULL) + t;
|
p->next_action_time = time(NULL) + t;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static len_and_sockaddr*
|
||||||
|
resolve_hostname(ntp_peer_t *p)
|
||||||
|
{
|
||||||
|
p->lsa = host2sockaddr(p->hostname, 123);
|
||||||
|
if (p->lsa)
|
||||||
|
p->dotted = xmalloc_sockaddr2dotted_noport(&p->lsa->u.sa);
|
||||||
|
return p->lsa;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
add_peers(char *s)
|
add_peers(char *s)
|
||||||
{
|
{
|
||||||
@ -174,6 +183,7 @@ add_peers(char *s)
|
|||||||
p = xzalloc(sizeof(*p));
|
p = xzalloc(sizeof(*p));
|
||||||
p->hostname = s;
|
p->hostname = s;
|
||||||
p->dotted = s;
|
p->dotted = s;
|
||||||
|
resolve_hostname(p);
|
||||||
p->fd = -1;
|
p->fd = -1;
|
||||||
p->msg.m_status = MODE_CLIENT | (NTP_VERSION << 3);
|
p->msg.m_status = MODE_CLIENT | (NTP_VERSION << 3);
|
||||||
p->trustlevel = TRUSTLEVEL_PATHETIC;
|
p->trustlevel = TRUSTLEVEL_PATHETIC;
|
||||||
@ -300,12 +310,10 @@ send_query_to_peer(ntp_peer_t *p)
|
|||||||
//TODO: big ntpd uses all IPs, not just 1st, do we need to mimic that?
|
//TODO: big ntpd uses all IPs, not just 1st, do we need to mimic that?
|
||||||
//TODO: periodically re-resolve DNS names?
|
//TODO: periodically re-resolve DNS names?
|
||||||
if (!p->lsa) {
|
if (!p->lsa) {
|
||||||
p->lsa = host2sockaddr(p->hostname, 123);
|
if (!resolve_hostname(p)) {
|
||||||
if (!p->lsa) {
|
|
||||||
set_next(p, INTERVAL_QUERY_PATHETIC);
|
set_next(p, INTERVAL_QUERY_PATHETIC);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
p->dotted = xmalloc_sockaddr2dotted_noport(&p->lsa->u.sa);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
family = p->lsa->u.sa.sa_family;
|
family = p->lsa->u.sa.sa_family;
|
||||||
|
Loading…
Reference in New Issue
Block a user