diff options
-rw-r--r-- | src/util/resolver_api.c | 32 |
1 files changed, 19 insertions, 13 deletions
diff --git a/src/util/resolver_api.c b/src/util/resolver_api.c index bd46b4fbb..b92fd6a02 100644 --- a/src/util/resolver_api.c +++ b/src/util/resolver_api.c | |||
@@ -500,11 +500,13 @@ handle_response (void *cls, | |||
500 | GNUNET_free (nret); | 500 | GNUNET_free (nret); |
501 | } | 501 | } |
502 | /* finally, make termination call */ | 502 | /* finally, make termination call */ |
503 | rh->name_callback (rh->cls, | 503 | if (GNUNET_SYSERR != rh->was_transmitted) |
504 | NULL); | 504 | rh->name_callback (rh->cls, |
505 | NULL); | ||
505 | } | 506 | } |
506 | if (NULL != rh->addr_callback) | 507 | if ( (NULL != rh->addr_callback) && |
507 | rh->addr_callback (rh->cls, | 508 | (GNUNET_SYSERR != rh->was_transmitted) ) |
509 | rh->addr_callback (rh->cls, | ||
508 | NULL, | 510 | NULL, |
509 | 0); | 511 | 0); |
510 | } | 512 | } |
@@ -637,6 +639,7 @@ numeric_resolution (void *cls) | |||
637 | (const struct sockaddr *) &v4, | 639 | (const struct sockaddr *) &v4, |
638 | sizeof (v4)); | 640 | sizeof (v4)); |
639 | if ( (rh->af == AF_UNSPEC) && | 641 | if ( (rh->af == AF_UNSPEC) && |
642 | (GNUNET_SYSERR != rh->was_transmitted) && | ||
640 | (1 == inet_pton (AF_INET6, | 643 | (1 == inet_pton (AF_INET6, |
641 | hostname, | 644 | hostname, |
642 | &v6.sin6_addr)) ) | 645 | &v6.sin6_addr)) ) |
@@ -646,9 +649,10 @@ numeric_resolution (void *cls) | |||
646 | (const struct sockaddr *) &v6, | 649 | (const struct sockaddr *) &v6, |
647 | sizeof (v6)); | 650 | sizeof (v6)); |
648 | } | 651 | } |
649 | rh->addr_callback (rh->cls, | 652 | if (GNUNET_SYSERR != rh->was_transmitted) |
650 | NULL, | 653 | rh->addr_callback (rh->cls, |
651 | 0); | 654 | NULL, |
655 | 0); | ||
652 | GNUNET_free (rh); | 656 | GNUNET_free (rh); |
653 | return; | 657 | return; |
654 | } | 658 | } |
@@ -661,9 +665,10 @@ numeric_resolution (void *cls) | |||
661 | rh->addr_callback (rh->cls, | 665 | rh->addr_callback (rh->cls, |
662 | (const struct sockaddr *) &v6, | 666 | (const struct sockaddr *) &v6, |
663 | sizeof (v6)); | 667 | sizeof (v6)); |
664 | rh->addr_callback (rh->cls, | 668 | if (GNUNET_SYSERR != rh->was_transmitted) |
665 | NULL, | 669 | rh->addr_callback (rh->cls, |
666 | 0); | 670 | NULL, |
671 | 0); | ||
667 | GNUNET_free (rh); | 672 | GNUNET_free (rh); |
668 | return; | 673 | return; |
669 | } | 674 | } |
@@ -725,9 +730,10 @@ loopback_resolution (void *cls) | |||
725 | GNUNET_break (0); | 730 | GNUNET_break (0); |
726 | break; | 731 | break; |
727 | } | 732 | } |
728 | rh->addr_callback (rh->cls, | 733 | if (GNUNET_SYSERR != rh->was_transmitted) |
729 | NULL, | 734 | rh->addr_callback (rh->cls, |
730 | 0); | 735 | NULL, |
736 | 0); | ||
731 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 737 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
732 | "Finished resolving hostname `%s'.\n", | 738 | "Finished resolving hostname `%s'.\n", |
733 | (const char *) &rh[1]); | 739 | (const char *) &rh[1]); |