aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2013-05-21 12:58:30 +0000
committerChristian Grothoff <christian@grothoff.org>2013-05-21 12:58:30 +0000
commit115ca121950c28901af638e3fe787e7324de695d (patch)
tree2f205d375b94a4464f19f33fba771f8f207469cf /src
parenta4406e4f8c9c84f429be507d797f4ff210bb74f0 (diff)
downloadgnunet-115ca121950c28901af638e3fe787e7324de695d.tar.gz
gnunet-115ca121950c28901af638e3fe787e7324de695d.zip
keep DNS helper running if IPv6 sockets fail, then we do IPv4-only
Diffstat (limited to 'src')
-rw-r--r--src/dns/gnunet-helper-dns.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/dns/gnunet-helper-dns.c b/src/dns/gnunet-helper-dns.c
index c230ec544..f1462f8c6 100644
--- a/src/dns/gnunet-helper-dns.c
+++ b/src/dns/gnunet-helper-dns.c
@@ -311,15 +311,20 @@ set_address6 (const char *dev, const char *address, unsigned long prefix_len)
311 sa6.sin6_family = AF_INET6; 311 sa6.sin6_family = AF_INET6;
312 if (1 != inet_pton (AF_INET6, address, sa6.sin6_addr.s6_addr)) 312 if (1 != inet_pton (AF_INET6, address, sa6.sin6_addr.s6_addr))
313 { 313 {
314 fprintf (stderr, "Failed to parse address `%s': %s\n", address, 314 fprintf (stderr,
315 "Failed to parse IPv6 address `%s': %s\n",
316 address,
315 strerror (errno)); 317 strerror (errno));
316 exit (1); 318 exit (1);
317 } 319 }
318 320
319 if (-1 == (fd = socket (PF_INET6, SOCK_DGRAM, 0))) 321 if (-1 == (fd = socket (PF_INET6, SOCK_DGRAM, 0)))
320 { 322 {
321 fprintf (stderr, "Error creating socket: %s\n", strerror (errno)); 323 fprintf (stderr,
322 exit (1); 324 "Error creating IPv6 socket: %s (ignored)\n",
325 strerror (errno));
326 /* ignore error, maybe only IPv4 works on this system! */
327 return;
323 } 328 }
324 329
325 memset (&ifr, 0, sizeof (struct ifreq)); 330 memset (&ifr, 0, sizeof (struct ifreq));
@@ -404,14 +409,18 @@ set_address4 (const char *dev, const char *address, const char *mask)
404 */ 409 */
405 if (1 != inet_pton (AF_INET, address, &addr->sin_addr.s_addr)) 410 if (1 != inet_pton (AF_INET, address, &addr->sin_addr.s_addr))
406 { 411 {
407 fprintf (stderr, "Failed to parse address `%s': %s\n", address, 412 fprintf (stderr,
413 "Failed to parse IPv4 address `%s': %s\n",
414 address,
408 strerror (errno)); 415 strerror (errno));
409 exit (1); 416 exit (1);
410 } 417 }
411 418
412 if (-1 == (fd = socket (PF_INET, SOCK_DGRAM, 0))) 419 if (-1 == (fd = socket (PF_INET, SOCK_DGRAM, 0)))
413 { 420 {
414 fprintf (stderr, "Error creating socket: %s\n", strerror (errno)); 421 fprintf (stderr,
422 "Error creating IPv4 socket: %s\n",
423 strerror (errno));
415 exit (1); 424 exit (1);
416 } 425 }
417 426