Sounds good - but you still need to delete the last_e. -Madhu
>-----Original Message----- >From: Joe Orton [mailto:[EMAIL PROTECTED] >Sent: Monday, March 29, 2004 11:47 AM >To: [EMAIL PROTECTED] >Subject: Re: [PATCH] followup with EOC bucket type > > >On Fri, Mar 26, 2004 at 12:01:30PM -0800, Mathihalli, Madhusudan wrote: >> Hello, >> Should we just ignore the rest of the processing in >> core_output_filter after deleting the EOC bucket ? > >Yes, I think so, but by not leaving last_e pointing at a deleted bucket >it can be done without the extra variable, e.g.: > >Index: server/core.c >=================================================================== >RCS file: /home/cvs/httpd-2.0/server/core.c,v >retrieving revision 1.270 >diff -u -r1.270 core.c >--- server/core.c 25 Mar 2004 14:27:27 -0000 1.270 >+++ server/core.c 29 Mar 2004 19:42:16 -0000 >@@ -3873,12 +3873,9 @@ > { > /* keep track of the last bucket processed */ > last_e = e; >- if (APR_BUCKET_IS_EOS(e)) { >+ if (APR_BUCKET_IS_EOS(e) || AP_BUCKET_IS_EOC(e)) { > break; > } >- if (AP_BUCKET_IS_EOC(e)) { >- apr_bucket_delete(e); >- } > else if (APR_BUCKET_IS_FLUSH(e)) { > if (e != APR_BRIGADE_LAST(b)) { > more = apr_brigade_split(b, APR_BUCKET_NEXT(e)); >@@ -4034,7 +4031,8 @@ > /* Completed iterating over the brigade, now >determine if we want > * to buffer the brigade or send the brigade out on >the network. > * >- * Save if we haven't accumulated enough bytes to send, and: >+ * Save if we haven't accumulated enough bytes to >send, the connection >+ * is not about to be closed, and: > * > * 1) we didn't see a file, we don't have more >passes over the > * brigade to perform, AND we didn't stop at a >FLUSH bucket. >@@ -4045,6 +4043,7 @@ > * with the hope of concatenating with another response) > */ > if (nbytes + flen < AP_MIN_BYTES_TO_WRITE >+ && !AP_BUCKET_IS_EOC(last_e) > && ((!fd && !more && !APR_BUCKET_IS_FLUSH(last_e)) > || (APR_BUCKET_IS_EOS(last_e) > && c->keepalive == AP_CONN_KEEPALIVE))) { >
