Dnsruby 0.6.0 → 1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (624) hide show
  1. data/EVENTMACHINE +1 -1
  2. data/README +36 -7
  3. data/doc/classes/Dnsruby.html +49 -18
  4. data/doc/classes/Dnsruby/Classes.html +10 -10
  5. data/doc/classes/Dnsruby/Classes.src/{M000158.html → M000156.html} +1 -1
  6. data/doc/classes/Dnsruby/Classes.src/M000157.html +5 -9
  7. data/doc/classes/Dnsruby/CodeMapper.html +55 -55
  8. data/doc/classes/Dnsruby/CodeMapper.src/M000133.html +4 -7
  9. data/doc/classes/Dnsruby/CodeMapper.src/M000134.html +19 -5
  10. data/doc/classes/Dnsruby/CodeMapper.src/M000135.html +7 -5
  11. data/doc/classes/Dnsruby/CodeMapper.src/M000136.html +5 -4
  12. data/doc/classes/Dnsruby/CodeMapper.src/M000137.html +5 -8
  13. data/doc/classes/Dnsruby/CodeMapper.src/M000138.html +4 -8
  14. data/doc/classes/Dnsruby/CodeMapper.src/M000139.html +6 -6
  15. data/doc/classes/Dnsruby/CodeMapper.src/M000140.html +7 -16
  16. data/doc/classes/Dnsruby/CodeMapper.src/M000141.html +8 -5
  17. data/doc/classes/Dnsruby/CodeMapper.src/{M000167.html → M000142.html} +0 -0
  18. data/doc/classes/Dnsruby/CodeMapper.src/{M000168.html → M000143.html} +0 -0
  19. data/doc/classes/Dnsruby/Config.html +66 -63
  20. data/doc/classes/Dnsruby/Config.src/{M000125.html → M000097.html} +1 -1
  21. data/doc/classes/Dnsruby/Config.src/M000098.html +5 -4
  22. data/doc/classes/Dnsruby/Config.src/M000099.html +5 -5
  23. data/doc/classes/Dnsruby/Config.src/M000100.html +11 -5
  24. data/doc/classes/Dnsruby/Config.src/M000101.html +6 -6
  25. data/doc/classes/Dnsruby/Config.src/M000102.html +23 -6
  26. data/doc/classes/Dnsruby/Config.src/M000103.html +10 -22
  27. data/doc/classes/Dnsruby/Config.src/M000104.html +7 -11
  28. data/doc/classes/Dnsruby/Config.src/M000105.html +13 -8
  29. data/doc/classes/Dnsruby/Config.src/M000106.html +7 -12
  30. data/doc/classes/Dnsruby/Config.src/M000107.html +6 -7
  31. data/doc/classes/Dnsruby/DNS.html +220 -118
  32. data/doc/classes/Dnsruby/DNS.src/{M000224.html → M000190.html} +1 -1
  33. data/doc/classes/Dnsruby/DNS.src/{M000225.html → M000191.html} +1 -1
  34. data/doc/classes/Dnsruby/DNS.src/{M000226.html → M000192.html} +1 -1
  35. data/doc/classes/Dnsruby/DNS.src/M000193.html +24 -0
  36. data/doc/classes/Dnsruby/{SingleResolver.src/M000152.html → DNS.src/M000194.html} +3 -3
  37. data/doc/classes/Dnsruby/{IPv4.src/M000156.html → DNS.src/M000195.html} +4 -4
  38. data/doc/classes/Dnsruby/DNS.src/M000196.html +6 -10
  39. data/doc/classes/Dnsruby/DNS.src/M000197.html +5 -10
  40. data/doc/classes/Dnsruby/DNS.src/M000198.html +6 -4
  41. data/doc/classes/Dnsruby/DNS.src/M000199.html +4 -4
  42. data/doc/classes/Dnsruby/DNS.src/M000200.html +5 -6
  43. data/doc/classes/Dnsruby/DNS.src/M000201.html +6 -5
  44. data/doc/classes/Dnsruby/DNS.src/M000202.html +14 -6
  45. data/doc/classes/Dnsruby/DNS.src/M000203.html +5 -4
  46. data/doc/classes/Dnsruby/DNS.src/M000204.html +6 -5
  47. data/doc/classes/Dnsruby/DNS.src/M000205.html +17 -6
  48. data/doc/classes/Dnsruby/DecodeError.html +11 -0
  49. data/doc/classes/Dnsruby/EncodeError.html +11 -0
  50. data/doc/classes/Dnsruby/FormErr.html +6 -0
  51. data/doc/classes/Dnsruby/Header.html +51 -66
  52. data/doc/classes/Dnsruby/Header.src/{M000196.html → M000167.html} +1 -1
  53. data/doc/classes/Dnsruby/Header.src/M000168.html +4 -21
  54. data/doc/classes/Dnsruby/Header.src/M000169.html +4 -21
  55. data/doc/classes/Dnsruby/Header.src/M000170.html +21 -4
  56. data/doc/classes/Dnsruby/Header.src/M000171.html +4 -4
  57. data/doc/classes/Dnsruby/Header.src/M000172.html +4 -7
  58. data/doc/classes/Dnsruby/Header.src/M000173.html +7 -6
  59. data/doc/classes/Dnsruby/Header.src/M000174.html +6 -18
  60. data/doc/classes/Dnsruby/Header.src/M000175.html +18 -12
  61. data/doc/classes/Dnsruby/Header.src/M000176.html +13 -33
  62. data/doc/classes/Dnsruby/Header.src/M000177.html +12 -14
  63. data/doc/classes/Dnsruby/Header.src/M000178.html +33 -4
  64. data/doc/classes/Dnsruby/Header.src/M000179.html +14 -4
  65. data/doc/classes/Dnsruby/Header.src/M000180.html +1 -1
  66. data/doc/classes/Dnsruby/Hosts.html +65 -54
  67. data/doc/classes/Dnsruby/Hosts.src/M000144.html +6 -5
  68. data/doc/classes/Dnsruby/Hosts.src/M000145.html +5 -6
  69. data/doc/classes/Dnsruby/Hosts.src/M000146.html +6 -7
  70. data/doc/classes/Dnsruby/Hosts.src/M000147.html +7 -5
  71. data/doc/classes/Dnsruby/Hosts.src/M000148.html +4 -5
  72. data/doc/classes/Dnsruby/Hosts.src/M000149.html +5 -6
  73. data/doc/classes/Dnsruby/Hosts.src/{M000176.html → M000150.html} +1 -1
  74. data/doc/classes/Dnsruby/IPv4.html +28 -93
  75. data/doc/classes/Dnsruby/IPv4.src/M000151.html +17 -6
  76. data/doc/classes/Dnsruby/IPv4.src/M000152.html +5 -4
  77. data/doc/classes/Dnsruby/IPv4.src/M000153.html +3 -3
  78. data/doc/classes/Dnsruby/IPv4.src/M000154.html +3 -4
  79. data/doc/classes/Dnsruby/IPv4.src/M000155.html +4 -4
  80. data/doc/classes/Dnsruby/IPv6.html +59 -96
  81. data/doc/classes/Dnsruby/IPv6.src/{M000208.html → M000178.html} +2 -2
  82. data/doc/classes/Dnsruby/IPv6.src/{M000210.html → M000179.html} +0 -0
  83. data/doc/classes/Dnsruby/IPv6.src/M000180.html +6 -46
  84. data/doc/classes/Dnsruby/IPv6.src/M000181.html +2 -2
  85. data/doc/classes/Dnsruby/IPv6.src/M000182.html +7 -6
  86. data/doc/classes/Dnsruby/IPv6.src/M000183.html +6 -8
  87. data/doc/classes/Dnsruby/IPv6.src/M000184.html +4 -4
  88. data/doc/classes/Dnsruby/Message.html +216 -123
  89. data/doc/classes/Dnsruby/Message.src/M000071.html +38 -0
  90. data/doc/classes/Dnsruby/Message.src/M000072.html +26 -0
  91. data/doc/classes/Dnsruby/Message.src/M000073.html +22 -0
  92. data/doc/classes/Dnsruby/{Header.src/M000198.html → Message.src/M000074.html} +6 -4
  93. data/doc/classes/Dnsruby/{Header.src/M000197.html → Message.src/M000075.html} +6 -4
  94. data/doc/classes/Dnsruby/Message.src/M000076.html +6 -20
  95. data/doc/classes/Dnsruby/Message.src/M000077.html +6 -12
  96. data/doc/classes/Dnsruby/Message.src/M000078.html +6 -8
  97. data/doc/classes/Dnsruby/Message.src/M000079.html +9 -6
  98. data/doc/classes/Dnsruby/Message.src/M000080.html +16 -6
  99. data/doc/classes/Dnsruby/Message.src/M000081.html +6 -6
  100. data/doc/classes/Dnsruby/Message.src/M000082.html +4 -6
  101. data/doc/classes/Dnsruby/Message.src/M000083.html +40 -6
  102. data/doc/classes/Dnsruby/Message.src/M000084.html +10 -6
  103. data/doc/classes/Dnsruby/Message.src/M000085.html +29 -6
  104. data/doc/classes/Dnsruby/Message.src/M000086.html +32 -4
  105. data/doc/classes/Dnsruby/NXDomain.html +6 -0
  106. data/doc/classes/Dnsruby/Name.html +60 -87
  107. data/doc/classes/Dnsruby/Name.src/M000056.html +28 -0
  108. data/doc/classes/Dnsruby/Name.src/M000057.html +6 -14
  109. data/doc/classes/Dnsruby/Name.src/M000058.html +4 -6
  110. data/doc/classes/Dnsruby/Name.src/M000059.html +7 -4
  111. data/doc/classes/Dnsruby/Name.src/M000060.html +8 -4
  112. data/doc/classes/Dnsruby/Name.src/M000061.html +5 -7
  113. data/doc/classes/Dnsruby/Name/Label.html +45 -45
  114. data/doc/classes/Dnsruby/Name/Label.src/M000062.html +21 -0
  115. data/doc/classes/Dnsruby/Name/Label.src/{M000075.html → M000063.html} +4 -4
  116. data/doc/classes/Dnsruby/Name/Label.src/{M000076.html → M000064.html} +1 -1
  117. data/doc/classes/Dnsruby/Name/Label.src/{M000077.html → M000065.html} +1 -1
  118. data/doc/classes/Dnsruby/Name/Label.src/{M000078.html → M000066.html} +1 -1
  119. data/doc/classes/Dnsruby/Name/Label.src/M000067.html +4 -7
  120. data/doc/classes/Dnsruby/Name/Label.src/M000068.html +4 -4
  121. data/doc/classes/Dnsruby/Name/Label.src/M000069.html +4 -8
  122. data/doc/classes/Dnsruby/Name/Label.src/M000070.html +4 -4
  123. data/doc/classes/Dnsruby/NotImp.html +6 -0
  124. data/doc/classes/Dnsruby/OtherResolvError.html +6 -0
  125. data/doc/classes/Dnsruby/Question.html +53 -8
  126. data/doc/classes/Dnsruby/Question.src/{M000194.html → M000165.html} +1 -1
  127. data/doc/classes/Dnsruby/Question.src/M000166.html +4 -33
  128. data/doc/classes/Dnsruby/Question.src/M000167.html +4 -33
  129. data/doc/classes/Dnsruby/Question.src/M000168.html +18 -4
  130. data/doc/classes/Dnsruby/Question.src/{M000195.html → M000169.html} +1 -1
  131. data/doc/classes/Dnsruby/RR.html +62 -64
  132. data/doc/classes/Dnsruby/RR.src/M000004.html +1 -1
  133. data/doc/classes/Dnsruby/RR.src/M000005.html +1 -1
  134. data/doc/classes/Dnsruby/RR.src/M000006.html +4 -22
  135. data/doc/classes/Dnsruby/RR.src/M000007.html +22 -86
  136. data/doc/classes/Dnsruby/RR.src/M000008.html +86 -4
  137. data/doc/classes/Dnsruby/RR.src/M000009.html +4 -4
  138. data/doc/classes/Dnsruby/RR.src/M000010.html +4 -8
  139. data/doc/classes/Dnsruby/RR.src/M000011.html +8 -8
  140. data/doc/classes/Dnsruby/RR.src/M000012.html +15 -4
  141. data/doc/classes/Dnsruby/RR.src/M000013.html +10 -8
  142. data/doc/classes/Dnsruby/RR/ANY.html +1 -1
  143. data/doc/classes/Dnsruby/RR/CNAME.html +2 -1
  144. data/doc/classes/Dnsruby/RR/DomainName.html +10 -10
  145. data/doc/classes/Dnsruby/RR/DomainName.src/{M000051.html → M000050.html} +0 -4
  146. data/doc/classes/Dnsruby/RR/Generic.html +4 -27
  147. data/doc/classes/Dnsruby/RR/IN.html +1 -1
  148. data/doc/classes/Dnsruby/RR/IN/A.html +17 -16
  149. data/doc/classes/Dnsruby/RR/IN/A.src/{M000025.html → M000017.html} +0 -0
  150. data/doc/classes/Dnsruby/RR/IN/A.src/M000018.html +4 -4
  151. data/doc/classes/Dnsruby/RR/IN/A.src/M000019.html +4 -4
  152. data/doc/classes/Dnsruby/RR/IN/AAAA.html +2 -1
  153. data/doc/classes/Dnsruby/RR/IN/SRV.html +43 -48
  154. data/doc/classes/Dnsruby/RR/IN/SRV.src/{M000022.html → M000014.html} +1 -1
  155. data/doc/classes/Dnsruby/RR/IN/SRV.src/M000015.html +11 -14
  156. data/doc/classes/Dnsruby/RR/IN/SRV.src/M000016.html +7 -11
  157. data/doc/classes/Dnsruby/RR/IN/WKS.html +5 -5
  158. data/doc/classes/Dnsruby/RR/IN/WKS.src/{M000021.html → M000020.html} +0 -0
  159. data/doc/classes/Dnsruby/RR/NS.html +2 -1
  160. data/doc/classes/Dnsruby/RR/NSAP.html +20 -20
  161. data/doc/classes/Dnsruby/RR/NSAP.src/{M000060.html → M000052.html} +0 -0
  162. data/doc/classes/Dnsruby/RR/NSAP.src/M000053.html +4 -4
  163. data/doc/classes/Dnsruby/RR/NSAP.src/M000054.html +8 -5
  164. data/doc/classes/Dnsruby/RR/NSAP.src/M000055.html +16 -7
  165. data/doc/classes/Dnsruby/RR/RP.html +5 -5
  166. data/doc/classes/Dnsruby/RR/RP.src/{M000050.html → M000049.html} +0 -0
  167. data/doc/classes/Dnsruby/RR/SOA.html +6 -3
  168. data/doc/classes/Dnsruby/RR/SOA.src/M000039.html +1 -1
  169. data/doc/classes/Dnsruby/RR/SOA.src/M000040.html +1 -1
  170. data/doc/classes/Dnsruby/RR/TKEY.html +39 -11
  171. data/doc/classes/Dnsruby/RR/TKEY.src/{M000029.html → M000021.html} +1 -1
  172. data/doc/classes/Dnsruby/RR/TKEY.src/M000022.html +15 -5
  173. data/doc/classes/Dnsruby/RR/TKEY.src/M000023.html +7 -15
  174. data/doc/classes/Dnsruby/RR/TKEY.src/M000024.html +1 -1
  175. data/doc/classes/Dnsruby/RR/TSIG.html +128 -56
  176. data/doc/classes/Dnsruby/RR/TSIG.src/M000041.html +24 -0
  177. data/doc/classes/Dnsruby/RR/TSIG.src/M000042.html +39 -7
  178. data/doc/classes/Dnsruby/RR/TSIG.src/M000043.html +110 -48
  179. data/doc/classes/Dnsruby/RR/TSIG.src/M000044.html +19 -20
  180. data/doc/classes/Dnsruby/RR/TSIG.src/M000045.html +11 -23
  181. data/doc/classes/Dnsruby/RR/TSIG.src/M000046.html +22 -17
  182. data/doc/classes/Dnsruby/RR/TSIG.src/M000047.html +7 -19
  183. data/doc/classes/Dnsruby/RR/TSIG.src/M000048.html +14 -7
  184. data/doc/classes/Dnsruby/RRSet.html +39 -39
  185. data/doc/classes/Dnsruby/RRSet.src/{M000187.html → M000158.html} +0 -0
  186. data/doc/classes/Dnsruby/RRSet.src/M000159.html +30 -4
  187. data/doc/classes/Dnsruby/RRSet.src/M000160.html +4 -4
  188. data/doc/classes/Dnsruby/RRSet.src/M000161.html +5 -29
  189. data/doc/classes/Dnsruby/RRSet.src/M000162.html +4 -4
  190. data/doc/classes/Dnsruby/RRSet.src/M000163.html +4 -6
  191. data/doc/classes/Dnsruby/RRSet.src/M000164.html +4 -4
  192. data/doc/classes/Dnsruby/Refused.html +6 -0
  193. data/doc/classes/Dnsruby/Resolv.html +120 -119
  194. data/doc/classes/Dnsruby/Resolv.src/{M000136.html → M000108.html} +1 -1
  195. data/doc/classes/Dnsruby/Resolv.src/M000109.html +4 -4
  196. data/doc/classes/Dnsruby/Resolv.src/M000110.html +4 -4
  197. data/doc/classes/Dnsruby/Resolv.src/M000111.html +4 -4
  198. data/doc/classes/Dnsruby/Resolv.src/M000112.html +4 -4
  199. data/doc/classes/Dnsruby/Resolv.src/M000113.html +4 -4
  200. data/doc/classes/Dnsruby/Resolv.src/M000114.html +4 -4
  201. data/doc/classes/Dnsruby/Resolv.src/M000115.html +5 -4
  202. data/doc/classes/Dnsruby/Resolv.src/M000116.html +6 -5
  203. data/doc/classes/Dnsruby/Resolv.src/M000117.html +15 -6
  204. data/doc/classes/Dnsruby/Resolv.src/M000118.html +5 -15
  205. data/doc/classes/Dnsruby/Resolv.src/M000119.html +6 -5
  206. data/doc/classes/Dnsruby/Resolv.src/M000120.html +11 -6
  207. data/doc/classes/Dnsruby/ResolvError.html +6 -0
  208. data/doc/classes/Dnsruby/ResolvTimeout.html +6 -0
  209. data/doc/classes/Dnsruby/Resolver.html +292 -179
  210. data/doc/classes/Dnsruby/Resolver.src/{M000239.html → M000203.html} +1 -1
  211. data/doc/classes/Dnsruby/Resolver.src/{M000240.html → M000204.html} +2 -2
  212. data/doc/classes/Dnsruby/Resolver.src/{M000241.html → M000205.html} +1 -1
  213. data/doc/classes/Dnsruby/{SingleResolver.src/M000153.html → Resolver.src/M000206.html} +2 -2
  214. data/doc/classes/Dnsruby/{SingleResolver.src/M000154.html → Resolver.src/M000207.html} +8 -6
  215. data/doc/classes/Dnsruby/Resolver.src/M000208.html +28 -0
  216. data/doc/classes/Dnsruby/Resolver.src/{M000242.html → M000209.html} +1 -1
  217. data/doc/classes/Dnsruby/Resolver.src/{M000243.html → M000210.html} +5 -2
  218. data/doc/classes/Dnsruby/Resolver.src/M000211.html +7 -7
  219. data/doc/classes/Dnsruby/Resolver.src/M000212.html +8 -7
  220. data/doc/classes/Dnsruby/Resolver.src/M000213.html +4 -13
  221. data/doc/classes/Dnsruby/Resolver.src/M000214.html +6 -14
  222. data/doc/classes/Dnsruby/Resolver.src/M000215.html +5 -4
  223. data/doc/classes/Dnsruby/Resolver.src/M000216.html +4 -33
  224. data/doc/classes/Dnsruby/Resolver.src/M000217.html +5 -7
  225. data/doc/classes/Dnsruby/Resolver.src/M000218.html +5 -8
  226. data/doc/classes/Dnsruby/Resolver.src/M000219.html +5 -4
  227. data/doc/classes/Dnsruby/Resolver.src/M000220.html +5 -6
  228. data/doc/classes/Dnsruby/Resolver.src/M000221.html +4 -4
  229. data/doc/classes/Dnsruby/Resolver.src/M000222.html +4 -4
  230. data/doc/classes/Dnsruby/Resolver.src/M000223.html +4 -4
  231. data/doc/classes/Dnsruby/Resolver.src/M000224.html +4 -4
  232. data/doc/classes/Dnsruby/Resolver.src/M000225.html +4 -4
  233. data/doc/classes/Dnsruby/Resolver.src/M000226.html +12 -5
  234. data/doc/classes/Dnsruby/Resolver.src/M000227.html +4 -5
  235. data/doc/classes/Dnsruby/Resolver.src/M000228.html +9 -5
  236. data/doc/classes/Dnsruby/Resolver.src/M000229.html +4 -5
  237. data/doc/classes/Dnsruby/ServFail.html +6 -0
  238. data/doc/classes/Dnsruby/SingleResolver.html +182 -77
  239. data/doc/classes/Dnsruby/SingleResolver.src/{M000149.html → M000121.html} +4 -4
  240. data/doc/classes/Dnsruby/SingleResolver.src/M000122.html +22 -4
  241. data/doc/classes/Dnsruby/SingleResolver.src/M000123.html +4 -5
  242. data/doc/classes/Dnsruby/SingleResolver.src/M000124.html +5 -35
  243. data/doc/classes/Dnsruby/SingleResolver.src/M000125.html +36 -4
  244. data/doc/classes/Dnsruby/SingleResolver.src/M000126.html +4 -7
  245. data/doc/classes/Dnsruby/SingleResolver.src/M000127.html +7 -11
  246. data/doc/classes/Dnsruby/SingleResolver.src/M000128.html +9 -35
  247. data/doc/classes/Dnsruby/SingleResolver.src/M000129.html +39 -11
  248. data/doc/classes/Dnsruby/SingleResolver.src/M000130.html +13 -7
  249. data/doc/classes/Dnsruby/SingleResolver.src/M000131.html +35 -0
  250. data/doc/classes/Dnsruby/SingleResolver.src/{M000157.html → M000132.html} +1 -1
  251. data/doc/classes/Dnsruby/TheLog.html +17 -17
  252. data/doc/classes/Dnsruby/TheLog.src/{M000188.html → M000182.html} +0 -0
  253. data/doc/classes/Dnsruby/TheLog.src/{M000190.html → M000183.html} +0 -0
  254. data/doc/classes/Dnsruby/TheLog.src/{M000191.html → M000184.html} +0 -0
  255. data/doc/classes/Dnsruby/TheLog.src/{M000189.html → M000185.html} +0 -0
  256. data/doc/classes/Dnsruby/TheLog.src/{M000217.html → M000186.html} +0 -0
  257. data/doc/classes/Dnsruby/TheLog.src/{M000218.html → M000187.html} +0 -0
  258. data/doc/classes/Dnsruby/Update.html +34 -34
  259. data/doc/classes/Dnsruby/Update.src/{M000219.html → M000185.html} +0 -0
  260. data/doc/classes/Dnsruby/Update.src/{M000193.html → M000186.html} +0 -1
  261. data/doc/classes/Dnsruby/Update.src/{M000194.html → M000187.html} +1 -1
  262. data/doc/classes/Dnsruby/Update.src/M000188.html +32 -0
  263. data/doc/classes/Dnsruby/Update.src/{M000220.html → M000189.html} +0 -1
  264. data/doc/classes/Dnsruby/Update.src/{M000221.html → M000190.html} +1 -1
  265. data/doc/classes/Dnsruby/Update.src/M000191.html +26 -17
  266. data/doc/classes/Dnsruby/Update.src/M000192.html +19 -17
  267. data/doc/classes/Dnsruby/ZoneTransfer.html +65 -13
  268. data/doc/classes/Dnsruby/{CodeMapper.src/M000163.html → ZoneTransfer.src/M000092.html} +4 -4
  269. data/doc/classes/Dnsruby/ZoneTransfer.src/{M000095.html → M000093.html} +3 -1
  270. data/doc/classes/Dnsruby/ZoneTransfer.src/{M000103.html → M000094.html} +1 -1
  271. data/doc/classes/Dnsruby/ZoneTransfer/Delta.html +22 -5
  272. data/doc/classes/Dnsruby/ZoneTransfer/Delta.src/{M000104.html → M000095.html} +1 -1
  273. data/doc/classes/Dnsruby/ZoneTransfer/Delta.src/M000096.html +19 -0
  274. data/doc/created.rid +1 -1
  275. data/doc/files/lib/Dnsruby/Config_rb.html +1 -1
  276. data/doc/files/lib/Dnsruby/DNSSEC_rb.html +1 -1
  277. data/doc/files/lib/Dnsruby/DNS_rb.html +1 -1
  278. data/doc/files/lib/Dnsruby/Hosts_rb.html +1 -1
  279. data/doc/files/lib/Dnsruby/Resolver_rb.html +1 -1
  280. data/doc/files/lib/Dnsruby/SingleResolver_rb.html +1 -1
  281. data/doc/files/lib/Dnsruby/TheLog_rb.html +1 -1
  282. data/doc/files/lib/Dnsruby/code_mapper_rb.html +1 -1
  283. data/doc/files/lib/Dnsruby/event_machine_interface_rb.html +1 -1
  284. data/doc/files/lib/Dnsruby/ipv4_rb.html +1 -1
  285. data/doc/files/lib/Dnsruby/ipv6_rb.html +1 -1
  286. data/doc/files/lib/Dnsruby/message_rb.html +1 -1
  287. data/doc/files/lib/Dnsruby/name_rb.html +1 -1
  288. data/doc/files/lib/Dnsruby/resource/AAAA_rb.html +1 -1
  289. data/doc/files/lib/Dnsruby/resource/AFSDB_rb.html +1 -1
  290. data/doc/files/lib/Dnsruby/resource/A_rb.html +1 -1
  291. data/doc/files/lib/Dnsruby/resource/CERT_rb.html +1 -1
  292. data/doc/files/lib/Dnsruby/resource/HINFO_rb.html +1 -1
  293. data/doc/files/lib/Dnsruby/resource/IN_rb.html +1 -1
  294. data/doc/files/lib/Dnsruby/resource/ISDN_rb.html +1 -1
  295. data/doc/files/lib/Dnsruby/resource/LOC_rb.html +1 -1
  296. data/doc/files/lib/Dnsruby/resource/MINFO_rb.html +1 -1
  297. data/doc/files/lib/Dnsruby/resource/MX_rb.html +1 -1
  298. data/doc/files/lib/Dnsruby/resource/NAPTR_rb.html +1 -1
  299. data/doc/files/lib/Dnsruby/resource/NSAP_rb.html +1 -1
  300. data/doc/files/lib/Dnsruby/resource/OPT_rb.html +1 -1
  301. data/doc/files/lib/Dnsruby/resource/PX_rb.html +1 -1
  302. data/doc/files/lib/Dnsruby/resource/RP_rb.html +1 -1
  303. data/doc/files/lib/Dnsruby/resource/RT_rb.html +1 -1
  304. data/doc/files/lib/Dnsruby/resource/SOA_rb.html +1 -1
  305. data/doc/files/lib/Dnsruby/resource/SPF_rb.html +1 -1
  306. data/doc/files/lib/Dnsruby/resource/SRV_rb.html +1 -1
  307. data/doc/files/lib/Dnsruby/resource/TKEY_rb.html +1 -1
  308. data/doc/files/lib/Dnsruby/resource/TSIG_rb.html +1 -1
  309. data/doc/files/lib/Dnsruby/resource/TXT_rb.html +1 -1
  310. data/doc/files/lib/Dnsruby/resource/X25_rb.html +1 -1
  311. data/doc/files/lib/Dnsruby/resource/domain_name_rb.html +1 -1
  312. data/doc/files/lib/Dnsruby/resource/generic_rb.html +1 -1
  313. data/doc/files/lib/Dnsruby/resource/resource_rb.html +1 -1
  314. data/doc/files/lib/Dnsruby/select_thread_rb.html +1 -1
  315. data/doc/files/lib/Dnsruby/update_rb.html +1 -1
  316. data/doc/files/lib/Dnsruby/zone_transfer_rb.html +1 -1
  317. data/doc/files/lib/dnsruby_rb.html +1 -1
  318. data/doc/fr_class_index.html +0 -2
  319. data/doc/fr_method_index.html +207 -213
  320. data/doc/index.html +1 -1
  321. data/lib/Dnsruby/Config.rb +11 -5
  322. data/lib/Dnsruby/DNS.rb +97 -50
  323. data/lib/Dnsruby/Hosts.rb +9 -2
  324. data/lib/Dnsruby/Resolver.rb +116 -31
  325. data/lib/Dnsruby/SingleResolver.rb +131 -75
  326. data/lib/Dnsruby/TheLog.rb +1 -2
  327. data/lib/Dnsruby/event_machine_interface.rb +9 -9
  328. data/lib/Dnsruby/ipv4.rb +6 -15
  329. data/lib/Dnsruby/ipv6.rb +23 -21
  330. data/lib/Dnsruby/message.rb +141 -56
  331. data/lib/Dnsruby/name.rb +15 -7
  332. data/lib/Dnsruby/resource/A.rb +1 -1
  333. data/lib/Dnsruby/resource/AAAA.rb +1 -1
  334. data/lib/Dnsruby/resource/IN.rb +5 -5
  335. data/lib/Dnsruby/resource/MINFO.rb +6 -2
  336. data/lib/Dnsruby/resource/OPT.rb +76 -19
  337. data/lib/Dnsruby/resource/SOA.rb +6 -0
  338. data/lib/Dnsruby/resource/SRV.rb +25 -21
  339. data/lib/Dnsruby/resource/TKEY.rb +14 -6
  340. data/lib/Dnsruby/resource/TSIG.rb +367 -120
  341. data/lib/Dnsruby/resource/domain_name.rb +1 -5
  342. data/lib/Dnsruby/resource/generic.rb +5 -2
  343. data/lib/Dnsruby/resource/resource.rb +35 -17
  344. data/lib/Dnsruby/select_thread.rb +33 -26
  345. data/lib/Dnsruby/update.rb +3 -4
  346. data/lib/Dnsruby/zone_transfer.rb +46 -12
  347. data/lib/dnsruby.rb +56 -44
  348. data/test/tc_axfr.rb +45 -7
  349. data/test/tc_dns.rb +1 -2
  350. data/test/tc_em_deferrable.rb +7 -16
  351. data/test/tc_escapedchars.rb +5 -21
  352. data/test/tc_event_machine_deferrable.rb +1 -1
  353. data/test/tc_event_machine_res.rb +1 -1
  354. data/test/tc_event_machine_single_res.rb +4 -4
  355. data/test/tc_event_machine_soak.rb +1 -1
  356. data/test/tc_packet_unique_push.rb +1 -1
  357. data/test/tc_question.rb +16 -17
  358. data/test/tc_res_config.rb +1 -1
  359. data/test/tc_res_opt.rb +4 -0
  360. data/test/tc_resolver.rb +0 -1
  361. data/test/tc_rr-opt.rb +45 -6
  362. data/test/tc_single_resolver.rb +1 -3
  363. data/test/tc_soak.rb +1 -5
  364. data/test/tc_soak_base.rb +1 -1
  365. data/test/tc_tcp.rb +1 -1
  366. data/test/tc_tkey.rb +1 -32
  367. data/test/tc_tsig.rb +196 -0
  368. data/test/ts_offline.rb +3 -2
  369. data/test/ts_online.rb +59 -14
  370. metadata +69 -318
  371. data/doc/classes/Dnsruby/Classes.src/M000159.html +0 -19
  372. data/doc/classes/Dnsruby/Classes.src/M000185.html +0 -23
  373. data/doc/classes/Dnsruby/Classes.src/M000186.html +0 -19
  374. data/doc/classes/Dnsruby/CodeMapper.src/M000130.html +0 -18
  375. data/doc/classes/Dnsruby/CodeMapper.src/M000131.html +0 -18
  376. data/doc/classes/Dnsruby/CodeMapper.src/M000132.html +0 -33
  377. data/doc/classes/Dnsruby/CodeMapper.src/M000158.html +0 -18
  378. data/doc/classes/Dnsruby/CodeMapper.src/M000159.html +0 -33
  379. data/doc/classes/Dnsruby/CodeMapper.src/M000160.html +0 -21
  380. data/doc/classes/Dnsruby/CodeMapper.src/M000161.html +0 -19
  381. data/doc/classes/Dnsruby/CodeMapper.src/M000162.html +0 -19
  382. data/doc/classes/Dnsruby/CodeMapper.src/M000164.html +0 -22
  383. data/doc/classes/Dnsruby/CodeMapper.src/M000165.html +0 -22
  384. data/doc/classes/Dnsruby/CodeMapper.src/M000166.html +0 -22
  385. data/doc/classes/Dnsruby/Config.src/M000108.html +0 -21
  386. data/doc/classes/Dnsruby/Config.src/M000126.html +0 -19
  387. data/doc/classes/Dnsruby/Config.src/M000127.html +0 -19
  388. data/doc/classes/Dnsruby/Config.src/M000128.html +0 -21
  389. data/doc/classes/Dnsruby/Config.src/M000129.html +0 -21
  390. data/doc/classes/Dnsruby/Config.src/M000130.html +0 -38
  391. data/doc/classes/Dnsruby/Config.src/M000131.html +0 -26
  392. data/doc/classes/Dnsruby/Config.src/M000132.html +0 -22
  393. data/doc/classes/Dnsruby/Config.src/M000133.html +0 -27
  394. data/doc/classes/Dnsruby/Config.src/M000134.html +0 -22
  395. data/doc/classes/Dnsruby/Config.src/M000135.html +0 -21
  396. data/doc/classes/Dnsruby/DNS.src/M000206.html +0 -28
  397. data/doc/classes/Dnsruby/DNS.src/M000207.html +0 -19
  398. data/doc/classes/Dnsruby/DNS.src/M000208.html +0 -20
  399. data/doc/classes/Dnsruby/DNS.src/M000209.html +0 -41
  400. data/doc/classes/Dnsruby/DNS.src/M000210.html +0 -32
  401. data/doc/classes/Dnsruby/DNS.src/M000211.html +0 -50
  402. data/doc/classes/Dnsruby/DNS.src/M000227.html +0 -20
  403. data/doc/classes/Dnsruby/DNS.src/M000228.html +0 -19
  404. data/doc/classes/Dnsruby/DNS.src/M000229.html +0 -20
  405. data/doc/classes/Dnsruby/DNS.src/M000230.html +0 -18
  406. data/doc/classes/Dnsruby/DNS.src/M000231.html +0 -19
  407. data/doc/classes/Dnsruby/DNS.src/M000232.html +0 -20
  408. data/doc/classes/Dnsruby/DNS.src/M000233.html +0 -28
  409. data/doc/classes/Dnsruby/DNS.src/M000234.html +0 -19
  410. data/doc/classes/Dnsruby/DNS.src/M000235.html +0 -20
  411. data/doc/classes/Dnsruby/DNS.src/M000236.html +0 -41
  412. data/doc/classes/Dnsruby/DNS.src/M000237.html +0 -32
  413. data/doc/classes/Dnsruby/DNS.src/M000238.html +0 -50
  414. data/doc/classes/Dnsruby/DNS/DecodeError.html +0 -111
  415. data/doc/classes/Dnsruby/DNS/EncodeError.html +0 -111
  416. data/doc/classes/Dnsruby/EventMachineInterface.html +0 -327
  417. data/doc/classes/Dnsruby/EventMachineInterface.src/M000105.html +0 -32
  418. data/doc/classes/Dnsruby/EventMachineInterface.src/M000106.html +0 -25
  419. data/doc/classes/Dnsruby/EventMachineInterface.src/M000107.html +0 -29
  420. data/doc/classes/Dnsruby/EventMachineInterface.src/M000108.html +0 -21
  421. data/doc/classes/Dnsruby/EventMachineInterface.src/M000109.html +0 -35
  422. data/doc/classes/Dnsruby/EventMachineInterface.src/M000110.html +0 -19
  423. data/doc/classes/Dnsruby/EventMachineInterface.src/M000111.html +0 -23
  424. data/doc/classes/Dnsruby/EventMachineInterface.src/M000112.html +0 -18
  425. data/doc/classes/Dnsruby/EventMachineInterface.src/M000113.html +0 -28
  426. data/doc/classes/Dnsruby/EventMachineInterface.src/M000114.html +0 -41
  427. data/doc/classes/Dnsruby/EventMachineInterface.src/M000115.html +0 -28
  428. data/doc/classes/Dnsruby/EventMachineInterface.src/M000116.html +0 -24
  429. data/doc/classes/Dnsruby/EventMachineInterface/EmTcpHandler.html +0 -154
  430. data/doc/classes/Dnsruby/EventMachineInterface/EmTcpHandler.src/M000123.html +0 -20
  431. data/doc/classes/Dnsruby/EventMachineInterface/EmTcpHandler.src/M000124.html +0 -32
  432. data/doc/classes/Dnsruby/EventMachineInterface/EmUdpHandler.html +0 -237
  433. data/doc/classes/Dnsruby/EventMachineInterface/EmUdpHandler.src/M000117.html +0 -18
  434. data/doc/classes/Dnsruby/EventMachineInterface/EmUdpHandler.src/M000118.html +0 -19
  435. data/doc/classes/Dnsruby/EventMachineInterface/EmUdpHandler.src/M000119.html +0 -35
  436. data/doc/classes/Dnsruby/EventMachineInterface/EmUdpHandler.src/M000120.html +0 -30
  437. data/doc/classes/Dnsruby/EventMachineInterface/EmUdpHandler.src/M000121.html +0 -19
  438. data/doc/classes/Dnsruby/EventMachineInterface/EmUdpHandler.src/M000122.html +0 -23
  439. data/doc/classes/Dnsruby/Header.src/M000199.html +0 -21
  440. data/doc/classes/Dnsruby/Header.src/M000200.html +0 -20
  441. data/doc/classes/Dnsruby/Header.src/M000201.html +0 -32
  442. data/doc/classes/Dnsruby/Header.src/M000202.html +0 -26
  443. data/doc/classes/Dnsruby/Header.src/M000203.html +0 -47
  444. data/doc/classes/Dnsruby/Header.src/M000204.html +0 -28
  445. data/doc/classes/Dnsruby/Header.src/M000205.html +0 -18
  446. data/doc/classes/Dnsruby/Header.src/M000206.html +0 -18
  447. data/doc/classes/Dnsruby/Header.src/M000207.html +0 -30
  448. data/doc/classes/Dnsruby/Hosts.src/M000141.html +0 -20
  449. data/doc/classes/Dnsruby/Hosts.src/M000142.html +0 -20
  450. data/doc/classes/Dnsruby/Hosts.src/M000143.html +0 -49
  451. data/doc/classes/Dnsruby/Hosts.src/M000169.html +0 -20
  452. data/doc/classes/Dnsruby/Hosts.src/M000170.html +0 -49
  453. data/doc/classes/Dnsruby/Hosts.src/M000171.html +0 -19
  454. data/doc/classes/Dnsruby/Hosts.src/M000172.html +0 -20
  455. data/doc/classes/Dnsruby/Hosts.src/M000173.html +0 -21
  456. data/doc/classes/Dnsruby/Hosts.src/M000174.html +0 -19
  457. data/doc/classes/Dnsruby/Hosts.src/M000175.html +0 -20
  458. data/doc/classes/Dnsruby/IPv4.src/M000149.html +0 -32
  459. data/doc/classes/Dnsruby/IPv4.src/M000150.html +0 -32
  460. data/doc/classes/Dnsruby/IPv4.src/M000157.html +0 -18
  461. data/doc/classes/Dnsruby/IPv4.src/M000177.html +0 -32
  462. data/doc/classes/Dnsruby/IPv4.src/M000178.html +0 -21
  463. data/doc/classes/Dnsruby/IPv4.src/M000179.html +0 -18
  464. data/doc/classes/Dnsruby/IPv4.src/M000180.html +0 -18
  465. data/doc/classes/Dnsruby/IPv4.src/M000181.html +0 -19
  466. data/doc/classes/Dnsruby/IPv4.src/M000182.html +0 -18
  467. data/doc/classes/Dnsruby/IPv4.src/M000183.html +0 -18
  468. data/doc/classes/Dnsruby/IPv4.src/M000184.html +0 -18
  469. data/doc/classes/Dnsruby/IPv6.src/M000185.html +0 -21
  470. data/doc/classes/Dnsruby/IPv6.src/M000186.html +0 -18
  471. data/doc/classes/Dnsruby/IPv6.src/M000187.html +0 -18
  472. data/doc/classes/Dnsruby/IPv6.src/M000188.html +0 -18
  473. data/doc/classes/Dnsruby/IPv6.src/M000209.html +0 -21
  474. data/doc/classes/Dnsruby/IPv6.src/M000211.html +0 -18
  475. data/doc/classes/Dnsruby/IPv6.src/M000212.html +0 -21
  476. data/doc/classes/Dnsruby/IPv6.src/M000213.html +0 -18
  477. data/doc/classes/Dnsruby/IPv6.src/M000214.html +0 -18
  478. data/doc/classes/Dnsruby/IPv6.src/M000215.html +0 -18
  479. data/doc/classes/Dnsruby/Message.src/M000087.html +0 -54
  480. data/doc/classes/Dnsruby/Message.src/M000088.html +0 -42
  481. data/doc/classes/Dnsruby/Message.src/M000089.html +0 -45
  482. data/doc/classes/Dnsruby/Message.src/M000090.html +0 -20
  483. data/doc/classes/Dnsruby/Message.src/M000091.html +0 -21
  484. data/doc/classes/Dnsruby/Message.src/M000092.html +0 -20
  485. data/doc/classes/Dnsruby/Message.src/M000093.html +0 -18
  486. data/doc/classes/Dnsruby/Message.src/M000094.html +0 -54
  487. data/doc/classes/Dnsruby/Message.src/M000095.html +0 -42
  488. data/doc/classes/Dnsruby/Message.src/M000096.html +0 -45
  489. data/doc/classes/Dnsruby/Name.src/M000062.html +0 -19
  490. data/doc/classes/Dnsruby/Name.src/M000064.html +0 -22
  491. data/doc/classes/Dnsruby/Name.src/M000065.html +0 -18
  492. data/doc/classes/Dnsruby/Name.src/M000066.html +0 -20
  493. data/doc/classes/Dnsruby/Name.src/M000067.html +0 -18
  494. data/doc/classes/Dnsruby/Name.src/M000068.html +0 -21
  495. data/doc/classes/Dnsruby/Name.src/M000069.html +0 -19
  496. data/doc/classes/Dnsruby/Name.src/M000071.html +0 -22
  497. data/doc/classes/Dnsruby/Name.src/M000072.html +0 -18
  498. data/doc/classes/Dnsruby/Name.src/M000073.html +0 -20
  499. data/doc/classes/Dnsruby/Name/Label.src/M000071.html +0 -18
  500. data/doc/classes/Dnsruby/Name/Label.src/M000072.html +0 -18
  501. data/doc/classes/Dnsruby/Name/Label.src/M000073.html +0 -18
  502. data/doc/classes/Dnsruby/Name/Label.src/M000074.html +0 -18
  503. data/doc/classes/Dnsruby/Name/Label.src/M000079.html +0 -18
  504. data/doc/classes/Dnsruby/Name/Label.src/M000080.html +0 -18
  505. data/doc/classes/Dnsruby/Name/Label.src/M000081.html +0 -18
  506. data/doc/classes/Dnsruby/Name/Label.src/M000082.html +0 -18
  507. data/doc/classes/Dnsruby/RR.src/M000014.html +0 -24
  508. data/doc/classes/Dnsruby/RR.src/M000015.html +0 -18
  509. data/doc/classes/Dnsruby/RR.src/M000016.html +0 -18
  510. data/doc/classes/Dnsruby/RR.src/M000017.html +0 -22
  511. data/doc/classes/Dnsruby/RR.src/M000018.html +0 -22
  512. data/doc/classes/Dnsruby/RR.src/M000019.html +0 -18
  513. data/doc/classes/Dnsruby/RR.src/M000020.html +0 -22
  514. data/doc/classes/Dnsruby/RR.src/M000021.html +0 -24
  515. data/doc/classes/Dnsruby/RR/DomainName.src/M000058.html +0 -22
  516. data/doc/classes/Dnsruby/RR/Generic.src/M000041.html +0 -25
  517. data/doc/classes/Dnsruby/RR/Generic.src/M000048.html +0 -25
  518. data/doc/classes/Dnsruby/RR/IN/A.src/M000020.html +0 -18
  519. data/doc/classes/Dnsruby/RR/IN/A.src/M000026.html +0 -18
  520. data/doc/classes/Dnsruby/RR/IN/A.src/M000027.html +0 -18
  521. data/doc/classes/Dnsruby/RR/IN/SRV.src/M000017.html +0 -22
  522. data/doc/classes/Dnsruby/RR/IN/SRV.src/M000023.html +0 -26
  523. data/doc/classes/Dnsruby/RR/IN/SRV.src/M000024.html +0 -22
  524. data/doc/classes/Dnsruby/RR/IN/WKS.src/M000028.html +0 -20
  525. data/doc/classes/Dnsruby/RR/LOC.src/M000032.html +0 -32
  526. data/doc/classes/Dnsruby/RR/LOC.src/M000033.html +0 -23
  527. data/doc/classes/Dnsruby/RR/LOC.src/M000034.html +0 -25
  528. data/doc/classes/Dnsruby/RR/LOC.src/M000035.html +0 -21
  529. data/doc/classes/Dnsruby/RR/LOC.src/M000036.html +0 -20
  530. data/doc/classes/Dnsruby/RR/LOC.src/M000037.html +0 -23
  531. data/doc/classes/Dnsruby/RR/NSAP.src/M000056.html +0 -31
  532. data/doc/classes/Dnsruby/RR/NSAP.src/M000061.html +0 -19
  533. data/doc/classes/Dnsruby/RR/NSAP.src/M000062.html +0 -22
  534. data/doc/classes/Dnsruby/RR/NSAP.src/M000063.html +0 -31
  535. data/doc/classes/Dnsruby/RR/RP.src/M000057.html +0 -19
  536. data/doc/classes/Dnsruby/RR/SOA.src/M000046.html +0 -24
  537. data/doc/classes/Dnsruby/RR/SOA.src/M000047.html +0 -27
  538. data/doc/classes/Dnsruby/RR/TKEY.src/M000030.html +0 -29
  539. data/doc/classes/Dnsruby/RR/TKEY.src/M000031.html +0 -30
  540. data/doc/classes/Dnsruby/RR/TSIG.src/M000049.html +0 -29
  541. data/doc/classes/Dnsruby/RR/TSIG.src/M000050.html +0 -71
  542. data/doc/classes/Dnsruby/RR/TSIG.src/M000051.html +0 -34
  543. data/doc/classes/Dnsruby/RR/TSIG.src/M000052.html +0 -37
  544. data/doc/classes/Dnsruby/RR/TSIG.src/M000053.html +0 -31
  545. data/doc/classes/Dnsruby/RR/TSIG.src/M000054.html +0 -34
  546. data/doc/classes/Dnsruby/RR/TSIG.src/M000055.html +0 -22
  547. data/doc/classes/Dnsruby/RR/TSIG.src/M000056.html +0 -29
  548. data/doc/classes/Dnsruby/RR/TXT.src/M000041.html +0 -18
  549. data/doc/classes/Dnsruby/RR/TXT.src/M000042.html +0 -18
  550. data/doc/classes/Dnsruby/RR/TXT.src/M000043.html +0 -20
  551. data/doc/classes/Dnsruby/RR/TXT.src/M000044.html +0 -27
  552. data/doc/classes/Dnsruby/RR/TXT.src/M000045.html +0 -25
  553. data/doc/classes/Dnsruby/RR/X25.src/M000038.html +0 -18
  554. data/doc/classes/Dnsruby/RR/X25.src/M000039.html +0 -18
  555. data/doc/classes/Dnsruby/RR/X25.src/M000040.html +0 -22
  556. data/doc/classes/Dnsruby/RRSet.src/M000165.html +0 -18
  557. data/doc/classes/Dnsruby/RRSet.src/M000166.html +0 -18
  558. data/doc/classes/Dnsruby/RRSet.src/M000188.html +0 -44
  559. data/doc/classes/Dnsruby/RRSet.src/M000189.html +0 -18
  560. data/doc/classes/Dnsruby/RRSet.src/M000190.html +0 -20
  561. data/doc/classes/Dnsruby/RRSet.src/M000191.html +0 -18
  562. data/doc/classes/Dnsruby/RRSet.src/M000192.html +0 -18
  563. data/doc/classes/Dnsruby/RRSet.src/M000193.html +0 -18
  564. data/doc/classes/Dnsruby/Resolv.src/M000121.html +0 -25
  565. data/doc/classes/Dnsruby/Resolv.src/M000137.html +0 -18
  566. data/doc/classes/Dnsruby/Resolv.src/M000138.html +0 -18
  567. data/doc/classes/Dnsruby/Resolv.src/M000139.html +0 -18
  568. data/doc/classes/Dnsruby/Resolv.src/M000140.html +0 -18
  569. data/doc/classes/Dnsruby/Resolv.src/M000141.html +0 -18
  570. data/doc/classes/Dnsruby/Resolv.src/M000142.html +0 -18
  571. data/doc/classes/Dnsruby/Resolv.src/M000143.html +0 -19
  572. data/doc/classes/Dnsruby/Resolv.src/M000144.html +0 -20
  573. data/doc/classes/Dnsruby/Resolv.src/M000145.html +0 -29
  574. data/doc/classes/Dnsruby/Resolv.src/M000146.html +0 -19
  575. data/doc/classes/Dnsruby/Resolv.src/M000147.html +0 -20
  576. data/doc/classes/Dnsruby/Resolv.src/M000148.html +0 -25
  577. data/doc/classes/Dnsruby/Resolver.src/M000230.html +0 -19
  578. data/doc/classes/Dnsruby/Resolver.src/M000231.html +0 -19
  579. data/doc/classes/Dnsruby/Resolver.src/M000232.html +0 -26
  580. data/doc/classes/Dnsruby/Resolver.src/M000233.html +0 -18
  581. data/doc/classes/Dnsruby/Resolver.src/M000234.html +0 -23
  582. data/doc/classes/Dnsruby/Resolver.src/M000235.html +0 -18
  583. data/doc/classes/Dnsruby/Resolver.src/M000236.html +0 -42
  584. data/doc/classes/Dnsruby/Resolver.src/M000244.html +0 -21
  585. data/doc/classes/Dnsruby/Resolver.src/M000245.html +0 -22
  586. data/doc/classes/Dnsruby/Resolver.src/M000246.html +0 -18
  587. data/doc/classes/Dnsruby/Resolver.src/M000247.html +0 -20
  588. data/doc/classes/Dnsruby/Resolver.src/M000248.html +0 -19
  589. data/doc/classes/Dnsruby/Resolver.src/M000249.html +0 -19
  590. data/doc/classes/Dnsruby/Resolver.src/M000250.html +0 -19
  591. data/doc/classes/Dnsruby/Resolver.src/M000251.html +0 -19
  592. data/doc/classes/Dnsruby/Resolver.src/M000252.html +0 -19
  593. data/doc/classes/Dnsruby/Resolver.src/M000253.html +0 -19
  594. data/doc/classes/Dnsruby/Resolver.src/M000254.html +0 -19
  595. data/doc/classes/Dnsruby/Resolver.src/M000255.html +0 -19
  596. data/doc/classes/Dnsruby/Resolver.src/M000256.html +0 -19
  597. data/doc/classes/Dnsruby/Resolver.src/M000257.html +0 -19
  598. data/doc/classes/Dnsruby/Resolver.src/M000258.html +0 -19
  599. data/doc/classes/Dnsruby/Resolver.src/M000259.html +0 -26
  600. data/doc/classes/Dnsruby/Resolver.src/M000260.html +0 -18
  601. data/doc/classes/Dnsruby/Resolver.src/M000261.html +0 -23
  602. data/doc/classes/Dnsruby/Resolver.src/M000262.html +0 -18
  603. data/doc/classes/Dnsruby/Resolver.src/M000263.html +0 -42
  604. data/doc/classes/Dnsruby/SelectInterface.html +0 -236
  605. data/doc/classes/Dnsruby/SelectInterface.src/M000001.html +0 -19
  606. data/doc/classes/Dnsruby/SelectInterface.src/M000002.html +0 -18
  607. data/doc/classes/Dnsruby/SelectInterface.src/M000003.html +0 -18
  608. data/doc/classes/Dnsruby/SelectInterface.src/M000004.html +0 -18
  609. data/doc/classes/Dnsruby/SelectInterface.src/M000005.html +0 -21
  610. data/doc/classes/Dnsruby/SelectInterface.src/M000006.html +0 -19
  611. data/doc/classes/Dnsruby/SelectInterface.src/M000007.html +0 -18
  612. data/doc/classes/Dnsruby/SingleResolver.src/M000150.html +0 -19
  613. data/doc/classes/Dnsruby/SingleResolver.src/M000151.html +0 -49
  614. data/doc/classes/Dnsruby/SingleResolver.src/M000155.html +0 -51
  615. data/doc/classes/Dnsruby/SingleResolver.src/M000156.html +0 -26
  616. data/doc/classes/Dnsruby/TheLog.src/M000216.html +0 -20
  617. data/doc/classes/Dnsruby/Update.src/M000195.html +0 -41
  618. data/doc/classes/Dnsruby/Update.src/M000196.html +0 -34
  619. data/doc/classes/Dnsruby/Update.src/M000222.html +0 -41
  620. data/doc/classes/Dnsruby/Update.src/M000223.html +0 -34
  621. data/doc/classes/Dnsruby/ZoneTransfer.src/M000096.html +0 -35
  622. data/doc/classes/Dnsruby/ZoneTransfer.src/M000102.html +0 -22
  623. data/doc/classes/Dnsruby/ZoneTransfer/Delta.src/M000097.html +0 -19
  624. data/doc/files/lib/Dnsruby/SelectInterface_rb.html +0 -108
data/doc/index.html CHANGED
@@ -19,6 +19,6 @@
19
19
  <frame src="fr_class_index.html" name="Classes" />
20
20
  <frame src="fr_method_index.html" name="Methods" />
21
21
  </frameset>
22
- <frame src="files/lib/dnsruby_rb.html" name="docwin" />
22
+ <frame src="classes/Dnsruby.html" name="docwin" />
23
23
  </frameset>
24
24
  </html>
@@ -60,6 +60,8 @@ module Dnsruby
60
60
  # domain (String)
61
61
  # search (String)
62
62
  # ndots (Fixnum)
63
+ #
64
+ # This method should not normally be called by client code.
63
65
  def set_config_info(config_info)
64
66
  parse_config(config_info)
65
67
  end
@@ -118,10 +120,14 @@ module Dnsruby
118
120
 
119
121
  # Set the default domain
120
122
  def domain=(dom)
121
- if !dom.kind_of?(String)
122
- raise ArgumentError.new("invalid domain config: #{@domain.inspect}")
123
+ if (dom)
124
+ if !dom.kind_of?(String)
125
+ raise ArgumentError.new("invalid domain config: #{@domain.inspect}")
126
+ end
127
+ @domain = Name::Label.split(dom)
128
+ else
129
+ @domain=nil
123
130
  end
124
- @domain = Name::Label.split(dom)
125
131
  end
126
132
 
127
133
  # Set ndots
@@ -151,7 +157,7 @@ module Dnsruby
151
157
  end
152
158
 
153
159
  if !@search.kind_of?(Array) ||
154
- # !@search.all? {|ls| ls.all? {|l| Label::Str === l } }
160
+ # !@search.all? {|ls| ls.all? {|l| Label::Str === l } }
155
161
  !@search.all? {|ls| ls.all? {|l| Name::Label === l } }
156
162
  raise ArgumentError.new("invalid search config: #{@search.inspect}")
157
163
  end
@@ -159,7 +165,7 @@ module Dnsruby
159
165
 
160
166
  def check_ns(ns) #:nodoc: all
161
167
  if !ns.kind_of?(Array) ||
162
- !ns.all? {|n| (String === n || IPv4 === n || IPv6 === n)}
168
+ !ns.all? {|n| (String === n || IPv4 === n || IPv6 === n)}
163
169
  raise ArgumentError.new("invalid nameserver config: #{ns.inspect}")
164
170
  end
165
171
  ns.each_index do |i|
data/lib/Dnsruby/DNS.rb CHANGED
@@ -17,19 +17,9 @@ require 'Dnsruby/Hosts'
17
17
  require 'Dnsruby/Config'
18
18
  require "Dnsruby/Resolver"
19
19
  module Dnsruby
20
- #--
21
- #@TODO@ Asynchronous interface. Do we want a callback (in a new thread) or a queue system?
22
- #Is there any point in taking a block? May as well...
23
- #e.g. getaddresses_async(name, Queue|Proc)
24
- #Could we make the final argument optional to all the standard calls? So they are either sync or async?
25
- #e.g. getaddresses(name{, Queue|Proc})
26
- #Yes to all but each_resource - would have to make a new each_resource_async or something...
27
- #@TODO@ BUT - need to pass in an ID as well as a queue to identify correct response
28
- #Proc can keep track of query ID itself
29
- #++
30
20
 
31
21
  #== Dnsruby::DNS class
32
- #DNS stub resolver.
22
+ #Resolv::DNS performs DNS queries.
33
23
  #
34
24
  #=== class methods
35
25
  #* Dnsruby::DNS.new(config_info=nil)
@@ -80,10 +70,17 @@ module Dnsruby
80
70
  #are tried (if there is no timely answer from the first).
81
71
  #
82
72
  #This class uses Resolver to perform the queries.
73
+ #
74
+ #Information taken from the following places :
75
+ #* STD0013
76
+ #* RFC 1035, etc.
77
+ #* ftp://ftp.isi.edu/in-notes/iana/assignments/dns-parameters
78
+ #* etc.
83
79
  class DNS
84
- # STD0013 (RFC 1035, etc.)
85
- # ftp://ftp.isi.edu/in-notes/iana/assignments/dns-parameters
86
80
 
81
+ #Creates a new DNS resolver. See Resolv::DNS.new for argument details.
82
+ #
83
+ #Yields the created DNS resolver to the block, if given, otherwise returns it.
87
84
  def self.open(*args)
88
85
  dns = new(*args)
89
86
  return dns unless block_given?
@@ -94,6 +91,7 @@ module Dnsruby
94
91
  end
95
92
  end
96
93
 
94
+ #Closes the resolver
97
95
  def close
98
96
  @resolver.close
99
97
  end
@@ -103,6 +101,18 @@ module Dnsruby
103
101
  return "DNS : " + @config.to_s
104
102
  end
105
103
 
104
+ #Creates a new DNS resolver
105
+ #
106
+ #+config_info+ can be:
107
+ #
108
+ #* nil:: Uses platform default (e.g. /etc/resolv.conf)
109
+ #* String:: Path to a file using /etc/resolv.conf's format
110
+ #* Hash:: Must contain :nameserver, :search and :ndots keys
111
+ # example :
112
+ #
113
+ # Dnsruby::DNS.new({:nameserver => ['210.251.121.21'],
114
+ # :search => ['ruby-lang.org'],
115
+ # :ndots => 1})
106
116
  def initialize(config_info=nil)
107
117
  @config = Config.new()
108
118
  @config.set_config_info(config_info)
@@ -111,32 +121,56 @@ module Dnsruby
111
121
 
112
122
  attr_reader :config
113
123
 
124
+ #Gets the first IP address of +name+ from the DNS resolver
125
+ #
126
+ #+name+ can be a Dnsruby::Name or a String. Retrieved address will be a
127
+ #Dnsruby::IPv4 or a Dnsruby::IPv6
114
128
  def getaddress(name)
115
129
  each_address(name) {|address| return address}
116
130
  raise ResolvError.new("DNS result has no information for #{name}")
117
131
  end
118
132
 
133
+ #Gets all IP addresses of +name+ from the DNS resolver
134
+ #
135
+ #+name+ can be a Dnsruby::Name or a String. Retrieved address will be a
136
+ #Dnsruby::IPv4 or a Dnsruby::IPv6
119
137
  def getaddresses(name)
120
138
  ret = []
121
139
  each_address(name) {|address| ret << address}
122
140
  return ret
123
141
  end
124
142
 
143
+ #Iterates over all IP addresses of +name+ retrieved from the DNS resolver
144
+ #
145
+ #+name+ can be a Dnsruby::Name or a String. Retrieved address will be a
146
+ #Dnsruby::IPv4 or a Dnsruby::IPv6
125
147
  def each_address(name)
126
148
  each_resource(name) {|resource| yield resource.address}
127
149
  end
128
150
 
151
+ #Gets the first hostname for +address+ from the DNS resolver
152
+ #
153
+ #+address+ must be a Dnsruby::IPv4, Dnsruby::IPv6 or a String. Retrieved
154
+ #name will be a Dnsruby::Name.
129
155
  def getname(address)
130
156
  each_name(address) {|name| return name}
131
157
  raise ResolvError.new("DNS result has no information for #{address}")
132
158
  end
133
159
 
160
+ #Gets all hostnames for +address+ from the DNS resolver
161
+ #
162
+ #+address+ must be a Dnsruby::IPv4, Dnsruby::IPv6 or a String. Retrieved
163
+ #name will be a Dnsruby::Name.
134
164
  def getnames(address)
135
165
  ret = []
136
166
  each_name(address) {|name| ret << name}
137
167
  return ret
138
168
  end
139
169
 
170
+ #Iterates over all hostnames for +address+ retrieved from the DNS resolver
171
+ #
172
+ #+address+ must be a Dnsruby::IPv4, Dnsruby::IPv6 or a String. Retrieved
173
+ #name will be a Dnsruby::Name.
140
174
  def each_name(address)
141
175
  case address
142
176
  when Name
@@ -151,44 +185,38 @@ module Dnsruby
151
185
  each_resource(ptr, Types.PTR, Classes.IN) {|resource| yield resource.domainname}
152
186
  end
153
187
 
188
+ #Look up the first +type+, +klass+ resource for +name+
189
+ #
190
+ #+type+ defaults to Dnsruby::Types.A
191
+ #+klass+ defaults to Dnsruby::Classes.IN
192
+ #
193
+ #Returned resource is represented as a Dnsruby::RR instance, e.g.
194
+ #Dnsruby::RR::IN::A
154
195
  def getresource(name, type=Types.A, klass=Classes.IN)
155
196
  each_resource(name, type, klass) {|resource| return resource}
156
197
  raise ResolvError.new("DNS result has no information for #{name}")
157
198
  end
158
199
 
200
+ #Look up all +type+, +klass+ resources for +name+
201
+ #
202
+ #+type+ defaults to Dnsruby::Types.A
203
+ #+klass+ defaults to Dnsruby::Classes.IN
204
+ #
205
+ #Returned resource is represented as a Dnsruby::RR instance, e.g.
206
+ #Dnsruby::RR::IN::A
159
207
  def getresources(name, type=Types.A, klass=Classes.IN)
160
208
  ret = []
161
209
  each_resource(name, type, klass) {|resource| ret << resource}
162
210
  return ret
163
211
  end
164
212
 
165
- def send_query(name, type=Types.A, klass=Classes.IN)
166
- q = Queue.new
167
- candidates = @config.generate_candidates(name)
168
- exception = nil
169
- candidates.each do |candidate|
170
- msg = Message.new
171
- msg.header.rd = 1
172
- msg.add_question(candidate, type, klass)
173
- @resolver.send_async(msg, q, q)
174
- id, ret, exception = q.pop
175
- if (exception == nil && ret.header.rcode == RCode.NOERROR)
176
- return ret, ret.question[0].qname
177
- end
178
- # if (ret.kind_of?Message)
179
- # exception = ret.header.rcode
180
- # if (ret.header.rcode==RCode.NOERROR)
181
- # return ret, ret.question[0].qname
182
- # end
183
- # else
184
- # #@TODO@ Keep trying until all the candidates are done
185
- # # raise ret
186
- # exception = ret
187
- # end
188
- end
189
- raise exception
190
- end
191
-
213
+ #Iterates over all +type+, +klass+ resources for +name+
214
+ #
215
+ #+type+ defaults to Dnsruby::Types.A
216
+ #+klass+ defaults to Dnsruby::Classes.IN
217
+ #
218
+ #Yielded resource is represented as a Dnsruby::RR instance, e.g.
219
+ #Dnsruby::RR::IN::A
192
220
  def each_resource(name, type=Types.A, klass=Classes.IN, &proc)
193
221
  type = Types.new(type)
194
222
  klass = Classes.new(klass)
@@ -203,12 +231,10 @@ module Dnsruby
203
231
  else
204
232
  TheLog.error("Unexpected rcode : #{reply.header.rcode.string}")
205
233
  raise Config::OtherResolvError.new(reply_name.to_s)
206
- end
207
-
234
+ end
208
235
  end
209
236
 
210
- def extract_resources(msg, name, type, klass)
211
- # if type < Types.ANY
237
+ def extract_resources(msg, name, type, klass) # :nodoc:
212
238
  if type == Types.ANY
213
239
  n0 = Name.create(name)
214
240
  msg.each_answer {|rec|
@@ -242,12 +268,33 @@ module Dnsruby
242
268
  end
243
269
  }
244
270
  end
245
-
246
- class DecodeError < StandardError
247
- end
248
271
 
249
- class EncodeError < StandardError
272
+ def send_query(name, type=Types.A, klass=Classes.IN) # :nodoc:
273
+ candidates = @config.generate_candidates(name)
274
+ exception = nil
275
+ candidates.each do |candidate|
276
+ q = Queue.new
277
+ msg = Message.new
278
+ msg.header.rd = 1
279
+ msg.add_question(candidate, type, klass)
280
+ @resolver.send_async(msg, q)
281
+ id, ret, exception = q.pop
282
+ if (exception == nil && ret.header.rcode == RCode.NOERROR)
283
+ return ret, ret.question[0].qname
284
+ end
285
+ end
286
+ raise exception
250
287
  end
251
-
288
+
252
289
  end
253
- end
290
+ end
291
+ #--
292
+ #@TODO@ Asynchronous interface. Do we want a callback (in a new thread) or a queue system?
293
+ #Is there any point in taking a block? May as well...
294
+ #e.g. getaddresses_async(name, Queue|Proc)
295
+ #Could we make the final argument optional to all the standard calls? So they are either sync or async?
296
+ #e.g. getaddresses(name{, Queue|Proc})
297
+ #Yes to all but each_resource - would have to make a new each_resource_async or something...
298
+ #@TODO@ BUT - need to pass in an ID as well as a queue to identify correct response
299
+ #Proc can keep track of query ID itself
300
+ #++
data/lib/Dnsruby/Hosts.rb CHANGED
@@ -15,7 +15,7 @@
15
15
  #++
16
16
  module Dnsruby
17
17
  #== Dnsruby::Hosts class
18
- #hostname resolver using /etc/hosts format.
18
+ #Dnsruby::Hosts is a hostname resolver that uses the system hosts file
19
19
  #
20
20
  #=== class methods
21
21
  #* Dnsruby::Hosts.new(hosts='/etc/hosts')
@@ -39,13 +39,14 @@ module Dnsruby
39
39
  DefaultFileName = '/etc/hosts'
40
40
  end
41
41
 
42
+ #Creates a new Dnsruby::Hosts using +filename+ for its data source
42
43
  def initialize(filename = DefaultFileName)
43
44
  @filename = filename
44
45
  @mutex = Mutex.new
45
46
  @initialized = nil
46
47
  end
47
48
 
48
- def lazy_initialize
49
+ def lazy_initialize# :nodoc:
49
50
  @mutex.synchronize {
50
51
  unless @initialized
51
52
  @name2addr = {}
@@ -80,17 +81,20 @@ module Dnsruby
80
81
  self
81
82
  end
82
83
 
84
+ #Gets the first IP address for +name+ from the hosts file
83
85
  def getaddress(name)
84
86
  each_address(name) {|address| return address}
85
87
  raise ResolvError.new("#{@filename} has no name: #{name}")
86
88
  end
87
89
 
90
+ #Gets all IP addresses for +name+ from the hosts file
88
91
  def getaddresses(name)
89
92
  ret = []
90
93
  each_address(name) {|address| ret << address}
91
94
  return ret
92
95
  end
93
96
 
97
+ #Iterates over all IP addresses for +name+ retrieved from the hosts file
94
98
  def each_address(name, &proc)
95
99
  lazy_initialize
96
100
  if @name2addr.include?(name)
@@ -98,17 +102,20 @@ module Dnsruby
98
102
  end
99
103
  end
100
104
 
105
+ #Gets the first hostname of +address+ from the hosts file
101
106
  def getname(address)
102
107
  each_name(address) {|name| return name}
103
108
  raise ResolvError.new("#{@filename} has no address: #{address}")
104
109
  end
105
110
 
111
+ #Gets all hostnames for +address+ from the hosts file
106
112
  def getnames(address)
107
113
  ret = []
108
114
  each_name(address) {|name| ret << name}
109
115
  return ret
110
116
  end
111
117
 
118
+ #Iterates over all hostnames for +address+ retrieved from the hosts file
112
119
  def each_name(address, &proc)
113
120
  lazy_initialize
114
121
  if @addr2name.include?(address)
@@ -16,18 +16,19 @@
16
16
  require "Dnsruby/SingleResolver"
17
17
  module Dnsruby
18
18
  #== Description
19
- # This class uses a set of SingleResolvers to perform queries with retries across multiple nameservers.
19
+ #Dnsruby::Resolver is a DNS stub resolver.
20
+ #This class uses a set of SingleResolvers to perform queries with retries across multiple nameservers.
20
21
  #
21
- # The retry policy is a combination of the Net::DNS and dnsjava approach, and has the option of :
22
+ #The retry policy is a combination of the Net::DNS and dnsjava approach, and has the option of :
22
23
  #* A total timeout for the query (defaults to 0, meaning "no total timeout")
23
24
  #* A retransmission system that targets the namervers concurrently once the first query round is
24
25
  # complete, but in which the total time per query round is split between the number of nameservers
25
26
  # targetted for the first round. and total time for query round is doubled for each query round
26
27
  #
27
- # Note that, if a total timeout is specified, then that will apply regardless of the retry policy
28
- # (i.e. it may cut retries short).
28
+ # Note that, if a total timeout is specified, then that will apply regardless of the retry policy
29
+ #(i.e. it may cut retries short).
29
30
  #
30
- # Note also that these timeouts are distinct from the SingleResolver's packet_timeout
31
+ # Note also that these timeouts are distinct from the SingleResolver's packet_timeout
31
32
  #
32
33
  #== Methods
33
34
  #
@@ -74,7 +75,7 @@ module Dnsruby
74
75
  attr_reader :use_tcp
75
76
 
76
77
 
77
- attr_reader :tsig_key
78
+ attr_reader :tsig
78
79
 
79
80
  # Should truncation be ignored?
80
81
  # i.e. the TC bit is ignored and thus the resolver will not requery over TCP if TC is set
@@ -159,7 +160,7 @@ module Dnsruby
159
160
  def send_message(message)
160
161
  TheLog.debug("Resolver : sending message")
161
162
  q = Queue.new
162
- send_async(message, q, q)
163
+ send_async(message, q)
163
164
  id, result, error = q.pop
164
165
  TheLog.debug("Resolver : result received")
165
166
  if (error != nil)
@@ -170,22 +171,48 @@ module Dnsruby
170
171
  end
171
172
 
172
173
 
173
- # Asynchronously sends a DNS packet (Dnsruby::Message). The client must pass in the
174
- # Message to be sent, a client_query_id to identify the message and a client_queue (of
175
- # class Queue) to pass the response back in.
174
+ #Asynchronously send a Message to the server. The send can be done using just
175
+ #Dnsruby, or using EventMachine.
176
176
  #
177
- # A tuple of (query_id, response_message, exception) will be added to the client_queue.
177
+ #== Dnsruby pure Ruby event loop :
178
+ #
179
+ #A client_queue is supplied by the client,
180
+ #along with an optional client_query_id to identify the response. The client_query_id
181
+ #is generated, if not supplied, and returned to the client.
182
+ #When the response is known,
183
+ #a tuple of (query_id, response_message, exception) will be added to the client_queue.
184
+ #
185
+ #The query is sent synchronously in the caller's thread. The select thread is then used to
186
+ #listen for and process the response (up to pushing it to the client_queue). The client thread
187
+ #is then used to retrieve the response and deal with it.
188
+ #
189
+ #Takes :
190
+ #
191
+ #* msg - the message to send
192
+ #* client_queue - a Queue to push the response to, when it arrives
193
+ #* client_query_id - an optional ID to identify the query to the client
194
+ #* use_tcp - whether to use TCP (defaults to SingleResolver.use_tcp)
178
195
  #
196
+ #Returns :
179
197
  #
180
- # example :
198
+ #* client_query_id - to identify the query response to the client. This ID is
199
+ #generated if it is not passed in by the client
181
200
  #
201
+ #=== Example invocations :
202
+ #
203
+ # id = res.send_async(msg, queue)
204
+ # NOT SUPPORTED : id = res.send_async(msg, queue, use_tcp)
205
+ # id = res.send_async(msg, queue, id)
206
+ # id = res.send_async(msg, queue, id, use_tcp)
207
+ #
208
+ #=== Example code :
209
+ #
182
210
  # require 'Dnsruby'
183
211
  # res = Dnsruby::Resolver.new
184
212
  # query_id = 10 # can be any object you like
185
213
  # query_queue = Queue.new
186
214
  # res.send_async(Message.new("example.com", Types.MX), query_queue, query_id)
187
- # query_id += 1
188
- # res.send_async(Message.new("example.com", Types.A), query_queue, query_id)
215
+ # query_id_2 = res.send_async(Message.new("example.com", Types.A), query_queue)
189
216
  # # ...do a load of other stuff here...
190
217
  # 2.times do
191
218
  # response_id, response, exception = query_queue.pop
@@ -196,7 +223,49 @@ module Dnsruby
196
223
  # # deal with problem
197
224
  # end
198
225
  # end
199
- # @TODO@ Sort out RDoc arguments to send_async!
226
+ #
227
+ #== If EventMachine is being used :
228
+ #
229
+ #If EventMachine is being used (see Dnsruby::Resolver::use_eventmachine, then this method returns
230
+ #an EM::Deferrable object. When the response is known, then the Deferrable will complete.
231
+ #If a queue (and ID) is passed in, then the response will also be
232
+ #pushed to the Queue. Note that an ID is not automatically generated by this version.
233
+ #
234
+ #=== Example invocations :
235
+ #
236
+ # deferrable = res.send_async(msg)
237
+ # deferrable = res.send_async(msg, use_tcp)
238
+ # deferrable = res.send_async(msg, q, id, use_tcp)
239
+ #
240
+ #=== Example code
241
+ #* Here is an example of using the code in an EventMachine style :
242
+ #
243
+ # require 'Dnsruby'
244
+ # require 'eventmachine'
245
+ # res = Dnsruby::Resolver.new
246
+ # Dnsruby::Resolver.use_eventmachine
247
+ # Dnsruby::Resolver.start_eventmachine_loop(false)
248
+ # EventMachine::run {
249
+ # df = res.send_async(Dnsruby::Message.new("example.com"))
250
+ # df.callback {|msg|
251
+ # puts "Response : #{msg}"
252
+ # EM.stop}
253
+ # df.errback {|msg, err|
254
+ # puts "Response : #{msg}"
255
+ # puts "Error: #{err}"
256
+ # EM.stop}
257
+ # }
258
+ #
259
+ #* And an example in a normal Dnsruby style :
260
+ #
261
+ # require 'Dnsruby'
262
+ # res = Dnsruby::Resolver.new
263
+ # Dnsruby::Resolver.use_eventmachine
264
+ # Dnsruby::Resolver.start_eventmachine_loop(true) # default
265
+ # q = Queue.new
266
+ # id = res.send_async(Dnsruby::Message.new("example.com"),q)
267
+ # id, response, error = q.pop
268
+ #
200
269
  def send_async(*args) # msg, client_queue, client_query_id)
201
270
  if (Resolver.eventmachine?)
202
271
  if (!@resolver_em)
@@ -223,7 +292,7 @@ module Dnsruby
223
292
  #
224
293
  # * :port
225
294
  # * :use_tcp
226
- # * :tsig_key
295
+ # * :tsig
227
296
  # * :ignore_truncation
228
297
  # * :src_address
229
298
  # * :src_port
@@ -238,6 +307,9 @@ module Dnsruby
238
307
  # * :retry_times
239
308
  # * :retry_delay
240
309
  def initialize(*args)
310
+ @resolver_em = nil
311
+ @resolver_ruby = nil
312
+ @src_address = nil
241
313
  reset_attributes
242
314
 
243
315
  # Process args
@@ -263,7 +335,7 @@ module Dnsruby
263
335
  @config = args[0]
264
336
  end
265
337
  else
266
- #@TODO@ ?
338
+ # Anything to do?
267
339
  end
268
340
  if (@single_resolvers==[])
269
341
  add_config_nameservers
@@ -302,7 +374,7 @@ module Dnsruby
302
374
  @port = DefaultPort
303
375
  @udp_size = DefaultUDPSize
304
376
  @use_tcp = false
305
- @tsig_key = nil
377
+ @tsig = nil
306
378
  @ignore_truncation = false
307
379
  @config = Config.new()
308
380
  @src_addr = '0.0.0.0'
@@ -316,7 +388,7 @@ module Dnsruby
316
388
  def update #:nodoc: all
317
389
  #Update any resolvers we have with the latest config
318
390
  @single_resolvers.each do |res|
319
- [:port, :use_tcp, :tsig_key, :ignore_truncation, :packet_timeout,
391
+ [:port, :use_tcp, :tsig, :ignore_truncation, :packet_timeout,
320
392
  :src_address, :src_port, :persistent_tcp, :persistent_udp, :recurse,
321
393
  :udp_size].each do |param|
322
394
 
@@ -337,6 +409,11 @@ module Dnsruby
337
409
  add_config_nameservers
338
410
  end
339
411
 
412
+ #--
413
+ #@TODO@ Should really auto-generate these methods.
414
+ #Also, any way to tie them up with SingleResolver RDoc?
415
+ #++
416
+
340
417
  def packet_timeout=(t)
341
418
  @packet_timeout = t
342
419
  update
@@ -352,8 +429,17 @@ module Dnsruby
352
429
  update
353
430
  end
354
431
 
355
- def tsig_key=(t)
356
- @tsig_key = t
432
+ #Sets the TSIG to sign outgoing messages with.
433
+ #Pass in either a Dnsruby::RR::TSIG, or a key_name and key (or just a key)
434
+ #Pass in nil to stop tsig signing.
435
+ #It is possible for client code to sign packets prior to sending - see
436
+ #Dnsruby::RR::TSIG#apply and Dnsruby::Message#sign
437
+ #Note that pre-signed packets will not be signed by SingleResolver.
438
+ #* res.tsig=(tsig_rr)
439
+ #* res.tsig=(key_name, key)
440
+ #* res.tsig=nil # Stop the resolver from signing
441
+ def tsig=(t)
442
+ @tsig=t
357
443
  update
358
444
  end
359
445
 
@@ -400,7 +486,7 @@ module Dnsruby
400
486
  #
401
487
  #Takes a bool to say whether or not to use EventMachine.
402
488
  def Resolver.use_eventmachine(on=true)
403
- if (!@@event_machine_available)
489
+ if (on && !@@event_machine_available)
404
490
  raise RuntimeError.new("EventMachine is not available in this environment!")
405
491
  end
406
492
  @@use_eventmachine = on
@@ -552,13 +638,13 @@ module Dnsruby
552
638
  df = single_resolver.send_async(msg) # client_queue, client_query_id)
553
639
  persistent_data.to_send-=1
554
640
  df.callback { |answer|
555
- TheLog.debug("Response returned, answer=#{answer}")
641
+ TheLog.debug("Response returned")
556
642
  persistent_data.outstanding.delete(df)
557
643
  cancel_queries(persistent_data)
558
644
  return_to_client(persistent_data.deferrable, client_queue, client_query_id, answer, nil)
559
645
  }
560
646
  df.errback { |response, error|
561
- TheLog.debug("Error #{error} returned, response=#{response}")
647
+ TheLog.debug("Error #{error} returned")
562
648
  persistent_data.outstanding.delete(df)
563
649
  if (response!="cancelling")
564
650
 
@@ -618,7 +704,6 @@ module Dnsruby
618
704
  end
619
705
 
620
706
  def return_to_client(deferrable, client_queue, client_query_id, answer, error)
621
- TheLog.debug("Returning answer=#{answer}, error=#{error} to client")
622
707
  if (client_queue)
623
708
  client_queue.push([client_query_id, answer, error])
624
709
  end
@@ -648,10 +733,11 @@ module Dnsruby
648
733
  msg=args[0]
649
734
  client_queue=nil
650
735
  client_query_id=nil
651
- client_queue=args[1]
652
- if (args.length > 2)
653
- client_query_id = args[2]
736
+ client_queue=args[1]
737
+ if (args.length > 2)
738
+ client_query_id = args[2]
654
739
  end
740
+
655
741
 
656
742
  # This is the whole point of the Resolver class.
657
743
  # We want to use multiple SingleResolvers to run a query.
@@ -664,7 +750,7 @@ module Dnsruby
664
750
 
665
751
  q = Queue.new
666
752
  if (client_query_id==nil)
667
- client_query_id = msg
753
+ client_query_id = Time.now + rand(10000)
668
754
  end
669
755
 
670
756
  if (!client_queue.kind_of?Queue)
@@ -711,7 +797,7 @@ module Dnsruby
711
797
  # These are created at the same time in case the parameters change during the life of the query.
712
798
  #
713
799
  # These should be absolute, rather than relative
714
- # The first value should be Time.now
800
+ # The first value should be Time.now[
715
801
  time_now = Time.now
716
802
  timeouts=@parent.generate_timeouts(time_now)
717
803
  return timeouts
@@ -732,7 +818,6 @@ module Dnsruby
732
818
  # Send the result back to the client, and close the socket for that query by removing
733
819
  # the query from the select thread.
734
820
  def send_result_and_close(client_queue, client_query_id, select_queue, msg, error) #:nodoc: all
735
- TheLog.debug("Sending result #{error} to client")
736
821
  # We might still get some callbacks, which we should ignore
737
822
  st = SelectThread.instance
738
823
  st.remove_observer(select_queue, self)