From: Yann Ylavic Date: Fri, 19 Jan 2018 12:12:17 +0000 (+0000) Subject: mpm_fdqueue: follow up to r1821624. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2f79ba80b5988f05f372a314d547616fc75fc916;p=apache mpm_fdqueue: follow up to r1821624. Opacify fdqueue types. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1821626 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/server/mpm/event/event.c b/server/mpm/event/event.c index 617668e2f9..567dcfbabb 100644 --- a/server/mpm/event/event.c +++ b/server/mpm/event/event.c @@ -219,6 +219,8 @@ static apr_pollfd_t *listener_pollfd; */ static apr_pollset_t *event_pollset; +typedef struct event_conn_state_t event_conn_state_t; + /* * The chain of connections to be shutdown by a worker thread (deferred), * linked list updated atomically. @@ -2307,7 +2309,8 @@ static void *APR_THREAD_FUNC worker_thread(apr_thread_t * thd, void *dummy) break; } - rv = ap_queue_pop_something(worker_queue, &csd, &cs, &ptrans, &te); + rv = ap_queue_pop_something(worker_queue, &csd, (void **)&cs, + &ptrans, &te); if (rv != APR_SUCCESS) { /* We get APR_EOF during a graceful shutdown once all the diff --git a/server/mpm_fdqueue.c b/server/mpm_fdqueue.c index 6e843a6ef8..f4a5810836 100644 --- a/server/mpm_fdqueue.c +++ b/server/mpm_fdqueue.c @@ -42,6 +42,13 @@ struct fd_queue_info_t struct recycled_pool *volatile recycled_pools; }; +struct fd_queue_elem_t +{ + apr_socket_t *sd; + apr_pool_t *p; + void *baton; +}; + static apr_status_t queue_info_cleanup(void *data_) { fd_queue_info_t *qi = data_; @@ -375,7 +382,7 @@ apr_status_t ap_queue_init(fd_queue_t * queue, int queue_capacity, * to reserve an idle worker thread */ apr_status_t ap_queue_push(fd_queue_t * queue, apr_socket_t * sd, - event_conn_state_t * ecs, apr_pool_t * p) + void * baton, apr_pool_t * p) { fd_queue_elem_t *elem; apr_status_t rv; @@ -392,7 +399,7 @@ apr_status_t ap_queue_push(fd_queue_t * queue, apr_socket_t * sd, if (queue->in >= queue->bounds) queue->in -= queue->bounds; elem->sd = sd; - elem->ecs = ecs; + elem->baton = baton; elem->p = p; queue->nelts++; @@ -433,7 +440,7 @@ apr_status_t ap_queue_push_timer(fd_queue_t * queue, timer_event_t *te) * 'sd'. */ apr_status_t ap_queue_pop_something(fd_queue_t * queue, apr_socket_t ** sd, - event_conn_state_t ** ecs, apr_pool_t ** p, + void ** baton, apr_pool_t ** p, timer_event_t ** te_out) { fd_queue_elem_t *elem; @@ -476,7 +483,7 @@ apr_status_t ap_queue_pop_something(fd_queue_t * queue, apr_socket_t ** sd, queue->out -= queue->bounds; queue->nelts--; *sd = elem->sd; - *ecs = elem->ecs; + *baton = elem->baton; *p = elem->p; #ifdef AP_DEBUG elem->sd = NULL; diff --git a/server/mpm_fdqueue.h b/server/mpm_fdqueue.h index 2c6f9266e1..f1ae766a3b 100644 --- a/server/mpm_fdqueue.h +++ b/server/mpm_fdqueue.h @@ -38,8 +38,10 @@ #include #include +struct fd_queue_info_t; /* opaque */ +struct fd_queue_elem_t; /* opaque */ typedef struct fd_queue_info_t fd_queue_info_t; -typedef struct event_conn_state_t event_conn_state_t; +typedef struct fd_queue_elem_t fd_queue_elem_t; apr_status_t ap_queue_info_create(fd_queue_info_t ** queue_info, apr_pool_t * pool, int max_idlers, @@ -53,14 +55,6 @@ apr_status_t ap_queue_info_term(fd_queue_info_t * queue_info); apr_uint32_t ap_queue_info_get_idlers(fd_queue_info_t * queue_info); void ap_free_idle_pools(fd_queue_info_t *queue_info); -struct fd_queue_elem_t -{ - apr_socket_t *sd; - apr_pool_t *p; - event_conn_state_t *ecs; -}; -typedef struct fd_queue_elem_t fd_queue_elem_t; - typedef struct timer_event_t timer_event_t; struct timer_event_t @@ -94,10 +88,10 @@ void ap_push_pool(fd_queue_info_t * queue_info, apr_status_t ap_queue_init(fd_queue_t * queue, int queue_capacity, apr_pool_t * a); apr_status_t ap_queue_push(fd_queue_t * queue, apr_socket_t * sd, - event_conn_state_t * ecs, apr_pool_t * p); + void * baton, apr_pool_t * p); apr_status_t ap_queue_push_timer(fd_queue_t *queue, timer_event_t *te); apr_status_t ap_queue_pop_something(fd_queue_t * queue, apr_socket_t ** sd, - event_conn_state_t ** ecs, apr_pool_t ** p, + void ** baton, apr_pool_t ** p, timer_event_t ** te); apr_status_t ap_queue_interrupt_all(fd_queue_t * queue); apr_status_t ap_queue_interrupt_one(fd_queue_t * queue);