[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r35877 - gnunet/src/util
From: |
gnunet |
Subject: |
[GNUnet-SVN] r35877 - gnunet/src/util |
Date: |
Sun, 7 Jun 2015 19:57:19 +0200 |
Author: grothoff
Date: 2015-06-07 19:57:19 +0200 (Sun, 07 Jun 2015)
New Revision: 35877
Modified:
gnunet/src/util/gnunet-service-resolver.c
gnunet/src/util/resolver_api.c
Log:
-return IP in dotted decimal if reverse lookup fails
Modified: gnunet/src/util/gnunet-service-resolver.c
===================================================================
--- gnunet/src/util/gnunet-service-resolver.c 2015-06-07 17:55:39 UTC (rev
35876)
+++ gnunet/src/util/gnunet-service-resolver.c 2015-06-07 17:57:19 UTC (rev
35877)
@@ -101,6 +101,7 @@
struct sockaddr_in v4;
struct sockaddr_in6 v6;
size_t salen;
+ int ret;
switch (cache->af)
{
@@ -131,13 +132,19 @@
}
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
@@ -160,6 +167,12 @@
{
cache->addr = GNUNET_strdup (ent->h_name);
}
+ else
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "gethostbyaddr failed: %s\n",
+ hstrerror (h_errno));
+ }
}
#endif
@@ -269,6 +282,9 @@
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);
@@ -307,7 +323,8 @@
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"),
@@ -354,7 +371,8 @@
#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;
@@ -417,10 +435,11 @@
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;
}
@@ -497,7 +516,8 @@
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;
@@ -504,7 +524,7 @@
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;
@@ -513,10 +533,12 @@
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;
@@ -528,7 +550,8 @@
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;
@@ -536,13 +559,15 @@
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;
}
{
@@ -590,7 +615,9 @@
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))
{
Modified: gnunet/src/util/resolver_api.c
===================================================================
--- gnunet/src/util/resolver_api.c 2015-06-07 17:55:39 UTC (rev 35876)
+++ gnunet/src/util/resolver_api.c 2015-06-07 17:57:19 UTC (rev 35877)
@@ -1,6 +1,6 @@
/*
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
@@ -78,13 +78,13 @@
/**
* 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;
/**
@@ -401,13 +401,27 @@
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,
@@ -495,6 +509,8 @@
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,
@@ -810,7 +826,8 @@
* @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)
@@ -938,10 +955,12 @@
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;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r35877 - gnunet/src/util,
gnunet <=