2016-01-11 74 views
1

我正在使用RubyDNS。 當我使用匹配塊,否則,我想跳過匹配的一些地址,所以他們會被其他塊捕獲。 但它不會去阻止。RubyDNS以其他方式不起作用

RubyDNS.run_server(listen: INTERFACES, asynchronous: false) do 
    upstream = RubyDNS::Resolver.new([[:udp, "8.8.8.8", 53], [:tcp, "8.8.8.8", 53]]) 

    match(/^([\d\.]+)\.in-addr\.arpa$/, IN::PTR) do |transaction, match_data| 

    domain = nil # just for test 

    if domain 
     transaction.respond!(Name.create(domain)) 
    else 
     # Pass the request to the otherwise handler 
     # !!! this doesn't work 
     false 
    end 
    end 

    otherwise do |transaction| 
    transaction.passthrough!(upstream) 
    end 
end 

當我從匹配塊返回false時 - 它不會去阻塞。 如何解決這個問題?

回答

1

我發現如何繼續以其他方式阻止匹配塊:使用'next!'

match(/^([\d\.]+)\.in-addr\.arpa$/, IN::PTR) do |transaction, match_data| 

domain = nil # just for test 

if domain 
    transaction.respond!(Name.create(domain)) 
else 
    # Pass the request to the otherwise handler 
    next! 
end 
end 
otherwise do |transaction| 
    transaction.passthrough!(upstream) 
end 
+0

該文檔位於:http://www.rubydoc.info/gems/rubydns/RubyDNS%2FRuleBasedServer%3Anext%21 – ioquatix

相關問題