gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r7057 - GNUnet/src/util/network


From: gnunet
Subject: [GNUnet-SVN] r7057 - GNUnet/src/util/network
Date: Thu, 5 Jun 2008 08:16:12 -0600 (MDT)

Author: grothoff
Date: 2008-06-05 08:16:09 -0600 (Thu, 05 Jun 2008)
New Revision: 7057

Modified:
   GNUnet/src/util/network/dns.c
Log:
only define used symbols

Modified: GNUnet/src/util/network/dns.c
===================================================================
--- GNUnet/src/util/network/dns.c       2008-06-05 13:37:22 UTC (rev 7056)
+++ GNUnet/src/util/network/dns.c       2008-06-05 14:16:09 UTC (rev 7057)
@@ -298,49 +298,106 @@
   return ret;
 }
 
-#if HAVE_GETHOSTBYNAME
-static int
-gethostbyname_resolve (struct GNUNET_GE_Context *ectx,
-                       const char *hostname,
-                       struct sockaddr **sa, socklen_t * socklen)
+
+#if HAVE_GETADDRINFO
+int
+getaddrinfo_resolve (struct GNUNET_GE_Context *ectx,
+                     const char *hostname,
+                     int domain, struct sockaddr **sa, socklen_t * socklen)
 {
-  struct hostent *hp;
-  struct sockaddr_in *addr;
+  int s;
+  struct addrinfo hints;
+  struct addrinfo *result;
+  struct in6_addr * out;
+ 
+  memset (&hints, 0, sizeof (struct addrinfo));
+// FIXME in PlibC
+#ifndef MINGW
+  hints.ai_family = domain;
+#else
+  hints.ai_family = AF_INET;
+#endif
+  hints.ai_socktype = 0;
+  hints.ai_protocol = 0;        /* Any protocol */
+  hints.ai_canonname = NULL;
+  hints.ai_addr = NULL;
+  hints.ai_next = NULL;
 
-  hp = GETHOSTBYNAME (hostname);
-  if (hp == NULL)
+  if (0 != (s = getaddrinfo (hostname, NULL, &hints, &result)))
     {
+      if (domain == AF_INET6)
+       {
+         /* try v4 resolving + mapping */
+         hints.ai_family = AF_INET;
+         if (0 == getaddrinfo (hostname, NULL, &hints, &result))
+           {         
+             GNUNET_GE_ASSERT(NULL, result->ai_addrlen == sizeof(struct 
sockaddr_in));
+             if (NULL == *sa)
+               {                 
+                 *sa = GNUNET_malloc (sizeof(struct sockaddr_in6));
+                 *socklen = sizeof(struct sockaddr_in6);
+                 memset(*sa, 0, sizeof(struct sockaddr_in6));
+                 (*sa)->sa_family = AF_INET6;
+                 out = &((struct sockaddr_in6*)*sa)->sin6_addr;
+                 memcpy (*sa, result->ai_addr, result->ai_addrlen);            
  
+                 ((unsigned int *) out)[2] = htonl (0xffff);
+                 memcpy (&((char *) out)[sizeof (struct in6_addr) -
+                                         sizeof (struct in_addr)],
+                         &result->ai_addr,
+                         sizeof (struct in_addr)); 
+                 freeaddrinfo (result);
+                 return GNUNET_OK;
+               }
+             if (result->ai_addrlen > *socklen)
+               {
+                 freeaddrinfo (result);
+                 return GNUNET_SYSERR;
+               }
+             *socklen = sizeof(struct sockaddr_in6);
+             memset(*sa, 0, sizeof(struct sockaddr_in6));
+             (*sa)->sa_family = AF_INET6;
+             out = &((struct sockaddr_in6*)*sa)->sin6_addr;
+             memcpy (*sa, result->ai_addr, result->ai_addrlen);                
  
+             ((unsigned int *) out)[2] = htonl (0xffff);
+             memcpy (&((char *) out)[sizeof (struct in6_addr) -
+                                     sizeof (struct in_addr)],
+                     &result->ai_addr,
+                     sizeof (struct in_addr)); 
+             freeaddrinfo (result);
+             return GNUNET_OK;
+           }
+       }
       GNUNET_GE_LOG (ectx,
-                     GNUNET_GE_WARNING | GNUNET_GE_ADMIN | GNUNET_GE_BULK,
-                     _("Could not find IP of host `%s': %s\n"),
-                     hostname, hstrerror (h_errno));
+                     GNUNET_GE_WARNING | GNUNET_GE_USER |
+                     GNUNET_GE_BULK,
+                     _("Could not resolve `%s' (%s): %s\n"), hostname,
+                     (domain ==
+                      AF_INET) ? "IPv4" : ((domain ==
+                                            AF_INET6) ? "IPv6" : "any"),
+                     gai_strerror (s));
       return GNUNET_SYSERR;
     }
-  if (hp->h_addrtype != AF_INET)
-    {
-      GNUNET_GE_BREAK (ectx, 0);
-      return GNUNET_SYSERR;
-    }
-  GNUNET_GE_ASSERT (NULL, hp->h_length == sizeof (struct in_addr));
+  if (result == NULL)
+    return GNUNET_SYSERR;
   if (NULL == *sa)
     {
-      *sa = GNUNET_malloc (sizeof (struct sockaddr_in));
-      memset (*sa, 0, sizeof (struct sockaddr_in));
-      *socklen = sizeof (struct sockaddr_in);
+      *sa = GNUNET_malloc (result->ai_addrlen);
+      *socklen = result->ai_addrlen;
+      memcpy (*sa, result->ai_addr, result->ai_addrlen);
+      freeaddrinfo (result);
+      return GNUNET_OK;
     }
-  else
+  if (result->ai_addrlen > *socklen)
     {
-      if (sizeof (struct sockaddr_in) > *socklen)
-        return GNUNET_SYSERR;
-      *socklen = sizeof (struct sockaddr_in);
+      freeaddrinfo (result);
+      return GNUNET_SYSERR;
     }
-  addr = (struct sockaddr_in *) *sa;
-  memset (addr, 0, sizeof (struct sockaddr_in));
-  addr->sin_family = AF_INET;
-  memcpy (&addr->sin_addr, hp->h_addr_list[0], hp->h_length);
+  *socklen = result->ai_addrlen;
+  memcpy (*sa, result->ai_addr, result->ai_addrlen);
+  freeaddrinfo (result);
   return GNUNET_OK;
 }
-#endif
+#else
 
 #if HAVE_GETHOSTBYNAME2
 static int
@@ -416,107 +473,53 @@
     }
   return GNUNET_OK;
 }
-#endif
+#else
 
-#if HAVE_GETADDRINFO
-int
-getaddrinfo_resolve (struct GNUNET_GE_Context *ectx,
-                     const char *hostname,
-                     int domain, struct sockaddr **sa, socklen_t * socklen)
+#if HAVE_GETHOSTBYNAME
+static int
+gethostbyname_resolve (struct GNUNET_GE_Context *ectx,
+                       const char *hostname,
+                       struct sockaddr **sa, socklen_t * socklen)
 {
-  int s;
-  struct addrinfo hints;
-  struct addrinfo *result;
-  struct in6_addr * out;
- 
-  memset (&hints, 0, sizeof (struct addrinfo));
-// FIXME in PlibC
-#ifndef MINGW
-  hints.ai_family = domain;
-#else
-  hints.ai_family = AF_INET;
-#endif
-  hints.ai_socktype = 0;
-  hints.ai_protocol = 0;        /* Any protocol */
-  hints.ai_canonname = NULL;
-  hints.ai_addr = NULL;
-  hints.ai_next = NULL;
+  struct hostent *hp;
+  struct sockaddr_in *addr;
 
-  if (0 != (s = getaddrinfo (hostname, NULL, &hints, &result)))
+  hp = GETHOSTBYNAME (hostname);
+  if (hp == NULL)
     {
-      if (domain == AF_INET6)
-       {
-         /* try v4 resolving + mapping */
-         hints.ai_family = AF_INET;
-         if (0 == getaddrinfo (hostname, NULL, &hints, &result))
-           {         
-             GNUNET_GE_ASSERT(NULL, result->ai_addrlen == sizeof(struct 
sockaddr_in));
-             if (NULL == *sa)
-               {                 
-                 *sa = GNUNET_malloc (sizeof(struct sockaddr_in6));
-                 *socklen = sizeof(struct sockaddr_in6);
-                 memset(*sa, 0, sizeof(struct sockaddr_in6));
-                 (*sa)->sa_family = AF_INET6;
-                 out = &((struct sockaddr_in6*)*sa)->sin6_addr;
-                 memcpy (*sa, result->ai_addr, result->ai_addrlen);            
  
-                 ((unsigned int *) out)[2] = htonl (0xffff);
-                 memcpy (&((char *) out)[sizeof (struct in6_addr) -
-                                         sizeof (struct in_addr)],
-                         &result->ai_addr,
-                         sizeof (struct in_addr)); 
-                 freeaddrinfo (result);
-                 return GNUNET_OK;
-               }
-             if (result->ai_addrlen > *socklen)
-               {
-                 freeaddrinfo (result);
-                 return GNUNET_SYSERR;
-               }
-             *socklen = sizeof(struct sockaddr_in6);
-             memset(*sa, 0, sizeof(struct sockaddr_in6));
-             (*sa)->sa_family = AF_INET6;
-             out = &((struct sockaddr_in6*)*sa)->sin6_addr;
-             memcpy (*sa, result->ai_addr, result->ai_addrlen);                
  
-             ((unsigned int *) out)[2] = htonl (0xffff);
-             memcpy (&((char *) out)[sizeof (struct in6_addr) -
-                                     sizeof (struct in_addr)],
-                     &result->ai_addr,
-                     sizeof (struct in_addr)); 
-             freeaddrinfo (result);
-             return GNUNET_OK;
-           }
-       }
       GNUNET_GE_LOG (ectx,
-                     GNUNET_GE_WARNING | GNUNET_GE_USER |
-                     GNUNET_GE_BULK,
-                     _("Could not resolve `%s' (%s): %s\n"), hostname,
-                     (domain ==
-                      AF_INET) ? "IPv4" : ((domain ==
-                                            AF_INET6) ? "IPv6" : "any"),
-                     gai_strerror (s));
+                     GNUNET_GE_WARNING | GNUNET_GE_ADMIN | GNUNET_GE_BULK,
+                     _("Could not find IP of host `%s': %s\n"),
+                     hostname, hstrerror (h_errno));
       return GNUNET_SYSERR;
     }
-  if (result == NULL)
-    return GNUNET_SYSERR;
+  if (hp->h_addrtype != AF_INET)
+    {
+      GNUNET_GE_BREAK (ectx, 0);
+      return GNUNET_SYSERR;
+    }
+  GNUNET_GE_ASSERT (NULL, hp->h_length == sizeof (struct in_addr));
   if (NULL == *sa)
     {
-      *sa = GNUNET_malloc (result->ai_addrlen);
-      *socklen = result->ai_addrlen;
-      memcpy (*sa, result->ai_addr, result->ai_addrlen);
-      freeaddrinfo (result);
-      return GNUNET_OK;
+      *sa = GNUNET_malloc (sizeof (struct sockaddr_in));
+      memset (*sa, 0, sizeof (struct sockaddr_in));
+      *socklen = sizeof (struct sockaddr_in);
     }
-  if (result->ai_addrlen > *socklen)
+  else
     {
-      freeaddrinfo (result);
-      return GNUNET_SYSERR;
+      if (sizeof (struct sockaddr_in) > *socklen)
+        return GNUNET_SYSERR;
+      *socklen = sizeof (struct sockaddr_in);
     }
-  *socklen = result->ai_addrlen;
-  memcpy (*sa, result->ai_addr, result->ai_addrlen);
-  freeaddrinfo (result);
+  addr = (struct sockaddr_in *) *sa;
+  memset (addr, 0, sizeof (struct sockaddr_in));
+  addr->sin_family = AF_INET;
+  memcpy (&addr->sin_addr, hp->h_addr_list[0], hp->h_length);
   return GNUNET_OK;
 }
 #endif
+#endif
+#endif
 
 
 /**





reply via email to

[Prev in Thread] Current Thread [Next in Thread]