lib/net/ssh/ruby_compat.rb in net-ssh-net-ssh-2.0.13 vs lib/net/ssh/ruby_compat.rb in net-ssh-net-ssh-2.0.14
- old
+ new
@@ -1,7 +1,35 @@
+require 'thread'
+
class String
if RUBY_VERSION < "1.9"
def getbyte(index)
self[index]
end
end
-end
\ No newline at end of file
+end
+
+module Net; module SSH
+
+ # This class contains miscellaneous patches and workarounds
+ # for different ruby implementations.
+ class Compat
+
+ # A workaround for an IO#select threading bug in MRI 1.8.
+ # See: http://net-ssh.lighthouseapp.com/projects/36253/tickets/1-ioselect-threading-bug-in-ruby-18
+ # Also: http://redmine.ruby-lang.org/issues/show/1993
+ if RUBY_VERSION >= '1.9' || RUBY_PLATFORM == 'java'
+ def self.io_select(*params)
+ IO.select(*params)
+ end
+ else
+ SELECT_MUTEX = Mutex.new
+ def self.io_select(*params)
+ SELECT_MUTEX.synchronize do
+ IO.select(*params)
+ end
+ end
+ end
+
+ end
+
+end; end