*
*/
-#include <config.h>
+#include "libtest/yatlcon.h"
#include <libtest/common.h>
#include <sys/types.h>
bool lookup(const char* host)
{
- assert(host);
bool success= false;
- struct addrinfo *addrinfo= NULL;
-
- int limit= 5;
- while (limit--)
+ assert(host and host[0]);
+ if (host and host[0])
{
- int ret;
- if ((ret= getaddrinfo(host, NULL, NULL, &(addrinfo))))
+ struct addrinfo *addrinfo= NULL;
+ struct addrinfo hints;
+ memset(&hints, 0, sizeof(hints));
+ hints.ai_socktype= SOCK_STREAM;
+ hints.ai_protocol= IPPROTO_TCP;
+
+ int limit= 5;
+ while (--limit and success == false)
{
+ if (addrinfo)
+ {
+ freeaddrinfo(addrinfo);
+ addrinfo= NULL;
+ }
+
+ int ret;
+ if ((ret= getaddrinfo(host, "echo", &hints, &addrinfo)) == 0)
+ {
+ success= true;
+ break;
+ }
+
switch (ret)
{
case EAI_AGAIN:
default:
break;
}
+
+ break;
}
- else
+
+ if (addrinfo)
{
- success= true;
- break;
+ freeaddrinfo(addrinfo);
}
}
- freeaddrinfo(addrinfo);
-
return success;
}
bool check_dns()
{
+ if (valgrind_is_caller())
+ {
+ return false;
+ }
+
if (lookup("exist.gearman.info") == false)
{
return false;
if (lookup("does_not_exist.gearman.info")) // This should fail, if it passes,...
{
- return false;
+ fatal_assert("Your service provider sucks and is providing bogus DNS. You might be in an airport.");
}
return true;