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);