--- /usr/lib/tcllib1.8/dns/dns.tcl	2006-03-18 22:11:13.596769104 +0300
+++ /usr/local/lib/dns1.3.0/dns.tcl	2006-03-18 21:51:17.164654432 +0300
@@ -1106,6 +1106,9 @@
                     lappend rdata target [ReadName data $x off]
                     incr x $off
                 }
+		TXT {
+		    set rdata [ReadString data $index $rdlength]
+		}
                 SOA {
                     set x $index
                     set rdata [list MNAME [ReadName data $x off]]
@@ -1211,6 +1214,26 @@
     return [join $r .]
 }
 
+proc ::dns::ReadString {datavar index length} {
+    upvar $datavar data
+    set startindex $index
+
+    set r {}
+    set max [expr {$index + $length}]
+
+    while {$index < $max} {
+	binary scan [string range $data $index end] c len
+	set len [expr {$len & 0xFF}]
+	incr index
+
+        if {$len != 0} {
+            append r [string range $data $index [expr {$index + $len - 1}]]
+	    incr index $len
+        }
+    }
+    return $r
+}
+
 # -------------------------------------------------------------------------
 
 # Experimental support for finding the nameservers
