Changeset 120eedd in code for dns.c


Ignore:
Timestamp:
Jun 17, 2014, 11:46:35 AM (11 years ago)
Author:
Mike Belopuhov <mike@…>
Branches:
master
Children:
e68221b
Parents:
9440414
Message:

prevent icbd_drop from freeing an icb session while dns is in progress

File:
1 edited

Legend:

Unmodified
Added
Removed
  • dns.c

    r9440414 r120eedd  
    5656                icbd_log(is, LOG_WARNING, "dns resolution failed: %s",
    5757                    gai_strerror(ar->ar_gai_errno));
     58
     59        if (ISSETF(is->flags, ICB_SF_PENDINGDROP)) {
     60                free(is);
     61                return;
     62        }
     63
     64        CLRF(is->flags, ICB_SF_DNSINPROGRESS);
    5865}
    5966
     
    6572        struct addrinfo hints;
    6673
     74        if (ISSETF(is->flags, ICB_SF_PENDINGDROP)) {
     75                free(is);
     76                return;
     77        }
     78
    6779        if (ar->ar_gai_errno == 0) {
    6880                icbd_log(is, LOG_DEBUG, "reverse dns resolved %s to %s",
     
    7385                as = getaddrinfo_async(is->hostname, NULL, &hints, NULL);
    7486                event_asr_run(as, dns_done_host, is);
    75         } else
     87        } else {
    7688                icbd_log(is, LOG_WARNING, "reverse dns resolution failed: %s",
    7789                    gai_strerror(ar->ar_gai_errno));
     90                CLRF(is->flags, ICB_SF_DNSINPROGRESS);
     91        }
    7892}
    7993
     
    86100                return;
    87101
     102        SETF(is->flags, ICB_SF_DNSINPROGRESS);
     103
    88104        if (verbose)
    89105                icbd_log(is, LOG_DEBUG, "resolving: %s", is->host);
Note: See TracChangeset for help on using the changeset viewer.