On 01/27/2016 04:38 PM, Ruediger Pluem wrote:
> 
> 
> 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.
>>

And in effect this now causes the following failures in the test suite:

t/apache/chunkinput.t             (Wstat: 13 Tests: 22 Failed: 0)
  Non-zero wait status: 13
  Parse errors: Bad plan.  You planned 37 tests but ran 22.
t/apache/pr35292.t                (Wstat: 0 Tests: 3 Failed: 1)
  Failed test:  2
t/ssl/headers.t                   (Wstat: 0 Tests: 3 Failed: 3)
  Failed tests:  1-3

Regards

RĂ¼diger

Reply via email to