* 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:
parent
6dee0fab9b
commit
fde5c3ff92
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user