You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by jf...@apache.org on 2010/03/26 10:05:44 UTC

svn commit: r927740 - /tomcat/native/branches/1.1.x/native/src/sslnetwork.c

Author: jfclere
Date: Fri Mar 26 09:05:43 2010
New Revision: 927740

URL: http://svn.apache.org/viewvc?rev=927740&view=rev
Log:
Make the non blocking write really no blocking.

Modified:
    tomcat/native/branches/1.1.x/native/src/sslnetwork.c

Modified: tomcat/native/branches/1.1.x/native/src/sslnetwork.c
URL: http://svn.apache.org/viewvc/tomcat/native/branches/1.1.x/native/src/sslnetwork.c?rev=927740&r1=927739&r2=927740&view=diff
==============================================================================
--- tomcat/native/branches/1.1.x/native/src/sslnetwork.c (original)
+++ tomcat/native/branches/1.1.x/native/src/sslnetwork.c Fri Mar 26 09:05:43 2010
@@ -448,12 +448,14 @@ ssl_socket_send(apr_socket_t *sock, cons
     tcn_ssl_conn_t *con = (tcn_ssl_conn_t *)sock;
     int s, i, wr = (int)(*len);
     apr_status_t rv = APR_SUCCESS;
+    apr_int32_t nb;
 
     if (con->reneg_state == RENEG_ABORT) {
         *len = 0;
         con->shutdown_type = SSL_SHUTDOWN_TYPE_UNCLEAN;
         return APR_ECONNABORTED;
     }
+    apr_socket_opt_get(con->sock, APR_SO_NONBLOCK, &nb);
     for (;;) {
         if ((s = SSL_write(con->ssl, buf, wr)) <= 0) {
             apr_status_t os = apr_get_netos_error();
@@ -469,6 +471,10 @@ ssl_socket_send(apr_socket_t *sock, cons
                 break;
                 case SSL_ERROR_WANT_READ:
                 case SSL_ERROR_WANT_WRITE:
+                    if (nb && i == SSL_ERROR_WANT_WRITE) {
+                        *len = 0;
+                        return APR_SUCCESS;
+                    }
                     if ((rv = wait_for_io_or_timeout(con, i)) != APR_SUCCESS) {
                         con->shutdown_type = SSL_SHUTDOWN_TYPE_UNCLEAN;
                         return rv;



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org