Ruediger Pluem wrote: > + /* try to read a header's worth of data */ > + while (!ctx->done) { > + if (APR_BRIGADE_EMPTY(ctx->bb)) { > + ret = ap_get_brigade(f->next, ctx->bb, ctx->mode, block, > + ctx->need - ctx->rcvd); > + if (ret != APR_SUCCESS) { > + return ret; > + } > + } > + if (APR_BRIGADE_EMPTY(ctx->bb)) { What about the case of an non blocking read where the upstream filter returns an empty brigade and APR_SUCCESS. This is equal to returning EAGAIN.
> + return APR_EOF; > + } Coming back to this one after correcting the setaside stuff... Is this what you have in mind or should we actually return APR_EAGAIN? return block == APR_NONBLOCK_READ ? APR_SUCCESS : APR_EOF; -- Daniel Ruggeri