Author: rhuijben
Date: Wed Nov 11 18:09:06 2015
New Revision: 1713906

URL: http://svn.apache.org/viewvc?rev=1713906&view=rev
Log:
Revert the bucket type changes of r1713810, r1713817, by switching the few
places where we actually use the new features of a limiting readline to
calling serf_bucket_limited_readline(), re-using some of the readline2 code.

Suggested by: gstein

* buckets/aggregate_buckets.c
  (serf_bucket_type_aggregate): Revert change.

* buckets/barrier_buckets.c
  (serf_barrier_readline2): Remove function.
  (serf_bucket_type_barrier): Remove reference.

* buckets/buckets.c
  (serf_default_readline2): Rename to...
  (serf_bucket_limited_readline): ... this.
  (serf_default_readline): Update caller.
  (v2_check): Remove value.
  (fallback_readline2): Remove function.
  (fallback_bucket_type): Remove reference.

* buckets/chunk_buckets.c
  (serf_bucket_type_chunk): Remove reference.

* buckets/copy_buckets.c
  (serf_bucket_type_copy): Remove reference.

* buckets/dechunk_buckets.c
  (serf_dechunk_readline2): Rename to...
  (serf_dechunk_readline): And update to behave as before.
  (serf_dechunk_readline): Remove function.
  (serf_bucket_type_dechunk): Remove reference.

* buckets/deflate_buckets.c
  (serf_bucket_type_deflate): Remove reference.

* buckets/event_buckets.c
  (serf_bucket_type__event): Remove reference.

* buckets/file_buckets.c
  (serf_bucket_type_file): Remove reference.

* buckets/hpack_buckets.c
  (serf_bucket_type__hpack,
   serf_bucket_type__hpack_decode): Remove reference.

* buckets/http2_frame_buckets.c
  (serf_bucket_type__http2_unframe,
   serf_bucket_type__http2_unpad,
   serf_bucket_type__http2_frame): Remove reference.

* buckets/iovec_buckets.c
  (serf_iovec_readline): Remove function.
  (serf_bucket_type_iovec): Use default readline. Remove reference.

* buckets/limit_buckets.c
  (serf_limit_readline2): Rename to...
  (serf_limit_readline): ... this. Calculate requested and use limited
    readline.
  (serf_limit_readline): Remove function.
  (serf_bucket_type_limit): Remove reference.

* buckets/mmap_buckets.c
  (serf_bucket_type_mmap): Remove reference.

* buckets/prefix_buckets.c
  (serf_bucket_type_prefix): Remove reference.

* buckets/request_buckets.c
  (serf_bucket_type_request): Remove reference.

* buckets/response_body_buckets.c
  (serf_response_body_readline2): Rename to...
  (serf_response_body_readline): ... and implement with static argument.
  (serf_response_body_readline): Remove function.
  (serf_bucket_type_response_body): Remove reference.

* buckets/response_buckets.c
  (serf_bucket_type_response): Remove reference.

* buckets/simple_buckets.c
  (serf_bucket_type_simple): Remove reference.

* buckets/socket_buckets.c
  (serf_bucket_type_socket): Remove reference.

* buckets/ssl_buckets.c
  (serf_bucket_type_ssl_encrypt,
   serf_bucket_type_ssl_decrypt): Remove reference.

* serf.h
  (serf_bucket_type_t): Tweak comment. Remove function.
  (serf_bucket_readline2): Remove #define.

* serf_bucket_util.h
  (serf_default_readline2): Rename to...
  (serf_bucket_limited_readline): ... this.

* test/mock_sock_buckets.c
  (serf_bucket_type_mock_socket): Remove reference.

Modified:
    serf/trunk/buckets/aggregate_buckets.c
    serf/trunk/buckets/barrier_buckets.c
    serf/trunk/buckets/buckets.c
    serf/trunk/buckets/chunk_buckets.c
    serf/trunk/buckets/copy_buckets.c
    serf/trunk/buckets/dechunk_buckets.c
    serf/trunk/buckets/deflate_buckets.c
    serf/trunk/buckets/event_buckets.c
    serf/trunk/buckets/file_buckets.c
    serf/trunk/buckets/hpack_buckets.c
    serf/trunk/buckets/http2_frame_buckets.c
    serf/trunk/buckets/iovec_buckets.c
    serf/trunk/buckets/limit_buckets.c
    serf/trunk/buckets/mmap_buckets.c
    serf/trunk/buckets/prefix_buckets.c
    serf/trunk/buckets/request_buckets.c
    serf/trunk/buckets/response_body_buckets.c
    serf/trunk/buckets/response_buckets.c
    serf/trunk/buckets/simple_buckets.c
    serf/trunk/buckets/socket_buckets.c
    serf/trunk/buckets/ssl_buckets.c
    serf/trunk/serf.h
    serf/trunk/serf_bucket_util.h
    serf/trunk/test/mock_sock_buckets.c

Modified: serf/trunk/buckets/aggregate_buckets.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/buckets/aggregate_buckets.c?rev=1713906&r1=1713905&r2=1713906&view=diff
==============================================================================
--- serf/trunk/buckets/aggregate_buckets.c (original)
+++ serf/trunk/buckets/aggregate_buckets.c Wed Nov 11 18:09:06 2015
@@ -572,7 +572,6 @@ const serf_bucket_type_t serf_bucket_typ
     serf_aggregate_peek,
     serf_aggregate_destroy_and_data,
     serf_aggregate_read_bucket,
-    serf_default_readline2,
     serf_aggregate_get_remaining,
     serf_aggregate_set_config,
 };

Modified: serf/trunk/buckets/barrier_buckets.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/buckets/barrier_buckets.c?rev=1713906&r1=1713905&r2=1713906&view=diff
==============================================================================
--- serf/trunk/buckets/barrier_buckets.c (original)
+++ serf/trunk/buckets/barrier_buckets.c Wed Nov 11 18:09:06 2015
@@ -72,18 +72,6 @@ static apr_status_t serf_barrier_readlin
     return serf_bucket_readline(stream, acceptable, found, data, len);
 }
 
-static apr_status_t serf_barrier_readline2(serf_bucket_t *bucket,
-                                           int acceptable, apr_size_t 
requested,
-                                           int *found,
-                                           const char **data, apr_size_t *len)
-{
-    serf_bucket_t *stream = bucket->data;
-
-    return serf_bucket_readline2(stream, acceptable, requested,
-                                 found, data, len);
-}
-
-
 static apr_status_t serf_barrier_peek(serf_bucket_t *bucket,
                                      const char **data,
                                      apr_size_t *len)
@@ -131,7 +119,6 @@ const serf_bucket_type_t serf_bucket_typ
     serf_barrier_peek,
     serf_barrier_destroy,
     serf_default_read_bucket, /* ### TODO? */
-    serf_barrier_readline2,
     serf_barrier_get_remaining,
     serf_barrier_set_config,
 };

Modified: serf/trunk/buckets/buckets.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/buckets/buckets.c?rev=1713906&r1=1713905&r2=1713906&view=diff
==============================================================================
--- serf/trunk/buckets/buckets.c (original)
+++ serf/trunk/buckets/buckets.c Wed Nov 11 18:09:06 2015
@@ -125,9 +125,9 @@ apr_status_t serf_default_peek(
     return APR_SUCCESS;
 }
 
-apr_status_t serf_default_readline2(serf_bucket_t *bucket, int acceptable,
-                                    apr_size_t requested, int *found,
-                                    const char **data, apr_size_t *len)
+apr_status_t serf_bucket_limited_readline(serf_bucket_t *bucket, int 
acceptable,
+                                          apr_size_t requested, int *found,
+                                          const char **data, apr_size_t *len)
 {
     apr_status_t status;
     const char *peek_data;
@@ -219,8 +219,8 @@ apr_status_t serf_default_readline(serf_
                                    const char **data, apr_size_t *len)
 {
     /* We explicitly call this function directly and *not* via the callback */
-    return serf_default_readline2(bucket, acceptable, SERF_READ_ALL_AVAIL,
-                                  found, data, len);
+    return serf_bucket_limited_readline(bucket, acceptable, 
SERF_READ_ALL_AVAIL,
+                                        found, data, len);
 }
 
 void serf_default_destroy(serf_bucket_t *bucket)
@@ -262,7 +262,6 @@ static const serf_bucket_type_t v2_check
   NULL /* destroy */,
   NULL /* read_bucket_v2 */,
   NULL /* readline2 */,
-  NULL /* get_remaining */,
   NULL /* set_config */
 };
 
@@ -281,21 +280,6 @@ apr_status_t serf_default_ignore_config(
     return APR_SUCCESS;
 }
 
-static apr_status_t fallback_readline2(serf_bucket_t *bucket, int acceptable,
-                                       apr_size_t requested, int *found,
-                                       const char **data, apr_size_t *len)
-{
-  if (requested == SERF_READ_ALL_AVAIL) {
-      /* A v1 bucket might have an efficient readline() for this case */
-      return bucket->type->readline(bucket, acceptable, found, data, len);
-  }
-  else {
-      /* Fall back to the default limiting implementation using peek+read */
-      return serf_default_readline2(bucket, acceptable, requested, found,
-                                    data, len);
-  }
-}
-
 /* Fallback type definition to return for buckets that don't implement
    a specific version of the bucket spec */
 static const serf_bucket_type_t fallback_bucket_type =
@@ -309,7 +293,6 @@ static const serf_bucket_type_t fallback
   NULL /* peek */,
   NULL /* destroy */,
   serf_buckets_are_v2,
-  fallback_readline2,
   serf_default_get_remaining,
   serf_default_ignore_config,
 };

Modified: serf/trunk/buckets/chunk_buckets.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/buckets/chunk_buckets.c?rev=1713906&r1=1713905&r2=1713906&view=diff
==============================================================================
--- serf/trunk/buckets/chunk_buckets.c (original)
+++ serf/trunk/buckets/chunk_buckets.c Wed Nov 11 18:09:06 2015
@@ -255,7 +255,6 @@ const serf_bucket_type_t serf_bucket_typ
     serf_chunk_peek,
     serf_chunk_destroy,
     serf_default_read_bucket,
-    serf_default_readline2,
     serf_default_get_remaining,
     serf_chunk_set_config,
 };

Modified: serf/trunk/buckets/copy_buckets.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/buckets/copy_buckets.c?rev=1713906&r1=1713905&r2=1713906&view=diff
==============================================================================
--- serf/trunk/buckets/copy_buckets.c (original)
+++ serf/trunk/buckets/copy_buckets.c Wed Nov 11 18:09:06 2015
@@ -337,7 +337,6 @@ const serf_bucket_type_t serf_bucket_typ
     serf_copy_peek,
     serf_copy_destroy,
     serf_copy_read_bucket,
-    serf_default_readline2,
     serf_copy_get_remaining,
     serf_copy_set_config,
 };

Modified: serf/trunk/buckets/dechunk_buckets.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/buckets/dechunk_buckets.c?rev=1713906&r1=1713905&r2=1713906&view=diff
==============================================================================
--- serf/trunk/buckets/dechunk_buckets.c (original)
+++ serf/trunk/buckets/dechunk_buckets.c Wed Nov 11 18:09:06 2015
@@ -202,15 +202,15 @@ static apr_status_t serf_dechunk_read(se
     return status;
 }
 
-static apr_status_t serf_dechunk_readline2(serf_bucket_t *bucket,
-                                           int accepted,
-                                           apr_size_t requested,
-                                           int *found,
-                                           const char **data,
-                                           apr_size_t *len)
+static apr_status_t serf_dechunk_readline(serf_bucket_t *bucket,
+                                          int accepted,
+                                          int *found,
+                                          const char **data,
+                                          apr_size_t *len)
 {
     dechunk_context_t *ctx = bucket->data;
     apr_status_t status;
+    apr_size_t requested;
 
     status = wait_for_chunk(bucket);
     if (status || ctx->state != STATE_CHUNK) {
@@ -219,13 +219,14 @@ static apr_status_t serf_dechunk_readlin
     }
 
     /* Don't overshoot */
-    if (requested > ctx->body_left) {
+    if (ctx->body_left >= APR_SIZE_MAX)
+        requested = APR_SIZE_MAX;
+    else
         requested = (apr_size_t)ctx->body_left;
-    }
 
     /* Delegate to the stream bucket to do the read. */
-    status = serf_bucket_readline2(ctx->stream, accepted, requested,
-                                   found, data, len);
+    status = serf_bucket_limited_readline(ctx->stream, accepted, requested,
+                                          found, data, len);
     if (SERF_BUCKET_READ_ERROR(status))
         return status;
 
@@ -246,16 +247,6 @@ static apr_status_t serf_dechunk_readlin
     return status;
 }
 
-static apr_status_t serf_dechunk_readline(serf_bucket_t *bucket,
-                                          int accepted,
-                                          int *found,
-                                          const char **data,
-                                          apr_size_t *len)
-{
-    return serf_dechunk_readline2(bucket, accepted, SERF_READ_ALL_AVAIL,
-                                  found, data, len);
-}
-
 static apr_status_t serf_dechunk_peek(serf_bucket_t *bucket,
                                       const char **data,
                                       apr_size_t *len)
@@ -297,7 +288,6 @@ const serf_bucket_type_t serf_bucket_typ
     serf_dechunk_peek,
     serf_dechunk_destroy_and_data,
     serf_default_read_bucket,
-    serf_dechunk_readline2,
     serf_default_get_remaining,
     serf_dechunk_set_config,
 };

Modified: serf/trunk/buckets/deflate_buckets.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/buckets/deflate_buckets.c?rev=1713906&r1=1713905&r2=1713906&view=diff
==============================================================================
--- serf/trunk/buckets/deflate_buckets.c (original)
+++ serf/trunk/buckets/deflate_buckets.c Wed Nov 11 18:09:06 2015
@@ -663,7 +663,6 @@ const serf_bucket_type_t serf_bucket_typ
     serf_deflate_peek,
     serf_deflate_destroy_and_data,
     serf_default_read_bucket,
-    serf_default_readline2,
     serf_default_get_remaining,
     serf_deflate_set_config,
 };

Modified: serf/trunk/buckets/event_buckets.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/buckets/event_buckets.c?rev=1713906&r1=1713905&r2=1713906&view=diff
==============================================================================
--- serf/trunk/buckets/event_buckets.c (original)
+++ serf/trunk/buckets/event_buckets.c Wed Nov 11 18:09:06 2015
@@ -136,7 +136,6 @@ const serf_bucket_type_t serf_bucket_typ
     serf_event_peek,
     serf_event_destroy,
     serf_default_read_bucket,
-    serf_default_readline2,
     serf_event_get_remaining,
     serf_default_ignore_config,
 };

Modified: serf/trunk/buckets/file_buckets.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/buckets/file_buckets.c?rev=1713906&r1=1713905&r2=1713906&view=diff
==============================================================================
--- serf/trunk/buckets/file_buckets.c (original)
+++ serf/trunk/buckets/file_buckets.c Wed Nov 11 18:09:06 2015
@@ -158,7 +158,6 @@ const serf_bucket_type_t serf_bucket_typ
     serf_file_peek,
     serf_default_destroy_and_data,
     serf_default_read_bucket,
-    serf_default_readline2,
     serf_file_get_remaining,
     serf_default_ignore_config,
 };

Modified: serf/trunk/buckets/hpack_buckets.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/buckets/hpack_buckets.c?rev=1713906&r1=1713905&r2=1713906&view=diff
==============================================================================
--- serf/trunk/buckets/hpack_buckets.c (original)
+++ serf/trunk/buckets/hpack_buckets.c Wed Nov 11 18:09:06 2015
@@ -1039,7 +1039,6 @@ const serf_bucket_type_t serf_bucket_typ
   serf_hpack_peek,
   serf_hpack_destroy_and_data,
   serf_default_read_bucket,
-  serf_default_readline2,
   serf_hpack_get_remaining,
   serf_default_ignore_config,
 };
@@ -1925,7 +1924,6 @@ const serf_bucket_type_t serf_bucket_typ
   serf_hpack_decode_peek,
   serf_hpack_decode_destroy,
   serf_default_read_bucket,
-  serf_default_readline2,
   serf_default_get_remaining,
   serf_hpack_decode_set_config
 };

Modified: serf/trunk/buckets/http2_frame_buckets.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/buckets/http2_frame_buckets.c?rev=1713906&r1=1713905&r2=1713906&view=diff
==============================================================================
--- serf/trunk/buckets/http2_frame_buckets.c (original)
+++ serf/trunk/buckets/http2_frame_buckets.c Wed Nov 11 18:09:06 2015
@@ -332,7 +332,6 @@ const serf_bucket_type_t serf_bucket_typ
   serf_http2_unframe_peek,
   serf_default_destroy_and_data,
   serf_default_read_bucket,
-  serf_default_readline2,
   serf_http2_unframe_get_remaining,
   serf_default_ignore_config
 };
@@ -595,7 +594,6 @@ const serf_bucket_type_t serf_bucket_typ
   serf_http2_unpad_peek,
   serf_http2_unpad_destroy,
   serf_default_read_bucket,
-  serf_default_readline2,
   serf_http2_unpad_get_remaining,
   serf_default_ignore_config
 };
@@ -967,7 +965,6 @@ const serf_bucket_type_t serf_bucket_typ
   serf_http2_frame_peek,
   serf_http2_frame_destroy,
   serf_default_read_bucket,
-  serf_default_readline2,
   serf_default_get_remaining,
   serf_default_ignore_config
 };

Modified: serf/trunk/buckets/iovec_buckets.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/buckets/iovec_buckets.c?rev=1713906&r1=1713905&r2=1713906&view=diff
==============================================================================
--- serf/trunk/buckets/iovec_buckets.c (original)
+++ serf/trunk/buckets/iovec_buckets.c Wed Nov 11 18:09:06 2015
@@ -60,13 +60,6 @@ serf_bucket_t *serf_bucket_iovec_create(
     return serf_bucket_create(&serf_bucket_type_iovec, allocator, ctx);
 }
 
-static apr_status_t serf_iovec_readline(serf_bucket_t *bucket,
-                                         int acceptable, int *found,
-                                         const char **data, apr_size_t *len)
-{
-    return APR_ENOTIMPL;
-}
-
 static apr_status_t serf_iovec_read_iovec(serf_bucket_t *bucket,
                                           apr_size_t requested,
                                           int vecs_size,
@@ -172,14 +165,13 @@ static apr_uint64_t serf_iovec_get_remai
 const serf_bucket_type_t serf_bucket_type_iovec = {
     "IOVEC",
     serf_iovec_read,
-    serf_iovec_readline,
+    serf_default_readline,
     serf_iovec_read_iovec,
     serf_default_read_for_sendfile,
     serf_buckets_are_v2,
     serf_iovec_peek,
     serf_default_destroy_and_data,
     serf_default_read_bucket,
-    serf_default_readline2,
     serf_iovec_get_remaining,
     serf_default_ignore_config
 };

Modified: serf/trunk/buckets/limit_buckets.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/buckets/limit_buckets.c?rev=1713906&r1=1713905&r2=1713906&view=diff
==============================================================================
--- serf/trunk/buckets/limit_buckets.c (original)
+++ serf/trunk/buckets/limit_buckets.c Wed Nov 11 18:09:06 2015
@@ -75,27 +75,28 @@ static apr_status_t serf_limit_read(serf
     return status;
 }
 
-static apr_status_t serf_limit_readline2(serf_bucket_t *bucket,
-                                         int accepted,
-                                         apr_size_t requested,
-                                         int *found,
-                                         const char **data,
-                                         apr_size_t *len)
+static apr_status_t serf_limit_readline(serf_bucket_t *bucket,
+                                        int accepted,
+                                        int *found,
+                                        const char **data,
+                                        apr_size_t *len)
 {
     limit_context_t *ctx = bucket->data;
     apr_status_t status;
+    apr_size_t requested;
 
     if (!ctx->remaining) {
         *len = 0;
         return APR_EOF;
     }
 
-    if (requested > ctx->remaining) {
+    if (ctx->remaining >= APR_SIZE_MAX)
+        requested = APR_SIZE_MAX;
+    else
         requested = (apr_size_t) ctx->remaining;
-    }
 
-    status = serf_bucket_readline2(ctx->stream, accepted,
-                                   requested, found, data, len);
+    status = serf_bucket_limited_readline(ctx->stream, accepted,
+                                          requested, found, data, len);
 
     if (!SERF_BUCKET_READ_ERROR(status)) {
         ctx->remaining -= *len;
@@ -112,16 +113,6 @@ static apr_status_t serf_limit_readline2
     return status;
 }
 
-static apr_status_t serf_limit_readline(serf_bucket_t *bucket,
-                                        int accepted,
-                                        int *found,
-                                        const char **data,
-                                        apr_size_t *len)
-{
-  return serf_limit_readline2(bucket, accepted, SERF_READ_ALL_AVAIL,
-                              found, data, len);
-}
-
 static apr_status_t serf_limit_read_iovec(serf_bucket_t *bucket,
                                           apr_size_t requested,
                                           int vecs_size,
@@ -215,7 +206,6 @@ const serf_bucket_type_t serf_bucket_typ
     serf_limit_peek,
     serf_limit_destroy,
     serf_default_read_bucket,
-    serf_limit_readline2,
     serf_limit_get_remaining,
     serf_limit_set_config,
 };

Modified: serf/trunk/buckets/mmap_buckets.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/buckets/mmap_buckets.c?rev=1713906&r1=1713905&r2=1713906&view=diff
==============================================================================
--- serf/trunk/buckets/mmap_buckets.c (original)
+++ serf/trunk/buckets/mmap_buckets.c Wed Nov 11 18:09:06 2015
@@ -145,7 +145,6 @@ const serf_bucket_type_t serf_bucket_typ
     serf_mmap_peek,
     serf_default_destroy_and_data,
     serf_default_read_bucket,
-    serf_default_readline2,
     serf_mmap_get_remaining,
     serf_default_ignore_config,
 };

Modified: serf/trunk/buckets/prefix_buckets.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/buckets/prefix_buckets.c?rev=1713906&r1=1713905&r2=1713906&view=diff
==============================================================================
--- serf/trunk/buckets/prefix_buckets.c (original)
+++ serf/trunk/buckets/prefix_buckets.c Wed Nov 11 18:09:06 2015
@@ -236,7 +236,6 @@ const serf_bucket_type_t serf_bucket_typ
     serf_prefix_peek,
     serf_prefix_destroy,
     serf_default_read_bucket,
-    serf_default_readline2,
     serf_prefix_get_remaining,
     serf_prefix_set_config
 };

Modified: serf/trunk/buckets/request_buckets.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/buckets/request_buckets.c?rev=1713906&r1=1713905&r2=1713906&view=diff
==============================================================================
--- serf/trunk/buckets/request_buckets.c (original)
+++ serf/trunk/buckets/request_buckets.c Wed Nov 11 18:09:06 2015
@@ -272,7 +272,6 @@ const serf_bucket_type_t serf_bucket_typ
     serf_request_peek,
     serf_request_destroy,
     serf_request_read_bucket,
-    serf_default_readline2,
     serf_default_get_remaining,
     serf_request_set_config,
 };

Modified: serf/trunk/buckets/response_body_buckets.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/buckets/response_body_buckets.c?rev=1713906&r1=1713905&r2=1713906&view=diff
==============================================================================
--- serf/trunk/buckets/response_body_buckets.c (original)
+++ serf/trunk/buckets/response_body_buckets.c Wed Nov 11 18:09:06 2015
@@ -127,15 +127,15 @@ static apr_status_t serf_response_body_r
     return status;
 }
 
-static apr_status_t serf_response_body_readline2(serf_bucket_t *bucket,
+static apr_status_t serf_response_body_readline(serf_bucket_t *bucket,
                                                 int acceptable,
-                                                apr_size_t requested,
                                                 int *found,
                                                 const char **data,
                                                 apr_size_t *len)
 {
     body_context_t *ctx = bucket->data;
     apr_status_t status;
+    apr_size_t requested;
 
     if (!ctx->remaining) {
         *len = 0;
@@ -143,11 +143,13 @@ static apr_status_t serf_response_body_r
         return APR_EOF;
     }
 
-    if (requested > ctx->remaining)
+    if (ctx->remaining >= APR_SIZE_MAX)
+        requested = APR_SIZE_MAX;
+    else
         requested = (apr_size_t)ctx->remaining;
 
-    status = serf_bucket_readline2(ctx->stream, acceptable, requested,
-                                   found, data, len);
+    status = serf_bucket_limited_readline(ctx->stream, acceptable, requested,
+                                          found, data, len);
 
     if (!SERF_BUCKET_READ_ERROR(status)) {
         ctx->remaining -= *len;
@@ -163,18 +165,6 @@ 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)
@@ -227,7 +217,6 @@ const serf_bucket_type_t serf_bucket_typ
     serf_response_body_peek,
     serf_response_body_destroy,
     serf_default_read_bucket,
-    serf_response_body_readline2,
     serf_response_body_get_remaining,
     serf_response_body_set_config,
 };

Modified: serf/trunk/buckets/response_buckets.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/buckets/response_buckets.c?rev=1713906&r1=1713905&r2=1713906&view=diff
==============================================================================
--- serf/trunk/buckets/response_buckets.c (original)
+++ serf/trunk/buckets/response_buckets.c Wed Nov 11 18:09:06 2015
@@ -640,7 +640,6 @@ const serf_bucket_type_t serf_bucket_typ
     serf_response_peek,
     serf_response_destroy_and_data,
     serf_default_read_bucket,
-    serf_default_readline2,
     serf_default_get_remaining,
     serf_response_set_config,
 };

Modified: serf/trunk/buckets/simple_buckets.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/buckets/simple_buckets.c?rev=1713906&r1=1713905&r2=1713906&view=diff
==============================================================================
--- serf/trunk/buckets/simple_buckets.c (original)
+++ serf/trunk/buckets/simple_buckets.c Wed Nov 11 18:09:06 2015
@@ -169,7 +169,6 @@ const serf_bucket_type_t serf_bucket_typ
     serf_simple_peek,
     serf_simple_destroy,
     serf_default_read_bucket,
-    serf_default_readline2,
     serf_simple_get_remaining,
     serf_default_ignore_config,
 };

Modified: serf/trunk/buckets/socket_buckets.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/buckets/socket_buckets.c?rev=1713906&r1=1713905&r2=1713906&view=diff
==============================================================================
--- serf/trunk/buckets/socket_buckets.c (original)
+++ serf/trunk/buckets/socket_buckets.c Wed Nov 11 18:09:06 2015
@@ -119,7 +119,6 @@ const serf_bucket_type_t serf_bucket_typ
     serf_socket_peek,
     serf_default_destroy_and_data,
     serf_default_read_bucket,
-    serf_default_readline2,
     serf_default_get_remaining,
     serf_default_ignore_config,
 };

Modified: serf/trunk/buckets/ssl_buckets.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/buckets/ssl_buckets.c?rev=1713906&r1=1713905&r2=1713906&view=diff
==============================================================================
--- serf/trunk/buckets/ssl_buckets.c (original)
+++ serf/trunk/buckets/ssl_buckets.c Wed Nov 11 18:09:06 2015
@@ -2359,7 +2359,6 @@ const serf_bucket_type_t serf_bucket_typ
     serf_ssl_peek,
     serf_ssl_encrypt_destroy_and_data,
     serf_default_read_bucket,
-    serf_default_readline2,
     serf_default_get_remaining,
     serf_ssl_set_config,
 };
@@ -2374,7 +2373,6 @@ const serf_bucket_type_t serf_bucket_typ
     serf_ssl_peek,
     serf_ssl_decrypt_destroy_and_data,
     serf_default_read_bucket,
-    serf_default_readline2,
     serf_default_get_remaining,
     serf_ssl_set_config,
 };

Modified: serf/trunk/serf.h
URL: 
http://svn.apache.org/viewvc/serf/trunk/serf.h?rev=1713906&r1=1713905&r2=1713906&view=diff
==============================================================================
--- serf/trunk/serf.h (original)
+++ serf/trunk/serf.h Wed Nov 11 18:09:06 2015
@@ -851,7 +851,7 @@ struct serf_bucket_type_t {
      * specified by @a len. The data will include the newline, if present.
      *
      * Note that there is no way to limit the amount of data returned
-     * by this function.
+     * by this function. @see serf_bucket_limited_readline().
      *
      * The lifetime of the data is the same as that of the @see read
      * function above.
@@ -965,28 +965,6 @@ struct serf_bucket_type_t {
     serf_bucket_t * (*read_bucket_v2)(serf_bucket_t *bucket,
                                       const serf_bucket_type_t *type);
 
-    /**
-     * Read (and consume) a line of data upto @a requested bytes from @bucket.
-     *
-     * Most api users would typically just use readline() unless limiting of
-     * the result is required.
-     *
-     * The acceptable forms of a newline are given by @a acceptable, and
-     * the type found is returned in @a found. If a newline is not present
-     * in the returned data, then SERF_NEWLINE_NONE is stored into @a found.
-     *
-     * A pointer to the data is returned in @a data, and its length is
-     * specified by @a len. The data will include the newline, if present.
-     *
-     * The lifetime of the data is the same as that of the @see read
-     * function above.
-     *
-     * @since New in 1.4 / Buckets v2.
-     */
-    apr_status_t(*readline2)(serf_bucket_t *bucket, int acceptable,
-                             apr_size_t requested, int *found,
-                             const char **data, apr_size_t *len);
-
     /* Returns length of remaining data to be read in @a bucket. Returns
      * SERF_LENGTH_UNKNOWN if length is unknown.
      *
@@ -1060,8 +1038,6 @@ const serf_bucket_type_t *serf_get_type(
 #define serf_bucket_read_bucket(b,t) ((b)->type->read_bucket(b,t))
 #define serf_bucket_peek(b,d,l) ((b)->type->peek(b,d,l))
 #define serf_bucket_destroy(b) ((b)->type->destroy(b))
-#define serf_bucket_readline2(b,a,r,f,d,l) \
-    SERF__RECREAD(b, serf_get_type(b, 2)->readline2(b,a,r,f,d,l))
 #define serf_bucket_get_remaining(b) (serf_get_type(b, 2)->get_remaining(b))
 #define serf_bucket_set_config(b,c) (serf_get_type(b, 2)->set_config(b, c))
 

Modified: serf/trunk/serf_bucket_util.h
URL: 
http://svn.apache.org/viewvc/serf/trunk/serf_bucket_util.h?rev=1713906&r1=1713905&r2=1713906&view=diff
==============================================================================
--- serf/trunk/serf_bucket_util.h (original)
+++ serf/trunk/serf_bucket_util.h Wed Nov 11 18:09:06 2015
@@ -126,14 +126,14 @@ void serf_default_destroy_and_data(
     serf_bucket_t *bucket);
 
 /**
- * Default implementation of the @see readline2 functionality.
+ * Implementation of a limited @see readline functionality.
  *
  * This function will use the @see read function, when possible optimized by
  * the @a peek function to return the requested result.
  */
-apr_status_t serf_default_readline2(serf_bucket_t *bucket, int acceptable,
-                                    apr_size_t requested, int *found,
-                                    const char **data, apr_size_t *len);
+apr_status_t serf_bucket_limited_readline(serf_bucket_t *bucket, int 
acceptable,
+                                          apr_size_t requested, int *found,
+                                          const char **data, apr_size_t *len);
 
 /**
  * Default implementation of the @see get_remaining functionality.

Modified: serf/trunk/test/mock_sock_buckets.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/test/mock_sock_buckets.c?rev=1713906&r1=1713905&r2=1713906&view=diff
==============================================================================
--- serf/trunk/test/mock_sock_buckets.c (original)
+++ serf/trunk/test/mock_sock_buckets.c Wed Nov 11 18:09:06 2015
@@ -109,7 +109,6 @@ 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