* ext/openssl/ossl_ssl.c (ossl_ssl_read): take optional second argument

to specify a string to be written.

* ext/openssl/lib/openssl/buffering.rb (OpenSSL::Buffering#read):
  take optional second argument to specify a string to be written.

* ext/openssl/lib/openssl/buffering.rb (OpenSSL::Buffering#gets):
  refine regexp for end-of-line.

* ext/opnessl/lib/openssl/ssl.rb
  (OpenSSL::SSL::SocketForwarder#listen): fix typo.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6411 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
gotoyuzo 2004-05-26 18:11:29 +00:00
parent 6dee0fab9b
commit fde5c3ff92
3 changed files with 19 additions and 8 deletions

View File

@ -54,14 +54,19 @@ module Buffering
public public
def read(size=nil) def read(size=nil, buf=nil)
fill_rbuff unless defined? @rbuffer fill_rbuff unless defined? @rbuffer
@eof ||= nil @eof ||= nil
until @eof until @eof
break if size && size <= @rbuffer.size break if size && size <= @rbuffer.size
fill_rbuff fill_rbuff
end end
consume_rbuff(size) ret = consume_rbuff(size) || ""
if buf
buf.replace(ret)
ret = buf
end
(size && ret.empty?) ? nil : ret
end end
def gets(eol=$/) def gets(eol=$/)
@ -164,7 +169,7 @@ module Buffering
s = "" s = ""
args.each{|arg| args.each{|arg|
s << arg.to_s s << arg.to_s
unless /#{$/}\Z/o =~ s unless /#{$/}\z/o =~ s
s << $/ s << $/
end end
} }

View File

@ -68,7 +68,7 @@ module OpenSSL
@svr @svr
end end
def listen(basklog=5) def listen(backlog=5)
@svr.listen(backlog) @svr.listen(backlog)
end end

View File

@ -484,16 +484,22 @@ ossl_ssl_accept(VALUE self)
} }
static VALUE static VALUE
ossl_ssl_read(VALUE self, VALUE len) ossl_ssl_read(int argc, VALUE *argv, VALUE self)
{ {
SSL *ssl; SSL *ssl;
int ilen, nread = 0; int ilen, nread = 0;
VALUE str; VALUE len, str;
OpenFile *fptr; OpenFile *fptr;
Data_Get_Struct(self, SSL, ssl); Data_Get_Struct(self, SSL, ssl);
rb_scan_args(argc, argv, "11", &len, &str);
ilen = NUM2INT(len); ilen = NUM2INT(len);
str = rb_str_new(0, ilen); if(NIL_P(str)) str = rb_str_new(0, ilen);
else{
StringValue(str);
rb_str_modify(str);
rb_str_resize(str, ilen);
}
if (ssl) { if (ssl) {
for (;;){ for (;;){
@ -730,7 +736,7 @@ Init_ossl_ssl()
rb_define_method(cSSLSocket, "initialize", ossl_ssl_initialize, -1); rb_define_method(cSSLSocket, "initialize", ossl_ssl_initialize, -1);
rb_define_method(cSSLSocket, "connect", ossl_ssl_connect, 0); rb_define_method(cSSLSocket, "connect", ossl_ssl_connect, 0);
rb_define_method(cSSLSocket, "accept", ossl_ssl_accept, 0); rb_define_method(cSSLSocket, "accept", ossl_ssl_accept, 0);
rb_define_method(cSSLSocket, "sysread", ossl_ssl_read, 1); rb_define_method(cSSLSocket, "sysread", ossl_ssl_read, -1);
rb_define_method(cSSLSocket, "syswrite", ossl_ssl_write, 1); rb_define_method(cSSLSocket, "syswrite", ossl_ssl_write, 1);
rb_define_method(cSSLSocket, "sysclose", ossl_ssl_close, 0); rb_define_method(cSSLSocket, "sysclose", ossl_ssl_close, 0);
rb_define_method(cSSLSocket, "cert", ossl_ssl_get_cert, 0); rb_define_method(cSSLSocket, "cert", ossl_ssl_get_cert, 0);