AP_DECLARE_HOOK(conn_rec *, create_connection,
(apr_pool_t *p, apr_socket_t *csd, int conn_id))
-AP_DECLARE_HOOK(int, add_listeners, (apr_pollfd_t *pollset, apr_socket_t **listensocks, int num_listensocks))
-
#ifdef __cplusplus
}
#endif
APR_HOOK_STRUCT(
APR_HOOK_LINK(pre_connection)
APR_HOOK_LINK(process_connection)
- APR_HOOK_LINK(add_listeners)
APR_HOOK_LINK(create_connection)
)
-AP_IMPLEMENT_HOOK_RUN_ALL(int,add_listeners,
- (apr_pollfd_t *pollset, apr_socket_t **listensocks, int num_listensocks),
- (pollset, listensocks, num_listensocks),OK,DECLINED)
AP_IMPLEMENT_HOOK_RUN_ALL(int,pre_connection,(conn_rec *c),(c),OK,DECLINED)
AP_IMPLEMENT_HOOK_RUN_FIRST(int,process_connection,(conn_rec *c),(c),DECLINED)
AP_IMPLEMENT_HOOK_RUN_FIRST(conn_rec *,create_connection,
return net->c;
}
-static int core_add_listeners(apr_pollfd_t *pollset,
- apr_socket_t **listensocks, int num_listensocks)
-{
- int i;
- ap_listen_rec *lr;
-
- for (lr = ap_listeners, i = 0; i < num_listensocks; lr = lr->next, i++) {
- listensocks[i] = lr->sd;
- apr_poll_socket_add(pollset, listensocks[i], APR_POLLIN);
- }
- return OK;
-}
-
static void register_hooks(apr_pool_t *p)
{
ap_hook_post_config(core_post_config,NULL,NULL,APR_HOOK_REALLY_FIRST);
ap_hook_access_checker(do_nothing,NULL,NULL,APR_HOOK_REALLY_LAST);
ap_hook_create_connection(core_create_conn, NULL, NULL, APR_HOOK_REALLY_LAST);
ap_hook_create_request(core_create_req, NULL, NULL, APR_HOOK_MIDDLE);
- ap_hook_add_listeners(core_add_listeners, NULL, NULL, APR_HOOK_MIDDLE);
APR_OPTIONAL_HOOK(proxy, create_req, core_create_proxy_req, NULL, NULL,
APR_HOOK_MIDDLE);
ap_hook_pre_mpm(ap_create_scoreboard, NULL, NULL, APR_HOOK_MIDDLE);
apr_pool_t *ptrans;
conn_rec *current_conn;
apr_status_t stat = APR_EINIT;
- int sockdes;
+ int sockdes, i;
+ ap_listen_rec *lr;
int curr_pollfd, last_pollfd = 0;
apr_pollfd_t *pollset;
apr_socket_t *sd;
ap_sync_scoreboard_image();
- apr_poll_setup(&pollset, num_listensocks, pchild);
/* Set up the pollfd array */
listensocks = apr_pcalloc(pchild,
sizeof(*listensocks) * (num_listensocks));
+ for (lr = ap_listeners, i = 0; i < num_listensocks; lr = lr->next, i++)
+ listensocks[i]=lr->sd;
- ap_run_add_listeners(pollset, listensocks, num_listensocks);
+ apr_poll_setup(&pollset, num_listensocks, pchild);
+ for (i = 0; i < num_listensocks; i++)
+ apr_poll_socket_add(pollset, listensocks[i], APR_POLLIN);
while (!die_now) {
/*