aboutsummaryrefslogtreecommitdiffstats
path: root/lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb')
-rw-r--r--lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb27
1 files changed, 27 insertions, 0 deletions
diff --git a/lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb b/lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb
new file mode 100644
index 0000000000..e5e09080c2
--- /dev/null
+++ b/lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb
@@ -0,0 +1,27 @@
+require 'net/protocol'
+
+##
+# Aaron Patterson's monkeypatch (accepted into 1.9.1) to fix Net::HTTP's speed
+# problems.
+#
+# http://gist.github.com/251244
+
+class Net::BufferedIO #:nodoc:
+ alias :old_rbuf_fill :rbuf_fill
+
+ def rbuf_fill
+ if @io.respond_to? :read_nonblock then
+ begin
+ @rbuf << @io.read_nonblock(65536)
+ rescue Errno::EWOULDBLOCK, Errno::EAGAIN => e
+ retry if IO.select [@io], nil, nil, @read_timeout
+ raise Timeout::Error, e.message
+ end
+ else # SSL sockets do not have read_nonblock
+ timeout @read_timeout do
+ @rbuf << @io.sysread(65536)
+ end
+ end
+ end
+end if RUBY_VERSION < '1.9'
+