summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-03-07 07:47:40 +0000
committerusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-03-07 07:47:40 +0000
commit82849c97dd42961521fce3a084cb53dfdf94c6df (patch)
tree0780311f2e4c0692514f058c00be7c5fb2a953eb
parent9f19f36ed5be8025ea4a900bb93b03aa30e4a03b (diff)
* 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
-rw-r--r--ChangeLog5
-rw-r--r--ext/openssl/ossl_ssl.c12
2 files changed, 14 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 9bc225d8f8..de5846c167 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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>
* ext/openssl/lib/openssl/buffering.rb (Buffering#initialize):
diff --git a/ext/openssl/ossl_ssl.c b/ext/openssl/ossl_ssl.c
index 323dc97f83..d527f5ddc5 100644
--- a/ext/openssl/ossl_ssl.c
+++ b/ext/openssl/ossl_ssl.c
@@ -433,6 +433,12 @@ ossl_ssl_setup(VALUE self)
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
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);
for(;;){
if((ret = func(ssl)) > 0) break;
- switch(SSL_get_error(ssl, ret)){
+ switch(ssl_get_error(ssl, ret)){
case SSL_ERROR_WANT_WRITE:
rb_io_wait_writable(fptr->fd);
continue;
@@ -503,7 +509,7 @@ ossl_ssl_read(int argc, VALUE *argv, VALUE self)
rb_thread_wait_fd(fptr->fd);
for (;;){
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:
goto end;
case SSL_ERROR_ZERO_RETURN:
@@ -550,7 +556,7 @@ ossl_ssl_write(VALUE self, VALUE str)
if (ssl) {
for (;;){
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:
goto end;
case SSL_ERROR_WANT_WRITE: