Author: rhuijben
Date: Wed Nov 11 12:16:12 2015
New Revision: 1713822

URL: http://svn.apache.org/viewvc?rev=1713822&view=rev
Log:
* test/mock_sock_buckets.c
  (serf_bucket_type_mock_socket): Properly implement bucket v2.

Modified:
    serf/trunk/buckets/response_body_buckets.c
    serf/trunk/test/mock_sock_buckets.c

Modified: serf/trunk/buckets/response_body_buckets.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/buckets/response_body_buckets.c?rev=1713822&r1=1713821&r2=1713822&view=diff
==============================================================================
--- serf/trunk/buckets/response_body_buckets.c (original)
+++ serf/trunk/buckets/response_body_buckets.c Wed Nov 11 12:16:12 2015
@@ -127,8 +127,10 @@ static apr_status_t serf_response_body_r
     return status;
 }
 
-static apr_status_t serf_response_body_readline(serf_bucket_t *bucket,
-                                                int acceptable, int *found,
+static apr_status_t serf_response_body_readline2(serf_bucket_t *bucket,
+                                                int acceptable,
+                                                apr_size_t requested,
+                                                int *found,
                                                 const char **data,
                                                 apr_size_t *len)
 {
@@ -141,7 +143,11 @@ static apr_status_t serf_response_body_r
         return APR_EOF;
     }
 
-    status = serf_bucket_readline(ctx->stream, acceptable, found, data, len);
+    if (requested > ctx->remaining)
+        requested = (apr_size_t)ctx->remaining;
+
+    status = serf_bucket_readline2(ctx->stream, acceptable, requested,
+                                   found, data, len);
 
     if (!SERF_BUCKET_READ_ERROR(status)) {
         ctx->remaining -= *len;
@@ -157,13 +163,32 @@ static apr_status_t serf_response_body_r
     return status;
 }
 
+static apr_status_t serf_response_body_readline(serf_bucket_t *bucket,
+                                                int acceptable,
+                                                int *found,
+                                                const char **data,
+                                                apr_size_t *len)
+{
+  return serf_response_body_readline2(bucket, acceptable,
+                                      SERF_READ_ALL_AVAIL,
+                                      found, data, len);
+}
+
+
 static apr_status_t serf_response_body_peek(serf_bucket_t *bucket,
                                             const char **data,
                                             apr_size_t *len)
 {
     body_context_t *ctx = bucket->data;
+    apr_status_t status;
+
+    status = serf_bucket_peek(ctx->stream, data, len);
 
-    return serf_bucket_peek(ctx->stream, data, len);
+    if (!SERF_BUCKET_READ_ERROR(status) && *len > ctx->remaining) {
+        *len = (apr_size_t)ctx->remaining;
+    }
+
+    return status;
 }
 
 static void serf_response_body_destroy(serf_bucket_t *bucket)
@@ -202,7 +227,7 @@ const serf_bucket_type_t serf_bucket_typ
     serf_response_body_peek,
     serf_response_body_destroy,
     serf_default_read_bucket,
-    serf_default_readline2,
+    serf_response_body_readline2,
     serf_response_body_get_remaining,
     serf_response_body_set_config,
 };

Modified: serf/trunk/test/mock_sock_buckets.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/test/mock_sock_buckets.c?rev=1713822&r1=1713821&r2=1713822&view=diff
==============================================================================
--- serf/trunk/test/mock_sock_buckets.c (original)
+++ serf/trunk/test/mock_sock_buckets.c Wed Nov 11 12:16:12 2015
@@ -81,7 +81,12 @@ static void serf_mock_sock_destroy_and_d
 
     serf_bucket_destroy(ctx->stream);
 
+#ifndef SERF_DEBUG_BUCKET_USE
     serf_default_destroy_and_data(bucket);
+#else
+    serf_bucket_mem_free(bucket->allocator, bucket->data);
+    serf_bucket_mem_free(bucket->allocator, bucket);
+#endif
 }
 
 static apr_status_t serf_mock_sock_set_config(serf_bucket_t *bucket,
@@ -104,6 +109,7 @@ const serf_bucket_type_t serf_bucket_typ
     serf_mock_sock_peek,
     serf_mock_sock_destroy_and_data,
     serf_default_read_bucket,
+    serf_default_readline2,
     serf_default_get_remaining,
     serf_mock_sock_set_config,
 };


Reply via email to