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 <[EMAIL PROTECTED]>
Web and OS performance plots - http://www.orcaware.com/orca/