Author: rhuijben
Date: Wed Nov  4 20:58:05 2015
New Revision: 1712648

URL: http://svn.apache.org/viewvc?rev=1712648&view=rev
Log:
Following up on r1712641, add some error checking and revert some accidentally
removed code that had multiple functions.

* buckets/mmap_buckets.c
  (serf_mmap_read): Add error checking.
  (serf_mmap_readline): Add error checking. Fix setting *len.
  (serf_mmap_peek): Add error checking.

Modified:
    serf/trunk/buckets/mmap_buckets.c

Modified: serf/trunk/buckets/mmap_buckets.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/buckets/mmap_buckets.c?rev=1712648&r1=1712647&r2=1712648&view=diff
==============================================================================
--- serf/trunk/buckets/mmap_buckets.c (original)
+++ serf/trunk/buckets/mmap_buckets.c Wed Nov  4 20:58:05 2015
@@ -54,6 +54,7 @@ static apr_status_t serf_mmap_read(serf_
                                    const char **data, apr_size_t *len)
 {
     mmap_context_t *ctx = bucket->data;
+    apr_status_t status;
     char *rd;
 
     if (requested == SERF_READ_ALL_AVAIL || requested > ctx->remaining) {
@@ -64,7 +65,10 @@ static apr_status_t serf_mmap_read(serf_
     }
 
     /* ### Would it be faster to call this once and do the offset ourselves? */
-    apr_mmap_offset(&rd, ctx->mmap, ctx->offset);
+    status = apr_mmap_offset(&rd, ctx->mmap, ctx->offset);
+    if (SERF_BUCKET_READ_ERROR(status))
+        return status;
+
     *data = rd;
 
     /* For the next read... */
@@ -82,13 +86,19 @@ static apr_status_t serf_mmap_readline(s
                                        const char **data, apr_size_t *len)
 {
     mmap_context_t *ctx = bucket->data;
+    apr_status_t status;
     char *end;
 
     /* ### Would it be faster to call this once and do the offset ourselves? */
-    apr_mmap_offset(&end, ctx->mmap, ctx->offset);
+    status = apr_mmap_offset(&end, ctx->mmap, ctx->offset);
+    if (SERF_BUCKET_READ_ERROR(status))
+        return status;
+
     *data = end;
 
-    serf_util_readline(&end, &ctx->remaining, acceptable, found);
+    *len = ctx->remaining;
+    serf_util_readline(&end, len, acceptable, found);
+    *len = end - *data;
 
     ctx->offset += *len;
     ctx->remaining -= *len;
@@ -104,10 +114,14 @@ static apr_status_t serf_mmap_peek(serf_
                                      apr_size_t *len)
 {
     mmap_context_t *ctx = bucket->data;
+    apr_status_t status;
     char *rd;
 
     /* return whatever we have left */
-    apr_mmap_offset(&rd, ctx->mmap, ctx->offset);
+    status = apr_mmap_offset(&rd, ctx->mmap, ctx->offset);
+    if (SERF_BUCKET_READ_ERROR(status))
+        return status;
+
     *data = rd;
     *len = ctx->remaining;
 


Reply via email to