break;
default:
GNUNET_break (0);
+ GNUNET_NETWORK_socket_close (ret);
return NULL;
}
sa->sa_family = af;
srca4->sin_port = udp->source_port;
dsta4->sin_port = udp->destination_port;
#if HAVE_SOCKADDR_IN_SIN_LEN
- srca4->sin_len = sizeof (struct sockaddr_in))
+ srca4->sin_len = sizeof (struct sockaddr_in);
dsta4->sin_len = sizeof (struct sockaddr_in);
#endif
}
struct sockaddr_in6 v6;
struct sockaddr *so;
socklen_t salen;
-
+
if (dlen < sizeof (struct GNUNET_TUN_DnsHeader))
{
GNUNET_break_op (0);
memcpy (buf, dns, dlen);
dout = (struct GNUNET_TUN_DnsHeader*) buf;
dout->id = ts->my_id;
-
memset (&v4, 0, sizeof (v4));
memset (&v6, 0, sizeof (v6));
if (1 == inet_pton (AF_INET, dns_exit, &v4.sin_addr))
#endif
so = (struct sockaddr *) &v4;
ts->dnsout = get_request_socket (AF_INET);
- }
- if (1 == inet_pton (AF_INET6, dns_exit, &v6.sin6_addr))
+ }
+ else if (1 == inet_pton (AF_INET6, dns_exit, &v6.sin6_addr))
{
salen = sizeof (v6);
v6.sin6_family = AF_INET6;
so = (struct sockaddr *) &v6;
ts->dnsout = get_request_socket (AF_INET6);
}
+ else
+ {
+ GNUNET_break (0);
+ return GNUNET_SYSERR;
+ }
if (NULL == ts->dnsout)
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
&dns_exit)) ||
( (1 != inet_pton (AF_INET, dns_exit, &dns_exit4)) &&
(1 != inet_pton (AF_INET6, dns_exit, &dns_exit6)) ) ) )
+ {
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
_("Configured to provide DNS exit, but no valid DNS server configured!\n"));
+ GNUNET_free_non_null (dns_exit);
+ dns_exit = NULL;
+ }
helper_argv[0] = GNUNET_strdup ("gnunet-dns");
if (GNUNET_SYSERR ==