On 01/27/2016 03:51 PM, [email protected] wrote:
> Author: icing
> Date: Wed Jan 27 14:51:53 2016
> New Revision: 1727071
> 
> URL: http://svn.apache.org/viewvc?rev=1727071&view=rev
> Log:
> new hook pre_close_connection
> 
> Modified:
>     httpd/httpd/trunk/CHANGES
>     httpd/httpd/trunk/include/http_connection.h
>     httpd/httpd/trunk/server/connection.c
>     httpd/httpd/trunk/server/mpm/event/event.c
> 


> Modified: httpd/httpd/trunk/server/connection.c
> URL: 
> http://svn.apache.org/viewvc/httpd/httpd/trunk/server/connection.c?rev=1727071&r1=1727070&r2=1727071&view=diff
> ==============================================================================
> --- httpd/httpd/trunk/server/connection.c (original)
> +++ httpd/httpd/trunk/server/connection.c Wed Jan 27 14:51:53 2016

> @@ -92,6 +95,17 @@ AP_CORE_DECLARE(void) ap_flush_conn(conn
>      (void)ap_shutdown_conn(c, 1);
>  }
>  
> +AP_DECLARE(int) ap_prep_lingering_close(conn_rec *c)
> +{
> +    /* Give protocol handlers one last chance to raise their voice */
> +    ap_run_pre_close_connection(c);
> +    
> +    if (c->sbh) {
> +        ap_update_child_status(c->sbh, SERVER_CLOSING, NULL);
> +    }
> +    return 0;
> +}
> +
>  /* we now proceed to read from the client until we get EOF, or until
>   * MAX_SECS_TO_LINGER has passed.  The reasons for doing this are
>   * documented in a draft:
> @@ -112,10 +126,10 @@ AP_DECLARE(int) ap_start_lingering_close
>          return 1;
>      }
>  
> -    if (c->sbh) {
> -        ap_update_child_status(c->sbh, SERVER_CLOSING, NULL);
> +    if (!ap_prep_lingering_close(c)) {

This is always true. So effectively we disable the code below.

> +        return 1;
>      }
> -
> +    
>      /* Close the connection, being careful to send out whatever is still
>       * in our buffers.  If possible, try to avoid a hard close until the
>       * client has ACKed our FIN and/or has stopped sending us data.
> 


Regards

RĂ¼diger

Reply via email to