From: Florian Forster Date: Mon, 12 Jun 2006 20:46:08 +0000 (+0200) Subject: Reset the address-family to `AF_UNSPEC' before setting the source address. X-Git-Tag: liboping-0.3.0~8 X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=c08528de0a95743ef18df09e50356f35b2441b88;hp=b827d58ef4e6ab7a53287942a9603287d42e5325;p=liboping.git Reset the address-family to `AF_UNSPEC' before setting the source address. In >90% of all cases you will pass an IP-address to that option anyway. After the address has been looked up, set `obj->addrfamily' accordingly. --- diff --git a/src/liboping.c b/src/liboping.c index d74659f..9fad0c2 100644 --- a/src/liboping.c +++ b/src/liboping.c @@ -890,9 +890,14 @@ int ping_setopt (pingobj_t *obj, int option, void *value) struct addrinfo ai_hints; struct addrinfo *ai_list; int status; - +#if WITH_DEBUG + if (obj->addrfamily != AF_UNSPEC) + { + dprintf ("Resetting obj->addrfamily to AF_UNSPEC.\n"); + } +#endif memset ((void *) &ai_hints, '\0', sizeof (ai_hints)); - ai_hints.ai_family = obj->addrfamily; + ai_hints.ai_family = obj->addrfamily = AF_UNSPEC; #if defined(AI_ADDRCONFIG) ai_hints.ai_flags = AI_ADDRCONFIG; #endif @@ -930,6 +935,7 @@ int ping_setopt (pingobj_t *obj, int option, void *value) memcpy ((void *) obj->srcaddr, (const void *) ai_list->ai_addr, ai_list->ai_addrlen); obj->srcaddrlen = ai_list->ai_addrlen; + obj->addrfamily = ai_list->ai_family; freeaddrinfo (ai_list); } /* case PING_OPT_SOURCE */