v6.sin6_len = sizeof(v6);
#endif
/* first, check if this is a numeric address */
- if ( ( (domain == AF_UNSPEC) ||(domain == AF_INET) ) &&
+ if ( ( (domain == AF_UNSPEC) || (domain == AF_INET) ) &&
(0 == inet_pton (AF_INET,
hostname,
&v4.sin_addr)) )
callback (callback_cls,
(const struct sockaddr*) &v4,
sizeof(v4));
- callback (callback_cls, NULL, 0);
+ if ( (domain == AF_UNSPEC) &&
+ (0 == inet_pton (AF_INET6,
+ hostname,
+ &v6.sin6_addr)) )
+ {
+ /* this can happen on some systems IF "hostname" is "localhost" */
+ callback (callback_cls,
+ (const struct sockaddr*) &v6,
+ sizeof(v6));
+ }
+ callback (callback_cls, NULL, 0);
return;
}
if ( ( (domain == AF_UNSPEC) ||(domain == AF_INET) ) &&