source: branches/backfire/package/busybox/patches/921-ntpd_delayed_resolve.patch @ 28795

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

[backfire] busybox: backport r28794

File size: 1.4 KB
  • networking/ntpd.c

    a b typedef struct { 
    200200typedef struct { 
    201201        len_and_sockaddr *p_lsa; 
    202202        char             *p_dotted; 
     203        char             *p_hostname; 
    203204        /* when to send new query (if p_fd == -1) 
    204205         * or when receive times out (if p_fd >= 0): */ 
    205206        int              p_fd; 
    add_peers(char *s) 
    628629        peer_t *p; 
    629630 
    630631        p = xzalloc(sizeof(*p)); 
    631         p->p_lsa = xhost2sockaddr(s, 123); 
    632         p->p_dotted = xmalloc_sockaddr2dotted_noport(&p->p_lsa->u.sa); 
     632        p->p_hostname = s; 
     633        p->p_lsa = NULL; 
     634        p->p_dotted = NULL; 
    633635        p->p_fd = -1; 
    634636        p->p_xmt_msg.m_status = MODE_CLIENT | (NTP_VERSION << 3); 
    635637        p->next_action_time = G.cur_time; /* = set_next(p, 0); */ 
    send_query_to_peer(peer_t *p) 
    678680         * 
    679681         * Uncomment this and use strace to see it in action: 
    680682         */ 
     683 
     684        /* See if the peer hostname already resolved yet, if not, retry to resolv and return on failure */ 
     685        if (!p->p_lsa) 
     686        { 
     687                p->p_lsa = host2sockaddr(p->p_hostname, 123); 
     688 
     689                if (p->p_lsa) 
     690                { 
     691                        p->p_dotted = xmalloc_sockaddr2dotted_noport(&p->p_lsa->u.sa); 
     692                        VERB1 bb_error_msg("resolved peer %s to %s", p->p_hostname, p->p_dotted); 
     693                } 
     694                else 
     695                { 
     696                        set_next(p, RETRY_INTERVAL); 
     697                        VERB1 bb_error_msg("could not resolve peer %s, skipping", p->p_hostname); 
     698                        return; 
     699                } 
     700        } 
     701 
    681702#define PROBE_LOCAL_ADDR /* { len_and_sockaddr lsa; lsa.len = LSA_SIZEOF_SA; getsockname(p->query.fd, &lsa.u.sa, &lsa.len); } */ 
    682703 
    683704        if (p->p_fd == -1) { 
Note: See TracBrowser for help on using the repository browser.