Commit aee0b251 authored by Ruediger Pluem's avatar Ruediger Pluem
Browse files

* Move the tasks of eor_bucket_destroy (status update, transaction logging) to

  a cleanup function that is registered with the request pool.
  eor_bucket_destroy only destroys the request pool if there is still a request
  at this point of time which triggers the call of the cleanup function.

  This is needed as the eor bucket could be (and usually is) allocated from
  a pool different from the request pool (the connection pool in this case).
  This can lead to situations where eor_bucket_destroy is called at a point of
  time when the request pool had been already destroyed. But the status update
  and the transaction logging rely on the request pool.

  In practise this happens with the worker MPM if the client refuses to read
  the response from the handler. Then the unsent data (including the
  eor bucket) remains in a brigade allocated from the connection pool which
  is the parent of the request pool. This brigade is cleaned up during the
  cleanup of the ptrans pool in worker_thread. As the request pool gets
  destroyed during this cleanup operation *before* the brigade gets cleaned up
  eor_bucket_destroy starts the status update and the transaction logging with
  a destroyed request pool which leads to a segfault.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@451279 13f79535-47bb-0310-9956-ffa450edef68
parent 54911d8f
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment