[master] d12625f Do not set the oa_present bit when ObjSetAttr returns failure
Martin Blix Grydeland
martin at varnish-software.com
Tue Feb 23 17:44:46 CET 2016
commit d12625f3c5cc4851b13519503f8e51269e7b0407
Author: Martin Blix Grydeland <martin at varnish-software.com>
Date: Tue Feb 23 15:43:30 2016 +0100
Do not set the oa_present bit when ObjSetAttr returns failure
diff --git a/bin/varnishd/cache/cache_expire.c b/bin/varnishd/cache/cache_expire.c
index 6cc92dd..9bdd92e 100644
--- a/bin/varnishd/cache/cache_expire.c
+++ b/bin/varnishd/cache/cache_expire.c
@@ -180,7 +180,7 @@ exp_inbox(struct exp_priv *ep, struct objcore *oc, unsigned flags)
oc->timer_when, oc->flags);
if (oc->flags & OC_F_DYING) {
- oc->exp_flags &= OC_EF_EXP;
+ oc->exp_flags &= ~OC_EF_EXP;
VSLb(&ep->vsl, SLT_ExpKill, "EXP_Kill p=%p e=%.9f f=0x%x", oc,
oc->timer_when, oc->flags);
if (!(flags & OC_EF_INSERT)) {
diff --git a/bin/varnishd/cache/cache_obj.c b/bin/varnishd/cache/cache_obj.c
index 57961cf..0248ee7 100644
--- a/bin/varnishd/cache/cache_obj.c
+++ b/bin/varnishd/cache/cache_obj.c
@@ -414,14 +414,17 @@ ObjSetAttr(struct worker *wrk, struct objcore *oc, enum obj_attr attr,
ssize_t len, const void *ptr)
{
const struct obj_methods *om = obj_getmethods(oc);
+ void *r;
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
CHECK_OBJ_NOTNULL(oc->boc, BOC_MAGIC);
AN(om->objsetattr);
assert((int)attr < 16);
- oc->oa_present |= (1 << attr);
- return (om->objsetattr(wrk, oc, attr, len, ptr));
+ r = om->objsetattr(wrk, oc, attr, len, ptr);
+ if (r)
+ oc->oa_present |= (1 << attr);
+ return (r);
}
/*====================================================================
More information about the varnish-commit
mailing list