Author: rhuijben
Date: Mon Oct 12 14:52:59 2015
New Revision: 1708134

URL: http://svn.apache.org/viewvc?rev=1708134&view=rev
Log:
Provide a default bucket implementation of peek() for buckets that currently
just use a NULL function. It is safer to return that there is nothing to peek
than to segfault.

* serf-dev/dev/buckets/buckets.c
  (serf_default_peek): New function.

* serf-dev/dev/buckets/bwtp_buckets.c
  (bwtp_incoming_peek,
   serf_bucket_type_bwtp_incoming_frame): Document TODO in a safer way.

* serf-dev/dev/buckets/dechunk_buckets.c
  (serf_dechunk_peek,
   serf_bucket_type_dechunk): Document TODO in a safer way.

* serf-dev/dev/buckets/deflate_buckets.c
  (serf_deflate_peek,
   serf_bucket_type_deflate): Document TODO in a safer way.

* serf-dev/dev/buckets/response_buckets.c
  (serf_response_peek,
   serf_bucket_type_response): Document TODO in a safer way.

* serf-dev/dev/serf_bucket_util.h
  (serf_default_peek): New function.

Modified:
    serf/trunk/buckets/buckets.c
    serf/trunk/buckets/bwtp_buckets.c
    serf/trunk/buckets/dechunk_buckets.c
    serf/trunk/buckets/deflate_buckets.c
    serf/trunk/buckets/response_buckets.c
    serf/trunk/serf_bucket_util.h

Modified: serf/trunk/buckets/buckets.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/buckets/buckets.c?rev=1708134&r1=1708133&r2=1708134&view=diff
==============================================================================
--- serf/trunk/buckets/buckets.c (original)
+++ serf/trunk/buckets/buckets.c Mon Oct 12 14:52:59 2015
@@ -112,6 +112,17 @@ serf_bucket_t *serf_default_read_bucket(
     return NULL;
 }
 
+apr_status_t serf_default_peek(
+    serf_bucket_t *bucket,
+    const char **data,
+    apr_size_t *len)
+{
+    /* State: no data available */
+    *data = "";
+    *len = 0;
+    return APR_SUCCESS;
+}
+
 
 void serf_default_destroy(serf_bucket_t *bucket)
 {

Modified: serf/trunk/buckets/bwtp_buckets.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/buckets/bwtp_buckets.c?rev=1708134&r1=1708133&r2=1708134&view=diff
==============================================================================
--- serf/trunk/buckets/bwtp_buckets.c (original)
+++ serf/trunk/buckets/bwtp_buckets.c Mon Oct 12 14:52:59 2015
@@ -586,9 +586,6 @@ static apr_status_t bwtp_incoming_readli
     return serf_bucket_readline(ctx->body, acceptable, found, data, len);
 }
 
-/* ### need to implement */
-#define bwtp_incoming_peek NULL
-
 const serf_bucket_type_t serf_bucket_type_bwtp_incoming_frame = {
     "BWTP-INCOMING",
     bwtp_incoming_read,
@@ -596,6 +593,6 @@ const serf_bucket_type_t serf_bucket_typ
     serf_default_read_iovec,
     serf_default_read_for_sendfile,
     serf_default_read_bucket,
-    bwtp_incoming_peek,
+    serf_default_peek /* ### TODO */,
     bwtp_incoming_destroy_and_data,
 };

Modified: serf/trunk/buckets/dechunk_buckets.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/buckets/dechunk_buckets.c?rev=1708134&r1=1708133&r2=1708134&view=diff
==============================================================================
--- serf/trunk/buckets/dechunk_buckets.c (original)
+++ serf/trunk/buckets/dechunk_buckets.c Mon Oct 12 14:52:59 2015
@@ -200,7 +200,6 @@ static apr_status_t serf_dechunk_set_con
 
 /* ### need to implement */
 #define serf_dechunk_readline NULL
-#define serf_dechunk_peek NULL
 
 const serf_bucket_type_t serf_bucket_type_dechunk = {
     "DECHUNK",
@@ -209,7 +208,7 @@ const serf_bucket_type_t serf_bucket_typ
     serf_default_read_iovec,
     serf_default_read_for_sendfile,
     serf_buckets_are_v2,
-    serf_dechunk_peek /* ### TODO */,
+    serf_default_peek /* ### TODO */,
     serf_dechunk_destroy_and_data,
     serf_default_read_bucket,
     serf_default_get_remaining,

Modified: serf/trunk/buckets/deflate_buckets.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/buckets/deflate_buckets.c?rev=1708134&r1=1708133&r2=1708134&view=diff
==============================================================================
--- serf/trunk/buckets/deflate_buckets.c (original)
+++ serf/trunk/buckets/deflate_buckets.c Mon Oct 12 14:52:59 2015
@@ -446,7 +446,6 @@ static apr_status_t serf_deflate_set_con
 
 /* ### need to implement */
 #define serf_deflate_readline NULL
-#define serf_deflate_peek NULL
 
 const serf_bucket_type_t serf_bucket_type_deflate = {
     "DEFLATE",
@@ -455,7 +454,7 @@ const serf_bucket_type_t serf_bucket_typ
     serf_default_read_iovec,
     serf_default_read_for_sendfile,
     serf_buckets_are_v2,
-    serf_deflate_peek /* ### TODO */,
+    serf_default_peek /* ### TODO */,
     serf_deflate_destroy_and_data,
     serf_default_read_bucket,
     serf_default_get_remaining,

Modified: serf/trunk/buckets/response_buckets.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/buckets/response_buckets.c?rev=1708134&r1=1708133&r2=1708134&view=diff
==============================================================================
--- serf/trunk/buckets/response_buckets.c (original)
+++ serf/trunk/buckets/response_buckets.c Mon Oct 12 14:52:59 2015
@@ -525,9 +525,6 @@ static apr_status_t serf_response_set_co
     return serf_bucket_set_config(ctx->stream, config);
 }
 
-/* ### need to implement */
-#define serf_response_peek NULL
-
 void serf__bucket_response_set_error_on_eof(serf_bucket_t *bucket,
                                             apr_status_t error)
 {
@@ -542,7 +539,7 @@ const serf_bucket_type_t serf_bucket_typ
     serf_default_read_iovec,
     serf_default_read_for_sendfile,
     serf_buckets_are_v2,
-    serf_response_peek /* ### TODO */,
+    serf_default_peek /* ### TODO */,
     serf_response_destroy_and_data,
     serf_default_read_bucket,
     serf_default_get_remaining,

Modified: serf/trunk/serf_bucket_util.h
URL: 
http://svn.apache.org/viewvc/serf/trunk/serf_bucket_util.h?rev=1708134&r1=1708133&r2=1708134&view=diff
==============================================================================
--- serf/trunk/serf_bucket_util.h (original)
+++ serf/trunk/serf_bucket_util.h Mon Oct 12 14:52:59 2015
@@ -85,6 +85,18 @@ serf_bucket_t *serf_default_read_bucket(
     const serf_bucket_type_t *type);
 
 /**
+ * Default implementation of the @see peek functionality.
+ *
+ * This function will always state that there is no data available.
+ *
+ * @since New in 1.4.
+ */
+apr_status_t serf_default_peek(
+    serf_bucket_t *bucket,
+    const char **data,
+    apr_size_t *len);
+
+/**
  * Default implementation of the @see destroy functionality.
  *
  * This function will return the @a bucket to its allcoator.


Reply via email to