httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Blair Zajac <bl...@orcaware.com>
Subject Re: Runaway SSL httpd server processes
Date Sun, 07 Apr 2002 18:52:20 GMT
Doug MacEachern wrote:
> 
> i haven't been able to reproduce this, but the patch below (also in
> cvs) may fix.  seeing that ssl_io_hook_read sets rc = 0 if SSL_read
> returns -1 and SSL_get_error is SSL_ERROR_WANT_READ.  ssl_io_input_read
> was *always* returning APR_SUCCESS if it got 0 bytes.  now it only does so
> if SSL_ERROR_WANT_READ was the reason, otherwise returns APR_EOF.
> 
> Index: modules/ssl/ssl_engine_io.c
> ===================================================================
> RCS file: /home/cvs/httpd-2.0/modules/ssl/ssl_engine_io.c,v
> retrieving revision 1.72
> diff -u -r1.72 ssl_engine_io.c
> --- modules/ssl/ssl_engine_io.c 5 Apr 2002 07:31:44 -0000       1.72
> +++ modules/ssl/ssl_engine_io.c 7 Apr 2002 06:25:36 -0000
> @@ -485,7 +485,7 @@
> 
>      rc = SSL_read(ssl, buf, len);
> 
> -    if (rc < 0) {
> +    if (rc <= 0) {
>          int ssl_err = SSL_get_error(ssl, rc);
> 
>          if (ssl_err == SSL_ERROR_WANT_READ) {
> @@ -673,6 +673,10 @@
>          if (ctx->inbio.mode == AP_MODE_SPECULATIVE) {
>              char_buffer_write(&ctx->cbuf, buf, rc);
>          }
> +    }
> +    else if ((rc == 0) && (errno != EINTR)) {
> +        /* something other than SSL_ERROR_WANT_READ */
> +        return APR_EOF;
>      }
>      else if ((rc == -1) && (ctx->inbio.rc == APR_SUCCESS)) {
>          /*

Doug,

Thanks.  This patch did the trick.  I'm not seeing any runaway processes
processes any more.

Best,
Blair

-- 
Blair Zajac <blair@orcaware.com>
Web and OS performance plots - http://www.orcaware.com/orca/

Mime
View raw message