From cb4d7b1a7f5dd5749bbfb750957ca458bab3eab8 Mon Sep 17 00:00:00 2001 From: akr Date: Wed, 31 Dec 2008 04:52:18 +0000 Subject: * ext/openssl/lib/openssl/buffering.rb (Buffering#read_nonblock): implemented. * ext/openssl/ossl_ssl.c (rb_sys_fail_path): removed. (fcntl.h): don't include. (ossl_ssl_read_internal): defined. (ossl_ssl_read): use ossl_ssl_read_internal. (ossl_ssl_read_nonblock): use ossl_ssl_read_internal. (Init_ossl_ssl): define sysread_nonblock, instead of read_nonblock. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21207 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/openssl/lib/openssl/buffering.rb | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'ext/openssl/lib/openssl/buffering.rb') diff --git a/ext/openssl/lib/openssl/buffering.rb b/ext/openssl/lib/openssl/buffering.rb index 5dabcd5135..095ab248ce 100644 --- a/ext/openssl/lib/openssl/buffering.rb +++ b/ext/openssl/lib/openssl/buffering.rb @@ -99,6 +99,27 @@ module Buffering ret end + def read_nonblock(maxlen, buf=nil) + if maxlen == 0 + if buf + buf.clear + return buf + else + return "" + end + end + if @rbuffer.empty? + return sysread_nonblock(maxlen, buf) + end + ret = consume_rbuff(maxlen) + if buf + buf.replace(ret) + ret = buf + end + raise EOFError if ret.empty? + ret + end + def gets(eol=$/, limit=nil) idx = @rbuffer.index(eol) until @eof -- cgit v1.2.3