-
- if (r < qu->querylen+2) {
- newopbufused= qu->opbufused + qu->querylen + 2 - r;
- if (newopbufused > ads->opbufavail) {
- newopbufavail= ads->newopbufused<<1;
- newopbuf= realloc(newopbufavail);
- if (!newopbuf) {
- DLIST_UNLINK(ads->timew,qu);
- query_fail(ads,qu,adns_s_nolocalmem);
- return;
- }
- ads->opbuf= newopbuf;
- ads->opbufavail= newopbufavail;
- }
- if (r<2) {
- memcpy(ads->opbuf+ads->opbufused,length+r,2-r);
- ads->opbufused += (2-r);
- r= 0;
- } else {
- r -= 2;
- }
- memcpy(ads->opbuf+ads->opbufused,qu->querymsg+r,qu->querylen-r);
- ads->opbufused= newopbufused;