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,
};