summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornormal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-05-29 01:40:26 +0000
committernormal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-05-29 01:40:26 +0000
commit16aeffefa2670d7d3317488a46f2cc4e1a93fac0 (patch)
tree030f2fa67c7115f901dcd003a80efb407c8425b0
parentc1b35ab11e38382fc80b7c45d368710f99abd094 (diff)
lib/*: use monotonic clock for timeouts
The monotonic clock is preferred as it is guaranteed to be continuous and not subject to jumps due to adjustments. * lib/net/resolv.rb (request): use monotonic clock * lib/net/http.rb (begin_transport, end_transport): ditto git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50664 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--lib/net/http.rb4
-rw-r--r--lib/resolv.rb6
3 files changed, 10 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index c642a3328c..dc9efaf19e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Fri May 29 10:30:34 2015 Eric Wong <e@80x24.org>
+
+ * lib/net/resolv.rb (request): use monotonic clock
+ * lib/net/http.rb (begin_transport, end_transport): ditto
+
Fri May 29 04:37:38 2015 Koichi Sasada <ko1@atdot.net>
* ext/objspace/objspace.c: add two methods to debug internals.
diff --git a/lib/net/http.rb b/lib/net/http.rb
index 2fc541c2e8..4c1c3271ae 100644
--- a/lib/net/http.rb
+++ b/lib/net/http.rb
@@ -1460,7 +1460,7 @@ module Net #:nodoc:
def begin_transport(req)
if @socket.closed?
connect
- elsif @last_communicated && @last_communicated + @keep_alive_timeout < Time.now
+ elsif @last_communicated && @last_communicated + @keep_alive_timeout < Process.clock_gettime(Process::CLOCK_MONOTONIC)
D 'Conn close because of keep_alive_timeout'
@socket.close
connect
@@ -1484,7 +1484,7 @@ module Net #:nodoc:
@socket.close
elsif keep_alive?(req, res)
D 'Conn keep-alive'
- @last_communicated = Time.now
+ @last_communicated = Process.clock_gettime(Process::CLOCK_MONOTONIC)
else
D 'Conn close'
@socket.close
diff --git a/lib/resolv.rb b/lib/resolv.rb
index 9083bd0b53..ce36acf01f 100644
--- a/lib/resolv.rb
+++ b/lib/resolv.rb
@@ -667,7 +667,7 @@ class Resolv
end
def request(sender, tout)
- start = Time.now
+ start = Process.clock_gettime(Process::CLOCK_MONOTONIC)
timelimit = start + tout
begin
sender.send
@@ -676,7 +676,7 @@ class Resolv
raise ResolvTimeout
end
while true
- before_select = Time.now
+ before_select = Process.clock_gettime(Process::CLOCK_MONOTONIC)
timeout = timelimit - before_select
if timeout <= 0
raise ResolvTimeout
@@ -687,7 +687,7 @@ class Resolv
select_result = IO.select(@socks, nil, nil, timeout)
end
if !select_result
- after_select = Time.now
+ after_select = Process.clock_gettime(Process::CLOCK_MONOTONIC)
next if after_select < timelimit
raise ResolvTimeout
end