pNet-DNS 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -164,8 +164,8 @@ module Net
164
164
  # @TODO@ should get config working on Windows
165
165
  os = Config::CONFIG['host_os'] # e.g. "mswin32"
166
166
  if (os=='mswin32')
167
- # Should we print a warning here? We don't *really* need the file...
168
- # print "WARNING: You must have \\etc\\resolv.conf for Net::DNS to work correctly\n"
167
+ # Should we print a warning here? We don't *really* need the file...
168
+ # print "WARNING: You must have \\etc\\resolv.conf for Net::DNS to work correctly\n"
169
169
  end
170
170
  # /etc/resolv.conf required
171
171
 
@@ -1594,9 +1594,9 @@ module Net
1594
1594
  # socket = nil
1595
1595
  #
1596
1596
  def bgisready(socket)
1597
- ready = IO.select([socket], nil, nil, 0)
1598
- return ready!=nil
1599
- # return socket.ready? > 0
1597
+ ready = IO.select([socket], nil, nil, 0)
1598
+ return ready!=nil
1599
+ # return socket.ready? > 0
1600
1600
  end
1601
1601
 
1602
1602
  def make_query_packet(args)
@@ -1696,9 +1696,14 @@ module Net
1696
1696
  zone=[]
1697
1697
 
1698
1698
  if (axfr_start(args[0], args[1]))
1699
- rr, err = axfr_next, rr
1700
- while (rr && !err) do
1701
- zone.push(rr)
1699
+ continueLoop= true
1700
+ err = nil
1701
+ while (continueLoop)
1702
+ rr, err = axfr_next
1703
+ continueLoop = rr!=nil && err==nil
1704
+ if (continueLoop)
1705
+ zone.push(rr)
1706
+ end
1702
1707
  end
1703
1708
  zone = [] if err
1704
1709
  end
@@ -1809,8 +1814,9 @@ module Net
1809
1814
  def axfr_next
1810
1815
  err = ''
1811
1816
 
1812
- unless (@axfr_rr)
1813
- unless (@axfr_sock)
1817
+ # @todo this can't be right!!!
1818
+ unless (@axfr_rr!=[])
1819
+ unless (@axfr_sock!=nil)
1814
1820
  err = 'no zone transfer in progress'
1815
1821
 
1816
1822
  print ";; #{err}\n" if @debug
@@ -1820,12 +1826,13 @@ module Net
1820
1826
  end
1821
1827
 
1822
1828
  timeout = @tcp_timeout
1829
+ sock = @axfr_sock
1823
1830
 
1824
1831
  #--------------------------------------------------------------
1825
1832
  # Read the length of the response packet.
1826
1833
  #--------------------------------------------------------------
1827
1834
 
1828
- # ready = sock.wait(timeout)
1835
+ # ready = sock.wait(timeout)
1829
1836
  ready = IO.select([sock], nil, nil, timeout)
1830
1837
  unless (ready)
1831
1838
  err = 'timeout';
@@ -1833,7 +1840,7 @@ module Net
1833
1840
  return nil, err
1834
1841
  end
1835
1842
 
1836
- buf, from = read_tcp(socket, Net::DNS::INT16SZ, @debug)
1843
+ buf, from = read_tcp(sock, Net::DNS::INT16SZ, @debug)
1837
1844
  unless (buf.length > 0)
1838
1845
  err = 'truncated zone transfer'
1839
1846
  @errorstring=(err)
@@ -1852,25 +1859,25 @@ module Net
1852
1859
  #--------------------------------------------------------------
1853
1860
 
1854
1861
  ready = IO.select([sock], nil, nil, timeout)
1855
- # ready = sel.wait(timeout) # should be sock.wait, anyway!
1862
+ # ready = sel.wait(timeout) # should be sock.wait, anyway!
1856
1863
  unless (ready)
1857
1864
  err = 'timeout'
1858
1865
  @errorstring=(err)
1859
1866
  return nil, err
1860
1867
  end
1861
1868
 
1862
- buf, from = read_tcp(socket, len, @debug)
1869
+ buf, from = read_tcp(sock, len, @debug)
1863
1870
 
1864
- print ';; received ' + buf.length + " bytes\n" if @debug
1871
+ print ';; received ' + buf.length.to_s + " bytes\n" if @debug
1865
1872
 
1866
1873
  unless (buf.length == len)
1867
- err = "expected #{len} bytes, received " + buf.length
1874
+ err = "expected #{len} bytes, received " + buf.length.to_s
1868
1875
  @errorstring=(err)
1869
1876
  print ";; #{err}\n" if @debug
1870
1877
  return nil, err
1871
1878
  end
1872
1879
 
1873
- ans, err = Net::DNS::Packet.new(buf, @debug)
1880
+ ans, err = Net::DNS::Packet.new_from_binary(buf, @debug)
1874
1881
 
1875
1882
  if (ans)
1876
1883
  if (ans.header.rcode != 'NOERROR')
@@ -1894,8 +1901,8 @@ module Net
1894
1901
 
1895
1902
  ans.answer.each do |rr|
1896
1903
  if (rr.type == 'SOA')
1897
- axfr_soa_count +=1
1898
- if (axfr_soa_count < 2)
1904
+ @axfr_soa_count +=1
1905
+ if (@axfr_soa_count < 2)
1899
1906
  @axfr_rr.push(rr)
1900
1907
  end
1901
1908
  else
@@ -1914,7 +1921,7 @@ module Net
1914
1921
 
1915
1922
  rr = @axfr_rr.shift
1916
1923
 
1917
- return rr # , undef)
1924
+ return rr # , nil)
1918
1925
  end
1919
1926
 
1920
1927
  def dnssec=(new_val)
data/test/tc_axfr.rb ADDED
@@ -0,0 +1,30 @@
1
+ # The contents of this file are subject to the Mozilla
2
+ # Public Licence Version 1.1 (the "Licence"); you may
3
+ # not use this file except in compliance with the
4
+ # Licence. You may obtain a copy of the Licence at
5
+ # http://www.mozilla.org/MPL
6
+ # Software distributed under the Licence is distributed
7
+ # on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND,
8
+ # either express or implied. See the Licence of the
9
+ # specific language governing rights and limitations
10
+ # under the Licence.
11
+ # The Original Code is pNet::DNS.
12
+ # The Initial Developer of the Original Code is
13
+ # Nominet UK (www.nominet.org.uk). Portions created by
14
+ # Nominet UK are Copyright (c) Nominet UK 2006.
15
+ # All rights reserved.
16
+ require 'test/unit'
17
+ require 'Net/DNS'
18
+ require 'socket'
19
+ class TestAxfr < Test::Unit::TestCase
20
+ def test_carlos
21
+ res = Net::DNS::Resolver.new()
22
+ res.nameservers=('ns1.net-dns.org')
23
+ res.debug=false
24
+
25
+ zone = res.axfr("net-dns.org")
26
+
27
+ assert(zone.size > 0)
28
+
29
+ end
30
+ end
data/test/ts_online.rb CHANGED
@@ -26,6 +26,7 @@ begin
26
26
  require "test/tc_recurse.rb"
27
27
  require "test/tc_resolver.rb"
28
28
  require "test/tc_tcp.rb"
29
+ require "test/tc_axfr.rb"
29
30
  rescue Error
30
31
  puts "Cannot bind to socket:\n\t"+$!+"\n"
31
32
  puts "This is an indication you have network problems\n"
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0
3
3
  specification_version: 1
4
4
  name: pNet-DNS
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.0.3
7
- date: 2006-12-14 00:00:00 +00:00
6
+ version: 0.0.4
7
+ date: 2006-12-19 00:00:00 +00:00
8
8
  summary: Ruby port of perl Net::DNS
9
9
  require_paths:
10
10
  - lib
@@ -31,6 +31,7 @@ authors:
31
31
  files:
32
32
  - test/custom.txt
33
33
  - test/resolv.conf
34
+ - test/tc_axfr.rb
34
35
  - test/tc_escapedchars.rb
35
36
  - test/tc_header.rb
36
37
  - test/tc_inet6.rb