* ext/openssl/ossl_ssl.c (ossl_start_ssl, ossl_ssl_read,
ossl_ssl_write): need to set errno on Win32 platform. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8100 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
9f19f36ed5
commit
82849c97dd
@ -1,3 +1,8 @@
|
|||||||
|
Mon Mar 7 16:46:02 2005 NAKAMURA Usaku <usa@ruby-lang.org>
|
||||||
|
|
||||||
|
* ext/openssl/ossl_ssl.c (ossl_start_ssl, ossl_ssl_read,
|
||||||
|
ossl_ssl_write): need to set errno on Win32 platform.
|
||||||
|
|
||||||
Mon Mar 7 14:13:23 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
|
Mon Mar 7 14:13:23 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
|
||||||
|
|
||||||
* ext/openssl/lib/openssl/buffering.rb (Buffering#initialize):
|
* ext/openssl/lib/openssl/buffering.rb (Buffering#initialize):
|
||||||
|
@ -433,6 +433,12 @@ ossl_ssl_setup(VALUE self)
|
|||||||
return Qtrue;
|
return Qtrue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
#define ssl_get_error(ssl, ret) (errno = GetLastError(), SSL_get_error(ssl, ret))
|
||||||
|
#else
|
||||||
|
#define ssl_get_error(ssl, ret) SSL_get_error(ssl, ret)
|
||||||
|
#endif
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
ossl_start_ssl(VALUE self, int (*func)())
|
ossl_start_ssl(VALUE self, int (*func)())
|
||||||
{
|
{
|
||||||
@ -447,7 +453,7 @@ ossl_start_ssl(VALUE self, int (*func)())
|
|||||||
SSL_set_ex_data(ssl, ossl_ssl_ex_vcb_idx, (void *)cb);
|
SSL_set_ex_data(ssl, ossl_ssl_ex_vcb_idx, (void *)cb);
|
||||||
for(;;){
|
for(;;){
|
||||||
if((ret = func(ssl)) > 0) break;
|
if((ret = func(ssl)) > 0) break;
|
||||||
switch(SSL_get_error(ssl, ret)){
|
switch(ssl_get_error(ssl, ret)){
|
||||||
case SSL_ERROR_WANT_WRITE:
|
case SSL_ERROR_WANT_WRITE:
|
||||||
rb_io_wait_writable(fptr->fd);
|
rb_io_wait_writable(fptr->fd);
|
||||||
continue;
|
continue;
|
||||||
@ -503,7 +509,7 @@ ossl_ssl_read(int argc, VALUE *argv, VALUE self)
|
|||||||
rb_thread_wait_fd(fptr->fd);
|
rb_thread_wait_fd(fptr->fd);
|
||||||
for (;;){
|
for (;;){
|
||||||
nread = SSL_read(ssl, RSTRING(str)->ptr, RSTRING(str)->len);
|
nread = SSL_read(ssl, RSTRING(str)->ptr, RSTRING(str)->len);
|
||||||
switch(SSL_get_error(ssl, nread)){
|
switch(ssl_get_error(ssl, nread)){
|
||||||
case SSL_ERROR_NONE:
|
case SSL_ERROR_NONE:
|
||||||
goto end;
|
goto end;
|
||||||
case SSL_ERROR_ZERO_RETURN:
|
case SSL_ERROR_ZERO_RETURN:
|
||||||
@ -550,7 +556,7 @@ ossl_ssl_write(VALUE self, VALUE str)
|
|||||||
if (ssl) {
|
if (ssl) {
|
||||||
for (;;){
|
for (;;){
|
||||||
nwrite = SSL_write(ssl, RSTRING(str)->ptr, RSTRING(str)->len);
|
nwrite = SSL_write(ssl, RSTRING(str)->ptr, RSTRING(str)->len);
|
||||||
switch(SSL_get_error(ssl, nwrite)){
|
switch(ssl_get_error(ssl, nwrite)){
|
||||||
case SSL_ERROR_NONE:
|
case SSL_ERROR_NONE:
|
||||||
goto end;
|
goto end;
|
||||||
case SSL_ERROR_WANT_WRITE:
|
case SSL_ERROR_WANT_WRITE:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user