[231] in Hesiod
Re: huge printcap entries
daemon@ATHENA.MIT.EDU (Greg Wohletz)
Fri Jul 29 15:48:04 1994
To: dean@hi.com
Cc: Dan Walsh <walsh@athena.tay.dec.com>,
"Derrick J. Brashear" <db74+@andrew.cmu.edu>, hesiod@MIT.EDU,
bind-workers@vix.com
In-Reply-To: Your message of "Fri, 29 Jul 1994 13:36:04 EDT."
<9407291736.AA00729@temple.Hi.Com>
Date: Fri, 29 Jul 1994 12:39:34 -0700
From: Greg Wohletz <greg@duke.CS.UNLV.EDU>
>I think Derrick already has equivalent changes to is hesiod
>library to do VC and large responses.
>
>I'm not quite sure what the change to ns_main does and I haven't had time to
>look at it... However, with the changes I recently posted, I did not have
>problems with Bind 4.8.3 actually retrieving multiple record responses as
>large as 2k, and they will work up to 8K. I think in my next round, I
>will make the buffer dynamically allocated.
>
>I think Derricks current problem is related to loading individual TXT records
>that are each greater than 256 bytes of text.
>
Hmm, well the problem I'm having is with multiple record responces.
For instance test.cluster.ns.unlv.edu has 20 TXT records, however when
I try to look them up via hesinfo (with Derricks mods to the hesiod
code) I get:
test string 5
test string 6
test string 7
test string 8
test string 9
test string 10
test string 11
test string 112
test string 13
test string 14
test string 15
test string 16
test string 17
test string 18
test string 19
test string 20
test string 1
strings 2-4 are missing (the strange order of the strings is due to
the round robin code in named which I think I'm going to turn off
since I can't think of any reason I need it, and it can be
annoying...). If you look at the debug output from the named you will
see that magic-sam.cs.unlv.edu (the host hesinfo was run on) gets a
truncated responce back from one of the authoritative servers
(eddie.CS.UNLV.EDU in this case) which it then passes on to hesinfo
(courtesy of the RES_IGNTC flag that the hesiod lib sets):
Debug turned ON, Level 1
Debug turned ON, Level 2
Debug turned ON, Level 3
Debug turned ON, Level 4
TCP connection from [127.0.0.1].1247 (fd 8)
streamq = 0x1001ebc0
ns_req(from=[127.0.0.1].1247)
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1
;; flags: rd; Ques: 1, Ans: 0, Auth: 0, Addit: 0
;; QUESTIONS:
;; test.cluster.ns.UNLV.EDU, type = TXT, class = HS
req: nlookup(test.cluster.ns.UNLV.EDU) id 256 type=16
req: found 'test.cluster.ns.UNLV.EDU' as 'ns.UNLV.EDU' (cname=0)
findns: 3 NS's added for 'ns'
ns_forw()
nslookup(nsp=0x7fffb1a4, qp=0x1001f800, "test.cluster.ns.UNLV.EDU")
nslookup: NS "eddie.CS.UNLV.EDU" c=4 t=2 (0x0)
store_name_addr:s:eddie.CS.UNLV.EDU, a:[131.216.16.8]
nslookup: NS "bessie.CS.UNLV.EDU" c=4 t=2 (0x0)
store_name_addr:s:bessie.CS.UNLV.EDU, a:[131.216.18.2]
nslookup: NS "jimi.CS.UNLV.EDU" c=4 t=2 (0x0)
store_name_addr:s:jimi.CS.UNLV.EDU, a:[131.216.22.2]
nslookup: 3 ns addrs total
retrytime: nstime0ms t4 nretry0 u4 : v4
schedretry(0x1001f800, 4 sec)
forw: forw -> [131.216.16.8].53 ds=7 nsid=9 id=1 0ms retry 4sec
free_nsp: eddie.CS.UNLV.EDU rcnt 2
free_nsp: bessie.CS.UNLV.EDU rcnt 2
free_nsp: jimi.CS.UNLV.EDU rcnt 2
datagram from [131.216.16.8].53, fd 5, len 496; now Fri Jul 29 12:25:49 1994
ns_req(from=[131.216.16.8].53)
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9
;; flags: qr aa tc ra; Ques: 1, Ans: 17, Auth: 3, Addit: 0
;; QUESTIONS:
;; test.cluster.ns.UNLV.EDU, type = TXT, class = HS
;; ANSWERS:
test.cluster.ns.UNLV.EDU. 43200 HS TXT "test string 6"
test.cluster.ns.UNLV.EDU. 43200 HS TXT "test string 7"
test.cluster.ns.UNLV.EDU. 43200 HS TXT "test string 8"
test.cluster.ns.UNLV.EDU. 43200 HS TXT "test string 9"
test.cluster.ns.UNLV.EDU. 43200 HS TXT "test string 10"
test.cluster.ns.UNLV.EDU. 43200 HS TXT "test string 11"
test.cluster.ns.UNLV.EDU. 43200 HS TXT "test string 112"
test.cluster.ns.UNLV.EDU. 43200 HS TXT "test string 13"
test.cluster.ns.UNLV.EDU. 43200 HS TXT "test string 14"
test.cluster.ns.UNLV.EDU. 43200 HS TXT "test string 15"
test.cluster.ns.UNLV.EDU. 43200 HS TXT "test string 16"
test.cluster.ns.UNLV.EDU. 43200 HS TXT "test string 17"
test.cluster.ns.UNLV.EDU. 43200 HS TXT "test string 18"
test.cluster.ns.UNLV.EDU. 43200 HS TXT "test string 19"
test.cluster.ns.UNLV.EDU. 43200 HS TXT "test string 20"
test.cluster.ns.UNLV.EDU. 43200 HS TXT "test string 1"
test.cluster.ns.UNLV.EDU. 43200 HS TXT "test string 2"
;; AUTHORITY RECORDS:
. 0 0 0 ?0?
. 0 0 0 ?0?
;; ...malformed
qfindid(9)
Response (USER NORMAL -) nsid=9 id=1
stime 775509949/700798 now 775509949/716422 rtt 15
NS #0 addr [131.216.16.8] used, rtt 15
NS #1 [131.216.18.2] rtt now 0
NS #2 [131.216.22.2] rtt now 0
resp: ancount 17, aucount 3, arcount 0
dovalidate(zone 0, flags 19)
dovalidate: dname test.cluster.ns.UNLV.EDU type 16 class 4 ttl 43200
[rest of validation/credibilty testing deleted]
Turning off the RES_IGNTC flag causes the caching server to never
respond (since it never gets a non-truncated responce from the
authoritative server). If you edit resolv.conf such that hesinfo
queries the authoritative server directly then it works fine (IF you
use a VC).
So it would appear that large answers do not work unless the client
queries the authoritative server directly. Correct? Again I'd like
to suggest that a non-authoritative server should use a VC to get data
from the authoritative server if it finds that the answer it gets via
UDP is truncated. Comments?
--Greg