AP_DECLARE(void) ap_filter_recyle(conn_rec *c)
{
    struct ap_filter_conn_ctx *x = get_conn_ctx(c);

    if (!x || !x->dead_filters) {
        return;
    }

    make_spare_ring(&x->spare_filters, c->pool);
    while (!APR_RING_EMPTY(x->dead_filters, spare_data, link)) {
        struct spare_data *sdata = APR_RING_FIRST(x->dead_filters);

        APR_RING_REMOVE(sdata, link);
        memset(sdata->data, 0, sizeof(ap_filter_t));
        APR_RING_INSERT_TAIL(x->spare_filters, sdata, spare_data, link);
    }
}