Skip to content
This repository was archived by the owner on Dec 7, 2018. It is now read-only.

Commit ea8cb44

Browse files
committed
Encode IDNs with punycode before trying to resolve them
via the adressable gem
1 parent 30b111f commit ea8cb44

File tree

2 files changed

+3
-0
lines changed

2 files changed

+3
-0
lines changed

celluloid-dns.gemspec

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ Gem::Specification.new do |spec|
2626
spec.add_dependency("celluloid", "~> 0.17.3")
2727
spec.add_dependency("celluloid-io", "~> 0.17.3")
2828
spec.add_dependency("timers", "~> 4.1.0")
29+
spec.add_dependency("addressable", "~> 2.4.0")
2930

3031
spec.add_development_dependency "bundler", "~> 1.3"
3132
spec.add_development_dependency "process-daemon", "~> 1.0.0"

lib/celluloid/dns/resolver.rb

+2
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
require 'securerandom'
2424
require 'celluloid/io'
25+
require 'addressable'
2526

2627
module Celluloid::DNS
2728
class InvalidProtocolError < StandardError
@@ -71,6 +72,7 @@ def fully_qualified_name(name)
7172
end
7273

7374
# ..else if we have a string, we need to do some basic processing:
75+
name = Addressable::IDNA.to_ascii(name) unless name.ascii_only?
7476
if name.end_with? '.'
7577
return Resolv::DNS::Name.create(name)
7678
else

0 commit comments

Comments
 (0)