Author: rhuijben Date: Sun Nov 1 09:40:40 2015 New Revision: 1711729 URL: http://svn.apache.org/viewvc?rev=1711729&view=rev Log: On the request bucket: Implement reading a bucket, like how we implement other read operations: serialize and then delegate to the aggregate bucket.
This 'fix' allow the http2 code to read the headers as bucket and reuse the body within a httpv2 request. * buckets/request_buckets.c (serialize_data): Copy config to new aggregate. (serf_request_read_bucket): New function. (serf_bucket_type_request): Add serf_request_read_bucket. Modified: serf/trunk/buckets/request_buckets.c Modified: serf/trunk/buckets/request_buckets.c URL: http://svn.apache.org/viewvc/serf/trunk/buckets/request_buckets.c?rev=1711729&r1=1711728&r2=1711729&view=diff ============================================================================== --- serf/trunk/buckets/request_buckets.c (original) +++ serf/trunk/buckets/request_buckets.c Sun Nov 1 09:40:40 2015 @@ -132,6 +132,8 @@ static void serialize_data(serf_bucket_t * pointer to self still represents the "right" data. */ serf_bucket_aggregate_become(bucket); + if (ctx->config) + serf_set_config(bucket, ctx->config); /* Insert the two buckets. */ serf_bucket_aggregate_append(bucket, new_bucket); @@ -195,6 +197,15 @@ static apr_status_t serf_request_read_io vecs_size, vecs, vecs_used); } +static serf_bucket_t * serf_request_read_bucket(serf_bucket_t *bucket, + const serf_bucket_type_t *type) +{ + /* Luckily we don't have to be affraid for bucket_v2 tests here */ + serialize_data(bucket); + + return serf_bucket_read_bucket(bucket, type); +} + static apr_status_t serf_request_peek(serf_bucket_t *bucket, const char **data, apr_size_t *len) @@ -260,7 +271,7 @@ const serf_bucket_type_t serf_bucket_typ serf_buckets_are_v2, serf_request_peek, serf_request_destroy, - serf_default_read_bucket, + serf_request_read_bucket, serf_default_get_remaining, serf_request_set_config, };