Author: rhuijben
Date: Wed Nov 25 13:46:44 2015
New Revision: 1716407

URL: http://svn.apache.org/viewvc?rev=1716407&view=rev
Log:
* buckets/prefix_buckets.c
  (read_prefix): Return empty read error on empty read.
  (serf_prefix_read,
   serf_prefix_read_iovec,
   serf_prefix_peek): And handle that as return success here.

Modified:
    serf/trunk/buckets/prefix_buckets.c

Modified: serf/trunk/buckets/prefix_buckets.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/buckets/prefix_buckets.c?rev=1716407&r1=1716406&r2=1716407&view=diff
==============================================================================
--- serf/trunk/buckets/prefix_buckets.c (original)
+++ serf/trunk/buckets/prefix_buckets.c Wed Nov 25 13:46:44 2015
@@ -65,13 +65,11 @@ static apr_status_t read_prefix(serf_buc
     if (!ctx->read_len) {
 
         /* Perhaps we can handle this without copying any data? */
-        do
-        {
-            status = serf_bucket_read(ctx->stream, ctx->prefix_len, &data,
-                                      &len);
-        } while (!status && !len);
+        status = serf_bucket_read(ctx->stream, ctx->prefix_len, &data, &len);
 
-        if (SERF_BUCKET_READ_ERROR(status))
+        if (!status && !len)
+            return SERF_ERROR_EMPTY_READ;
+        else if (SERF_BUCKET_READ_ERROR(status))
             return status;
 
         if (APR_STATUS_IS_EOF(status) || (len == ctx->prefix_len)) {
@@ -111,6 +109,8 @@ static apr_status_t read_prefix(serf_buc
 
         if (SERF_BUCKET_READ_ERROR(status))
             return status;
+        else if (!status && !len)
+            return SERF_ERROR_EMPTY_READ;
 
         memcpy(ctx->buffer + ctx->read_len, data, len);
         ctx->read_len += len;
@@ -149,7 +149,8 @@ static apr_status_t serf_prefix_read(ser
 
         if (status) {
             *len = 0;
-            return status;
+            return (status == SERF_ERROR_EMPTY_READ) ? APR_SUCCESS
+                                                     : status;
         }
     }
 
@@ -169,7 +170,8 @@ static apr_status_t serf_prefix_read_iov
 
         if (status) {
             *vecs_used = 0;
-            return status;
+            return (status == SERF_ERROR_EMPTY_READ) ? APR_SUCCESS
+                                                     : status;
         }
     }
 
@@ -188,7 +190,8 @@ static apr_status_t serf_prefix_peek(ser
 
         if (status) {
             *len = 0;
-            return status;
+            return (status == SERF_ERROR_EMPTY_READ) ? APR_SUCCESS
+                                                     : status;
         }
     }
 


Reply via email to