em-resolv-replace 1.1.0 → 1.1.1

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.0
1
+ 1.1.1
@@ -8,7 +8,12 @@ module EventMachine
8
8
  ##
9
9
 
10
10
  def self.resolve(hostname)
11
- Request.new(socket, hostname)
11
+ if ::Resolv::AddressRegex =~ hostname
12
+ # hostname contains an IP address, nothing to resolve
13
+ Request.new(nil, hostname)
14
+ else
15
+ Request.new(socket, hostname)
16
+ end
12
17
  end
13
18
 
14
19
  def self.socket
@@ -110,6 +115,12 @@ module EventMachine
110
115
  EM.next_tick { tick }
111
116
  end
112
117
  def tick
118
+ # @hostname contains an IP address
119
+ if @socket.nil?
120
+ succeed [ @hostname ]
121
+ return
122
+ end
123
+
113
124
  # Break early if nothing to do
114
125
  return if @last_send + @retry_interval > Time.now
115
126
 
@@ -6,22 +6,10 @@ require 'resolv-replace'
6
6
  require 'em-dns-resolver'
7
7
  require 'fiber'
8
8
 
9
- #
10
- =begin
11
- require './em-resolv-replace'
12
- EM.run {
13
- Fiber.new do
14
- p Resolv.getaddresses('localhost')
15
- p Resolv.getaddress('localhost')
16
- EM.stop
17
- end.resume
18
- }
19
- =end
20
9
  # Now override the override with EM-aware functions
21
10
  class Resolv
22
-
23
11
  alias :orig_getaddress :getaddress
24
-
12
+
25
13
  def getaddress(host)
26
14
  EM.reactor_running? ? em_getaddresses(host)[0] : orig_getaddress(host)
27
15
  end
@@ -56,4 +44,4 @@ class Resolv
56
44
  end
57
45
  result
58
46
  end
59
- end
47
+ end
@@ -2,20 +2,18 @@ require 'helper'
2
2
 
3
3
  class TestEmResolvReplace < Test::Unit::TestCase
4
4
 
5
- IPv4 = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/
6
-
7
5
  should "resolve address without eventmachine" do
8
6
  Resolv.any_instance.expects(:em_getaddress).times(0)
9
7
 
10
- assert_match IPv4, Resolv.getaddress('www.google.com')
8
+ assert_match ::Resolv::AddressRegex, Resolv.getaddress('www.google.com')
11
9
  end
12
-
10
+
13
11
  should "resolve address with eventmachine" do
14
12
  Resolv.any_instance.expects(:orig_getaddress).times(0)
15
13
 
16
14
  EM.run do
17
15
  Fiber.new do
18
- assert_match IPv4, Resolv.getaddress('www.google.com')
16
+ assert_match ::Resolv::AddressRegex, Resolv.getaddress('www.google.com')
19
17
  EM.stop
20
18
  end.resume
21
19
  end
@@ -25,16 +23,16 @@ class TestEmResolvReplace < Test::Unit::TestCase
25
23
  Resolv.any_instance.expects(:em_getaddress).times(0)
26
24
 
27
25
  results = Resolv.getaddresses('www.google.com')
28
- assert_match IPv4, results.first
26
+ assert_match ::Resolv::AddressRegex, results.first
29
27
  end
30
-
28
+
31
29
  should "resolve addresses with eventmachine" do
32
30
  Resolv.any_instance.expects(:orig_getaddresses).times(0)
33
31
 
34
32
  EM.run do
35
33
  Fiber.new do
36
34
  results = Resolv.getaddresses('www.google.com')
37
- assert_match IPv4, results.first
35
+ assert_match ::Resolv::AddressRegex, results.first
38
36
  EM.stop
39
37
  end.resume
40
38
  end
@@ -46,7 +44,21 @@ class TestEmResolvReplace < Test::Unit::TestCase
46
44
  EM.run do
47
45
  Fiber.new do
48
46
  results = Resolv.getaddresses('localhost')
49
- assert (results.first =~ IPv4 || results.first =~ /::/), "Invalid IP #{results}"
47
+ assert (results.first =~ ::Resolv::AddressRegex || results.first =~ /::/), "Invalid IP #{results}"
48
+ EM.stop
49
+ end.resume
50
+ end
51
+ end
52
+
53
+ should "not try to resolve an IP address" do
54
+ Resolv.any_instance.expects(:orig_getaddresses).times(0)
55
+
56
+ EM.run do
57
+ Fiber.new do
58
+ results = Resolv.getaddresses('127.0.0.1') # IPv4
59
+ assert (results.first == '127.0.0.1')
60
+ results = Resolv.getaddresses('::1') # IPv6
61
+ assert (results.first == '::1')
50
62
  EM.stop
51
63
  end.resume
52
64
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 1
7
7
  - 1
8
- - 0
9
- version: 1.1.0
8
+ - 1
9
+ version: 1.1.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Mike Perham
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-04-05 00:00:00 -05:00
17
+ date: 2010-04-08 00:00:00 -05:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency