Commit 03f89892 authored by Stefan Eissing's avatar Stefan Eissing
Browse files

On the 2.4.x branch:

Merge of r1605328,r1629576,r1643279,r1703241,r1802535,r1819847,r1819848,r1819852,r1819853,r1819855,r1821562,r1821558,r1821561,r1821595 from trunk

  *) event: staging changes (incremental patches) to sync 2.4.x with trunk.



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1823629 13f79535-47bb-0310-9956-ffa450edef68
parent 1827e1fd
Loading
Loading
Loading
Loading
+6 −0
Changes for CHANGES: 6 added lines, 0 removed lines.
Original line number Diff line number Diff line
                                                         -*- coding: utf-8 -*-
Changes with Apache 2.4.30
 
  *) mpm_event: Let the listener thread do its maintenance job on resources
     shortage.  PR 61979.  [Yann Ylavic]

  *) mpm_event: Wakeup the listener to re-enable listening sockets.
     [Yann Ylavic]

  *) mod_ssl: The SSLCompression directive will now give an error if used
     with an OpenSSL build which does not support any compression methods.
     [Joe Orton]
+152 −112

File changed.

Preview size limit exceeded, changes collapsed.

+33 −42

File changed.

Preview size limit exceeded, changes collapsed.

+14 −15
Changes for server/mpm/worker/fdqueue.c: 14 added lines, 15 removed lines.
Original line number Diff line number Diff line
@@ -382,18 +382,7 @@ apr_status_t ap_queue_pop(fd_queue_t *queue, apr_socket_t **sd, apr_pool_t **p)
    return rv;
}

apr_status_t ap_queue_interrupt_all(fd_queue_t *queue)
{
    apr_status_t rv;

    if ((rv = apr_thread_mutex_lock(queue->one_big_mutex)) != APR_SUCCESS) {
        return rv;
    }
    apr_thread_cond_broadcast(queue->not_empty);
    return apr_thread_mutex_unlock(queue->one_big_mutex);
}

apr_status_t ap_queue_term(fd_queue_t *queue)
static apr_status_t queue_interrupt_all(fd_queue_t *queue, int term)
{
    apr_status_t rv;

@@ -404,9 +393,19 @@ apr_status_t ap_queue_term(fd_queue_t *queue)
     * we could end up setting it and waking everybody up just after a
     * would-be popper checks it but right before they block
     */
    if (term) {
        queue->terminated = 1;
    if ((rv = apr_thread_mutex_unlock(queue->one_big_mutex)) != APR_SUCCESS) {
        return rv;
    }
    return ap_queue_interrupt_all(queue);
    apr_thread_cond_broadcast(queue->not_empty);
    return apr_thread_mutex_unlock(queue->one_big_mutex);
}

apr_status_t ap_queue_interrupt_all(fd_queue_t *queue)
{
    return queue_interrupt_all(queue, 0);
}

apr_status_t ap_queue_term(fd_queue_t *queue)
{
    return queue_interrupt_all(queue, 1);
}