• Nils Goroll's avatar
    properly maintain the obans list when pruning the ban list tail · 88c2b20a
    Nils Goroll authored
    background: When the ban lurker has finished working the bottom of the
    ban list, conceptually we mark all bans it has evaluated as completed
    and then remove the tail of the ban list which has no references any
    more.
    
    Yet, for efficiency, we first remove the tail and then mark only those
    bans completed, which we did not remove. Doing so depends on knowing
    where in the (obans) list of bans to be completed is the new tail of
    the bans list after pruning.
    
    5dd54f83 was intended to solve this,
    but the fix was incomplete (and also unnecessarily complicated): For
    example when a duplicate ban was issued, ban_lurker_test_ban() could
    remove a ban from the obans list which later happens to become the new
    ban tail.
    
    We now - hopefully - solve the problem for real by properly cleaning
    the obans list when we prune the ban list.
    
    Fixes #3006
    Fixes #2779
    Fixes #2556 for real (5dd54f83 was
    incomplete)
    
     Conflicts:
    	bin/varnishd/cache/cache_ban_lurker.c
    88c2b20a
cache_ban_lurker.c 10.8 KB