[master] 32cab68 The assert that triggered in #1363 was to restrictive.

Poul-Henning Kamp phk at varnish-cache.org
Thu Oct 24 10:29:04 CEST 2013


commit 32cab6890b04a4f95a743f7c00228b33fd577e24
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Thu Oct 24 08:28:04 2013 +0000

    The assert that triggered in #1363 was to restrictive.
    
    Fixes #1363

diff --git a/bin/varnishd/cache/cache_obj.c b/bin/varnishd/cache/cache_obj.c
index 6da3348..95862ae 100644
--- a/bin/varnishd/cache/cache_obj.c
+++ b/bin/varnishd/cache/cache_obj.c
@@ -97,7 +97,7 @@ ObjIter(struct objiter *oi, void **p, ssize_t *l)
 		VTAILQ_FOREACH(oi->st, &oi->obj->store, list) {
 			if (oi->st->len > ol) {
 				*p = oi->st->ptr + ol;
-				*l = (nl - ol);
+				*l = oi->st->len - ol;
 				oi->len += *l;
 				break;
 			}
@@ -108,8 +108,8 @@ ObjIter(struct objiter *oi, void **p, ssize_t *l)
 		if (oi->st != NULL && oi->st->len == 0)
 			oi->st = NULL;
 		Lck_Unlock(&oi->bo->mtx);
-		assert(*l > 0);
-		return (oi->st ? OIS_DATA : OIS_STREAM);
+		assert(*l > 0 || oi->bo->state == BOS_FINISHED);
+		return (oi->st != NULL ? OIS_DATA : OIS_STREAM);
 	}
 }
 



More information about the varnish-commit mailing list