Doesn't the race condition still exist? For example, I can delete the
object after the if but before the hash_set. You need a mutex, don't
you?
Ryan
> - apr_hash_set(sconf->cacheht, obj->key, strlen(obj->key), NULL);
> + /*
> + * RACE .. some one might have just deleted this object .. so
test
> + * if it is still around
> + */
> + if (obj) {
> + apr_hash_set(sconf->cacheht, obj->key, strlen(obj->key),
NULL);
> + cleanup_cache_object(obj);
> + h->cache_obj = NULL;
> + }
> if (sconf->lock) {
> apr_thread_mutex_unlock(sconf->lock);
> - }
> -
> - cleanup_cache_object(obj);
> + }
>
> return OK;
> }
>
>
>