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