14 void adns__procdgram(adns_state ads
, const byte
*dgram
, int len
, int serv
) {
18 adns__diag(ads
,serv
,"received datagram too short for message header (%d)",len
);
30 adns__diag(ads
,serv
,"server sent us a query, not a response");
34 adns__diag(ads
,serv
,"server sent us unknown opcode %d (wanted 0=QUERY)",
39 adns__diag(ads
,serv
,"server sent reply without quoting our question");
41 } else if (qdcount
>1) {
42 adns__diag(ads
,serv
,"server claimed to answer %d questions with one message",
46 for (qu
= ads
->timew
; qu
= nqu
; qu
++) {
48 if (qu
->id
!= id
) continue;
49 if (len
< qu
->querylen
) continue;
50 if (memcmp(qu
->querymsg
+12,rpp
,qu
->querylen
-12)) continue;
54 adns__debug(ads
,serv
,"reply not found (id=%02x)",id
);
58 adns__diag(ads
,serv
,"server is not willing to do recursive lookups for us");
59 adns__query_fail(ads
,qu
,adns_s_norecurse
);
63 adns__diag(ads
,serv
,"server thinks we didn't ask for recursive lookup");
64 adns__query_fail(ads
,qu
,adns_s_serverfaulty
);
70 case 1: /* Format error */
71 adns__diag(ads
,serv
,"server cannot understand our query (Format Error)");
72 adns__query_fail(ads
,qu
,adns_s_serverfaulty
);
74 case 2: /* Server failure */
75 adns__query_fail(ads
,qu
,adns_s_serverfailure
);
77 case 3: /* Name Error */
82 adns__diag(ads
,serv
,"received datagram size %d",len
);