- while (p) {
- bzero(&p->dest, sizeof(p->dest));
- p->dest.sin_family = AF_INET;
- if ((p->dest.sin_addr.s_addr = get_host_addr(p->name)) <= 0) {
- fprintf(stderr, "WARN: Can't resolve host. Skipping client %s.\n", p->name);
- p->socket=-1;
- } else {
- if ((p->socket = socket(AF_INET,SOCK_RAW,proto->p_proto)) < 0) {
- fprintf(stderr, "WARN: Can't create socket. Skipping client %s.\n", p->name);
- p->socket=-1;
- } else {
- if (ok == 0) send_delay = p->ping_interval;
- else send_delay = gcd(send_delay, p->ping_interval);
- ok++;
- }
+ assert(first_host_in_list);
+ host = first_host_in_list;
+ while (host) {
+ struct host_entry * next_host = host->next;
+ bzero(&host->dest, sizeof(host->dest));
+ host->dest.sin_family = AF_INET;
+ if (!(host->dest.sin_addr.s_addr = get_host_addr(host->name))) {
+ fprintf(stderr, "WARN: Removing unresolvable host %s from list.\n", host->name);
+ remove_host_from_list(host);