struct sockaddr_in v4;
struct sockaddr_in6 v6;
size_t salen;
+ int ret;
switch (cache->af)
{
}
if (0 ==
- getnameinfo (sa, salen,
- hostname, sizeof (hostname),
- NULL,
- 0, 0))
+ (ret = getnameinfo (sa, salen,
+ hostname, sizeof (hostname),
+ NULL,
+ 0, 0)))
{
cache->addr = GNUNET_strdup (hostname);
}
+ else
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "getnameinfo failed: %s\n",
+ gai_strerror (ret));
+ }
}
#endif
{
cache->addr = GNUNET_strdup (ent->h_name);
}
+ else
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "gethostbyaddr failed: %s\n",
+ hstrerror (h_errno));
+ }
}
#endif
GNUNET_SERVER_transmit_context_append_data (tc, pos->addr,
strlen (pos->addr) + 1,
GNUNET_MESSAGE_TYPE_RESOLVER_RESPONSE);
+ else
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Reverse lookup failed\n");
GNUNET_SERVER_transmit_context_append_data (tc, NULL, 0,
GNUNET_MESSAGE_TYPE_RESOLVER_RESPONSE);
GNUNET_SERVER_transmit_context_run (tc, GNUNET_TIME_UNIT_FOREVER_REL);
if (0 != (s = getaddrinfo (hostname, NULL, &hints, &result)))
{
- GNUNET_log (GNUNET_ERROR_TYPE_INFO, _("Could not resolve `%s' (%s): %s\n"),
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ _("Could not resolve `%s' (%s): %s\n"),
hostname,
(af ==
AF_INET) ? "IPv4" : ((af == AF_INET6) ? "IPv6" : "any"),
#if HAVE_GETHOSTBYNAME2
static int
gethostbyname2_resolve (struct GNUNET_SERVER_TransmitContext *tc,
- const char *hostname, int af)
+ const char *hostname,
+ int af)
{
struct hostent *hp;
int ret1;
struct hostent *hp;
hp = GETHOSTBYNAME (hostname);
- if (hp == NULL)
+ if (NULL == hp)
{
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
- _("Could not find IP of host `%s': %s\n"), hostname,
+ _("Could not find IP of host `%s': %s\n"),
+ hostname,
hstrerror (h_errno));
return GNUNET_SYSERR;
}
if (msize < sizeof (struct GNUNET_RESOLVER_GetMessage))
{
GNUNET_break (0);
- GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
+ GNUNET_SERVER_receive_done (client,
+ GNUNET_SYSERR);
return;
}
msg = (const struct GNUNET_RESOLVER_GetMessage *) message;
size = msize - sizeof (struct GNUNET_RESOLVER_GetMessage);
direction = ntohl (msg->direction);
af = ntohl (msg->af);
- if (direction == GNUNET_NO)
+ if (GNUNET_NO == direction)
{
/* IP from hostname */
const char *hostname;
if (hostname[size - 1] != '\0')
{
GNUNET_break (0);
- GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
+ GNUNET_SERVER_receive_done (client,
+ GNUNET_SYSERR);
return;
}
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Resolver asked to look up `%s'.\n",
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Resolver asked to look up `%s'.\n",
hostname);
get_ip_from_hostname (client, hostname, af);
return;
if (size != sizeof (struct in_addr))
{
GNUNET_break (0);
- GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
+ GNUNET_SERVER_receive_done (client,
+ GNUNET_SYSERR);
return;
}
break;
if (size != sizeof (struct in6_addr))
{
GNUNET_break (0);
- GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
+ GNUNET_SERVER_receive_done (client,
+ GNUNET_SYSERR);
return;
}
break;
default:
GNUNET_break (0);
- GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
+ GNUNET_SERVER_receive_done (client,
+ GNUNET_SYSERR);
return;
}
{
ret =
(GNUNET_OK ==
- GNUNET_SERVICE_run (argc, argv, "resolver", GNUNET_SERVICE_OPTION_NONE,
+ GNUNET_SERVICE_run (argc, argv,
+ "resolver",
+ GNUNET_SERVICE_OPTION_NONE,
&run, NULL)) ? 0 : 1;
while (NULL != (pos = cache_head))
{
/*
This file is part of GNUnet.
- Copyright (C) 2009-2014 Christian Grothoff (and other contributing authors)
+ Copyright (C) 2009-2015 Christian Grothoff (and other contributing authors)
GNUnet is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
/**
* Task for reconnecting.
*/
-static struct GNUNET_SCHEDULER_Task * r_task;
+static struct GNUNET_SCHEDULER_Task *r_task;
/**
* Task ID of shutdown task; only present while we have a
* connection to the resolver service.
*/
-static struct GNUNET_SCHEDULER_Task * s_task;
+static struct GNUNET_SCHEDULER_Task *s_task;
/**
size = ntohs (msg->size);
if (size == sizeof (struct GNUNET_MessageHeader))
{
+ LOG (GNUNET_ERROR_TYPE_DEBUG,
+ "Received empty response from DNS service\n");
/* message contains not data, just header; end of replies */
/* check if request was canceled */
if (GNUNET_SYSERR != rh->was_transmitted)
{
+ /* no reverse lookup was successful, return IP as string */
if (NULL != rh->name_callback)
+ {
+ if (GNUNET_NO == rh->received_response)
+ {
+ nret = no_resolve (rh->af,
+ &rh[1],
+ rh->data_len);
+ rh->name_callback (rh->cls, nret);
+ GNUNET_free (nret);
+ }
+ /* finally, make termination call */
rh->name_callback (rh->cls,
NULL);
+ }
if (NULL != rh->addr_callback)
rh->addr_callback (rh->cls,
NULL,
reconnect ();
return;
}
+ LOG (GNUNET_ERROR_TYPE_DEBUG,
+ "Received IP from DNS service\n");
if (GNUNET_SYSERR != rh->was_transmitted)
rh->addr_callback (rh->cls,
sa,
* @return handle that can be used to cancel the request, NULL on error
*/
struct GNUNET_RESOLVER_RequestHandle *
-GNUNET_RESOLVER_ip_get (const char *hostname, int af,
+GNUNET_RESOLVER_ip_get (const char *hostname,
+ int af,
struct GNUNET_TIME_Relative timeout,
GNUNET_RESOLVER_AddressCallback callback,
void *callback_cls)
switch (sa->sa_family)
{
case AF_INET:
+ GNUNET_assert (salen == sizeof (struct sockaddr_in));
ip_len = sizeof (struct in_addr);
ip = &((const struct sockaddr_in*)sa)->sin_addr;
break;
case AF_INET6:
+ GNUNET_assert (salen == sizeof (struct sockaddr_in6));
ip_len = sizeof (struct in6_addr);
ip = &((const struct sockaddr_in6*)sa)->sin6_addr;
break;