source: trunk/package/busybox/patches/610-ntpd_delayed_resolve.patch @ 28794

Last change on this file since 28794 was 28794, checked in by jow, 5 years ago

[package] busybox: ntpd: indefinitely try to resolve peer addresses (#10361)

File size: 1.4 KB
  • networking/ntpd.c

    a b typedef struct { 
    216216typedef struct { 
    217217        len_and_sockaddr *p_lsa; 
    218218        char             *p_dotted; 
     219        char             *p_hostname; 
    219220        /* when to send new query (if p_fd == -1) 
    220221         * or when receive times out (if p_fd >= 0): */ 
    221222        int              p_fd; 
    add_peers(char *s) 
    646647        peer_t *p; 
    647648 
    648649        p = xzalloc(sizeof(*p)); 
    649         p->p_lsa = xhost2sockaddr(s, 123); 
    650         p->p_dotted = xmalloc_sockaddr2dotted_noport(&p->p_lsa->u.sa); 
     650        p->p_hostname = s; 
     651        p->p_lsa = NULL; 
     652        p->p_dotted = NULL; 
    651653        p->p_fd = -1; 
    652654        p->p_xmt_msg.m_status = MODE_CLIENT | (NTP_VERSION << 3); 
    653655        p->next_action_time = G.cur_time; /* = set_next(p, 0); */ 
    send_query_to_peer(peer_t *p) 
    696698         * 
    697699         * Uncomment this and use strace to see it in action: 
    698700         */ 
     701 
     702        /* See if the peer hostname already resolved yet, if not, retry to resolv and return on failure */ 
     703        if (!p->p_lsa) 
     704        { 
     705                p->p_lsa = host2sockaddr(p->p_hostname, 123); 
     706 
     707                if (p->p_lsa) 
     708                { 
     709                        p->p_dotted = xmalloc_sockaddr2dotted_noport(&p->p_lsa->u.sa); 
     710                        VERB1 bb_error_msg("resolved peer %s to %s", p->p_hostname, p->p_dotted); 
     711                } 
     712                else 
     713                { 
     714                        set_next(p, RETRY_INTERVAL); 
     715                        VERB1 bb_error_msg("could not resolve peer %s, skipping", p->p_hostname); 
     716                        return; 
     717                } 
     718        } 
     719 
    699720#define PROBE_LOCAL_ADDR /* { len_and_sockaddr lsa; lsa.len = LSA_SIZEOF_SA; getsockname(p->query.fd, &lsa.u.sa, &lsa.len); } */ 
    700721 
    701722        if (p->p_fd == -1) { 
Note: See TracBrowser for help on using the repository browser.