- }
- GNUNET_assert (hp->h_addrtype == domain);
- if (domain == AF_INET)
- {
- GNUNET_assert (hp->h_length == sizeof (struct in_addr));
- memset (&a4, 0, sizeof (a4));
- a4.sin_family = AF_INET;
-#if HAVE_SOCKADDR_IN_SIN_LEN
- a4.sin_len = (u_char) sizeof (struct sockaddr_in);
-#endif
- memcpy (&a4.sin_addr, hp->h_addr_list[0], hp->h_length);
- GNUNET_SERVER_transmit_context_append_data (tc,
- &a4,
- sizeof (a4),
- GNUNET_MESSAGE_TYPE_RESOLVER_RESPONSE);
- }
- else
- {
- GNUNET_assert (hp->h_length == sizeof (struct in6_addr));
- memset (&a6, 0, sizeof (a6));
- a6.sin6_family = AF_INET6;
-#if HAVE_SOCKADDR_IN_SIN_LEN
- a6.sin6_len = (u_char) sizeof (struct sockaddr_in6);
-#endif
- memcpy (&a6.sin6_addr, hp->h_addr_list[0], hp->h_length);
- GNUNET_SERVER_transmit_context_append_data (tc,
- &a6,
- sizeof (a6),
- GNUNET_MESSAGE_TYPE_RESOLVER_RESPONSE);
- }
+ return GNUNET_NO;
+ }
+ hp = gethostbyname2 (hostname, af);
+ if (hp == NULL)
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ _("Could not find IP of host `%s': %s\n"), hostname,
+ hstrerror (h_errno));
+ return GNUNET_SYSERR;
+ }
+ GNUNET_assert (hp->h_addrtype == af);
+ switch (af)
+ {
+ case AF_INET:
+ GNUNET_assert (hp->h_length == sizeof (struct in_addr));
+ GNUNET_SERVER_transmit_context_append_data (tc,
+ hp->h_addr_list[0],
+ hp->h_length,
+ GNUNET_MESSAGE_TYPE_RESOLVER_RESPONSE);
+ break;
+ case AF_INET6:
+ GNUNET_assert (hp->h_length == sizeof (struct in6_addr));
+ GNUNET_SERVER_transmit_context_append_data (tc,
+ hp->h_addr_list[0],
+ hp->h_length,
+ GNUNET_MESSAGE_TYPE_RESOLVER_RESPONSE);
+ break;
+ default:
+ GNUNET_break (0);
+ return GNUNET_SYSERR;
+ }