MP_TRACE_f(MP_FUNC, "%s filter bucket brigade is empty\n", (filter->mode == MP_INPUT_FILTER_MODE ? "input" : "output"));
MP_TRACE_f(MP_FUNC, MP_FILTER_NAME_FORMAT "read in: bucket brigade is empty\n", MP_FILTER_NAME(filter->f));
MP_INLINE static int get_bucket(modperl_filter_t *filter){    if (!filter->bb_in || MP_FILTER_EMPTY(filter)) {        MP_TRACE_f(MP_FUNC, "%s filter bucket brigade is empty\n",               (filter->mode == MP_INPUT_FILTER_MODE ? "input" : "output"));        return 0;    }        if (!filter->bucket) {        filter->bucket = MP_FILTER_FIRST(filter);    }    else if (filter->bucket != MP_FILTER_SENTINEL(filter)) {        filter->bucket = MP_FILTER_NEXT(filter);    }    if (filter->bucket == MP_FILTER_SENTINEL(filter)) {        filter->bucket = NULL;        /* can't destroy bb_in since the next read will need a brigade         * to try to read from */        apr_brigade_cleanup(filter->bb_in);        return 0;    }        if (MP_FILTER_IS_EOS(filter)) {        MP_TRACE_f(MP_FUNC, "%s filter received EOS bucket\n",                   (filter->mode == MP_INPUT_FILTER_MODE                    ? "input" : "output"));        filter->seen_eos = 1;        /* there should be only one EOS sent, modperl_filter_read will         * not come here, since filter->seen_eos is set         */        return 0;    }    else if (MP_FILTER_IS_FLUSH(filter)) {        MP_TRACE_f(MP_FUNC, "%s filter received FLUSH bucket\n",                   (filter->mode == MP_INPUT_FILTER_MODE                    ? "input" : "output"));        filter->flush = 1;        return 0;    }    else {        return 1;    }}