You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by sa...@apache.org on 2006/05/04 07:51:29 UTC

svn commit: r399558 - in /webservices/axis2/trunk/c/modules/core/transport/http/sender/ssl: ssl_stream.c ssl_utils.c

Author: sahan
Date: Wed May  3 22:51:29 2006
New Revision: 399558

URL: http://svn.apache.org/viewcvs?rev=399558&view=rev
Log:
Added error checking code for SSL transport

Modified:
    webservices/axis2/trunk/c/modules/core/transport/http/sender/ssl/ssl_stream.c
    webservices/axis2/trunk/c/modules/core/transport/http/sender/ssl/ssl_utils.c

Modified: webservices/axis2/trunk/c/modules/core/transport/http/sender/ssl/ssl_stream.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/transport/http/sender/ssl/ssl_stream.c?rev=399558&r1=399557&r2=399558&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/transport/http/sender/ssl/ssl_stream.c (original)
+++ webservices/axis2/trunk/c/modules/core/transport/http/sender/ssl/ssl_stream.c Wed May  3 22:51:29 2006
@@ -133,10 +133,30 @@
 {
     ssl_stream_impl_t *stream_impl = NULL;
     AXIS2_ENV_CHECK(env, AXIS2_CRTICAL_FAILURE);
+    int read = -1;
+    int len = -1;
     
     stream_impl = AXIS2_INTF_TO_IMPL(stream);
 
-    return SSL_read(stream_impl->ssl ,buffer,count);
+    read = SSL_read(stream_impl->ssl ,buffer,count);
+    switch(SSL_get_error(stream_impl->ssl ,read))
+    {
+        case SSL_ERROR_NONE:
+            len = read;
+            break;
+        case SSL_ERROR_ZERO_RETURN:
+            len = -1;
+            break;
+        case SSL_ERROR_SYSCALL:
+            AXIS2_LOG_ERROR((*env)->log, AXIS2_LOG_SI, 
+                        "SSL Error: Premature close");
+            len = -1;
+            break;
+        default:
+            len = -1;
+            break;
+     } 
+    return len;
 }
 
 int AXIS2_CALL
@@ -144,12 +164,23 @@
 						const void *buf, size_t count)
 {
 	ssl_stream_impl_t *stream_impl = NULL;
+    int write = -1;
 
     AXIS2_ENV_CHECK(env, AXIS2_CRTICAL_FAILURE);
     AXIS2_PARAM_CHECK((*env)->error, buf, AXIS2_FAILURE);
     stream_impl = AXIS2_INTF_TO_IMPL(stream);
-    return SSL_write(stream_impl->ssl, buf, count);
+    write = SSL_write(stream_impl->ssl, buf, count);
 
+    switch(SSL_get_error(stream_impl->ssl , write))
+    {
+        case SSL_ERROR_NONE:
+            if(count != write)
+            AXIS2_LOG_ERROR((*env)->log, AXIS2_LOG_SI, "Incomplete SSL write!");
+            break;
+        default:
+            return -1;
+    }
+    return write;
 }
 
 

Modified: webservices/axis2/trunk/c/modules/core/transport/http/sender/ssl/ssl_utils.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/transport/http/sender/ssl/ssl_utils.c?rev=399558&r1=399557&r2=399558&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/transport/http/sender/ssl/ssl_utils.c (original)
+++ webservices/axis2/trunk/c/modules/core/transport/http/sender/ssl/ssl_utils.c Wed May  3 22:51:29 2006
@@ -90,6 +90,12 @@
         return NULL;
     }
     SSL_set_bio(ssl, sbio, sbio);
+    if(SSL_connect(ssl) <=0 )
+    {
+        AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SSL_ENGINE, 
+                        AXIS2_FAILURE);
+        return NULL;
+    }
     return ssl;
 }