From f0f9f6f2643ffc49f39636a1b2e1313d1b08ff7c Mon Sep 17 00:00:00 2001 From: "William A. Rowe Jr" Date: Tue, 5 Nov 2002 03:38:14 +0000 Subject: [PATCH] With a last little bit of help from Justin, this should cause the appropriate amount of tumolt and turmoil if our client has 'gone away' on us, sparing us of further processing (and potential 'renegotiations' with a non-existant client.) git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk/modules/ssl@97400 13f79535-47bb-0310-9956-ffa450edef68 --- ssl_engine_io.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/ssl_engine_io.c b/ssl_engine_io.c index cb1d0fe4011..264a3d7f4e0 100644 --- a/ssl_engine_io.c +++ b/ssl_engine_io.c @@ -643,6 +643,12 @@ static apr_status_t ssl_io_filter_Output(ap_filter_t *f, apr_status_t status = APR_SUCCESS; SSLFilterRec *filter_ctx = f->ctx; + if (f->c->aborted) { + /* XXX: This works in 2.0.43, but this will change soon */ + apr_brigade_cleanup(bb); + return APR_ECONNABORTED; + } + if (!filter_ctx->pssl) { /* ssl_abort() has been called */ return ap_pass_brigade(f->next, bb); @@ -950,6 +956,16 @@ static apr_status_t ssl_io_filter_Input(ap_filter_t *f, apr_size_t len = sizeof(inctx->buffer); int is_init = (mode == AP_MODE_INIT); + if (f->c->aborted) { + /* XXX: Ok, if we aborted, we ARE at the EOS. We also have + * aborted. This 'double protection' is probably redundant, + * but also effective against just about anything. + */ + apr_bucket *bucket = apr_bucket_eos_create(f->c->bucket_alloc); + APR_BRIGADE_INSERT_TAIL(bb, bucket); + return APR_ECONNABORTED; + } + if (!inctx->ssl) { return ap_get_brigade(f->next, bb, mode, block, readbytes); } -- 2.47.2