Updated from BIND-4.9.3-BETA27.
authorRoland McGrath <roland@gnu.org>
Thu, 7 Dec 1995 19:37:55 +0000 (19:37 +0000)
committerRoland McGrath <roland@gnu.org>
Thu, 7 Dec 1995 19:37:55 +0000 (19:37 +0000)
resolv/res_comp.c
resolv/res_debug.c
resolv/res_send.c

index aa6afa3..1342205 100644 (file)
@@ -116,7 +116,7 @@ dn_expand(msg, eomorig, comp_dn, exp_dn, length)
                                return (-1);
                        checked += n + 1;
                        while (--n >= 0) {
-                               if ((c = *cp++) == '.') {
+                               if (((c = *cp++) == '.') || (c == '\\')) {
                                        if (dn + n + 2 >= eom)
                                                return (-1);
                                        *dn++ = '\\';
index 602042e..c5e68e3 100644 (file)
@@ -309,6 +309,7 @@ __fp_nquery(msg, len, file)
                        ntohs(hp->id));
                putc('\n', file);
        }
+       if ((!_res.pfcode) || (_res.pfcode & RES_PRF_HEADX))
        putc(';', file);
        if ((!_res.pfcode) || (_res.pfcode & RES_PRF_HEAD2)) {
                fprintf(file, "; flags:");
@@ -340,9 +341,21 @@ __fp_nquery(msg, len, file)
                if ((!_res.pfcode) || (_res.pfcode & RES_PRF_QUES))
                        fprintf(file, ";; QUESTIONS:\n");
                while (--n >= 0) {
+                       if ((!_res.pfcode) || (_res.pfcode & RES_PRF_QUES))
                        fprintf(file, ";;\t");
                        TruncTest(cp);
+                       if ((!_res.pfcode) || (_res.pfcode & RES_PRF_QUES))
                        cp = p_cdnname(cp, msg, len, file);
+                       else {
+                               int n;
+                               char name[MAXDNAME];
+
+                               if ((n = dn_expand(msg, msg+len, cp, name,
+                                               sizeof name)) < 0)
+                                       cp = NULL;
+                               else
+                                       cp += n;
+                       }
                        ErrorTest(cp);
                        TruncTest(cp);
                        if ((!_res.pfcode) || (_res.pfcode & RES_PRF_QUES))
@@ -354,6 +367,7 @@ __fp_nquery(msg, len, file)
                                fprintf(file, ", class = %s\n",
                                        __p_class(_getshort((u_char*)cp)));
                        cp += INT16SZ;
+                       if ((!_res.pfcode) || (_res.pfcode & RES_PRF_QUES))
                        putc('\n', file);
                }
        }
index f8e58f3..5a10faa 100644 (file)
@@ -682,9 +682,13 @@ res_send(buf, buflen, ans, anssiz)
                                goto same_ns;
                        }
                } /*if vc/dg*/
+               Dprint((_res.options & RES_DEBUG) ||
+                      ((_res.pfcode & RES_PRF_REPLY) &&
+                       (_res.pfcode & RES_PRF_HEAD1)),
+                      (stdout, ";; got answer:\n"));
                DprintQ((_res.options & RES_DEBUG) ||
                        (_res.pfcode & RES_PRF_REPLY),
-                       (stdout, ";; got answer:\n"),
+                       (stdout, ""),
                        ans, resplen);
                /*
                 * If using virtual circuits, we assume that the first server