ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/res.c
(Generate patch)

Comparing ircd-hybrid-7.2/src/irc_res.c (file contents):
Revision 169 by michael, Fri Oct 21 09:37:16 2005 UTC vs.
Revision 463 by db, Mon Feb 13 03:30:53 2006 UTC

# Line 762 | Line 762 | proc_answer(struct reslist *request, HEA
762   static void
763   res_readreply(fde_t *fd, void *data)
764   {
765 <  char buf[sizeof(HEADER) + MAXPACKET];
765 >  char buf[sizeof(HEADER) + MAXPACKET]
766 >        /* Sparc and alpha need 16bit-alignment for accessing header->id
767 >         * (which is uint16_t). Because of the header = (HEADER*) buf;
768 >         * lateron, this is neeeded. --FaUl
769 >         */
770 > #if defined(__sparc__) || defined(__alpha__)  
771 >          __attribute__((aligned (16)))
772 > #endif
773 >          ;
774    HEADER *header;
775    struct reslist *request = NULL;
776    struct DNSReply *reply  = NULL;
# Line 805 | Line 813 | res_readreply(fde_t *fd, void *data)
813  
814    if ((header->rcode != NO_ERRORS) || (header->ancount == 0))
815    {
816 <    if (SERVFAIL == header->rcode)
809 <    {
810 <      /*
811 <       * If a bad error was returned, we stop here and dont send
812 <       * send any more (no retries granted).
813 <       */
814 <      (*request->query->callback)(request->query->ptr, NULL);
815 <      rem_request(request);
816 <    }
817 <    else
816 >    if (NXDOMAIN == header->rcode)
817      {
818        /*
819         * If we havent already tried this, and we're looking up AAAA, try A
820         * now
821         */
823
822   #ifdef IPV6
823        if (request->state == REQ_AAAA && request->type == T_AAAA)
824        {
# Line 832 | Line 830 | res_readreply(fde_t *fd, void *data)
830        {
831          request->state = REQ_INT;
832          request->timeout += 4;
833 <        request->retries--;
833 >        request->retries--;
834          resend_query(request);
835        }
836 +      else
837   #endif
838 +      {
839 +        /*
840 +         * If a bad error was returned, stop here and don't
841 +         * send any more (no retries granted).
842 +         */
843 +        (*request->query->callback)(request->query->ptr, NULL);
844 +        rem_request(request);
845 +      }
846 +      return;
847      }
840
841    return;
848    }
849    /*
850     * If this fails there was an error decoding the received packet,

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)