Hello,

I developped an apache module which send small data coming from file.
A client request from file through a Get request and data are sent with block size equals to 100KB.
One 100KB buffer is allocated in the pool, then each buffer are used to create one bucket that will be sent just after being inserted into the brigade.
To sum up:
----------------------------------------------------------------------------------------------------------------------------
apr_bucket_brigade *bb;
apr_bucket* b;

bb = apr_brigade_create(r->pool, r->connection->bucket_alloc);
Buf = apr_palloc(r->pool,100KB);

while(lastBufferToSend==false)
{
  Processing(Buf);

  b = apr_bucket_pool_create(Buf ,size, r->pool, r->connection->bucket_alloc) ;     
  APR_BRIGADE_INSERT_TAIL(bb, b);

  if(lastBufferToSend)
  {   
    APR_BRIGADE_INSERT_TAIL(bb,apr_bucket_eos_create(bb->bucket_alloc));
  }
 
  rv = ap_pass_brigade(r->output_filters, bb);

  apr_bucket_delete(b);
  apr_brigade_cleanup(bb);
}

apr_brigade_destroy(bb);
----------------------------------------------------------------------------------------------------------------------------

I want to call ap_pass_brigade for each buffer because I want the module to send immediatly 100KB.
Clients don't have to wait for the complete processing of the file more than 2GB. They receive small blocks until the end.
 
--------------------------------------------------------------------------------------------------------------------------
MY PROBLEM:
If I do the delete and destroy (apr_bucket_delete(b) and apr_brigade_destroy(bb)) I do not lock the main thread to 100% but an error is returned:
"The server encountered an internal error or misconfiguration and was unable to complete your request "
without any logs in the Apache error_logs file.

If someone can provide me answer to this problem, I'll be very happy.
Thank you.
 
Nicolas.