bytes_handled += len;
}
- /* We no longer need the returned brigade. */
- apr_brigade_destroy(b);
-
/* We likely aborted early before reading anything or we read no
* data. Technically, this might be success condition. But,
* probably means something is horribly wrong. For now, we'll
*/
if (bytes_handled == 0) {
*read = 0;
+ apr_brigade_destroy(b);
return APR_SUCCESS;
}
rv = ap_rgetline_core(&tmp, next_size, &next_len, r, fold);
if (rv != APR_SUCCESS) {
+ apr_brigade_destroy(b);
return rv;
}
last_char = *s + bytes_handled - 1;
}
else {
+ apr_brigade_destroy(b);
return APR_ENOSPC;
}
}
*/
if (fold && bytes_handled && !saw_eos) {
const char *str;
- apr_bucket_brigade *bb;
apr_size_t len;
char c;
- /* Create a brigade for this filter read. */
- bb = apr_brigade_create(r->pool, r->connection->bucket_alloc);
+ /* Clear the temp brigade for this filter read. */
+ apr_brigade_cleanup(b);
/* We only care about the first byte. */
- rv = ap_get_brigade(r->input_filters, bb, AP_MODE_SPECULATIVE,
+ rv = ap_get_brigade(r->input_filters, b, AP_MODE_SPECULATIVE,
APR_BLOCK_READ, 1);
if (rv != APR_SUCCESS) {
- apr_brigade_destroy(bb);
+ apr_brigade_destroy(b);
return rv;
}
- if (APR_BRIGADE_EMPTY(bb)) {
+ if (APR_BRIGADE_EMPTY(b)) {
*read = bytes_handled;
- apr_brigade_destroy(bb);
+ apr_brigade_destroy(b);
return APR_SUCCESS;
}
- e = APR_BRIGADE_FIRST(bb);
+ e = APR_BRIGADE_FIRST(b);
/* If we see an EOS, don't bother doing anything more. */
if (APR_BUCKET_IS_EOS(e)) {
*read = bytes_handled;
- apr_brigade_destroy(bb);
+ apr_brigade_destroy(b);
return APR_SUCCESS;
}
rv = apr_bucket_read(e, &str, &len, APR_BLOCK_READ);
if (rv != APR_SUCCESS) {
- apr_brigade_destroy(bb);
+ apr_brigade_destroy(b);
return rv;
}
*/
c = *str;
- /* We no longer need the returned brigade. */
- apr_brigade_destroy(bb);
-
/* Found one, so call ourselves again to get the next line.
*
* FIXME: If the folding line is completely blank, should we
rv = ap_rgetline_core(&tmp, next_size, &next_len, r, fold);
if (rv != APR_SUCCESS) {
+ apr_brigade_destroy(b);
return rv;
}
}
*read = bytes_handled + next_len;
+ apr_brigade_destroy(b);
return APR_SUCCESS;
}
else {
+ apr_brigade_destroy(b);
return APR_ENOSPC;
}
}
}
*read = bytes_handled;
+ apr_brigade_destroy(b);
return APR_SUCCESS;
}