MINOR: cache: move the refcount decrease in the applet release
Move the refcount decrease of the cache in the release callback of the applet. We don't need to decrease it in the applet code.
This commit is contained in:
parent
49dc048c25
commit
ecb73b12c1
19
src/cache.c
19
src/cache.c
@ -524,6 +524,17 @@ out:
|
||||
#define HTTP_CACHE_FWD 1
|
||||
#define HTTP_CACHE_END 2
|
||||
|
||||
static void http_cache_applet_release(struct appctx *appctx)
|
||||
{
|
||||
struct cache *cache = (struct cache *)appctx->rule->arg.act.p[0];
|
||||
struct cache_entry *cache_ptr = appctx->ctx.cache.entry;
|
||||
struct shared_block *first = block_ptr(cache_ptr);
|
||||
|
||||
shctx_lock(shctx_ptr(cache));
|
||||
shctx_row_dec_hot(shctx_ptr(cache), first);
|
||||
shctx_unlock(shctx_ptr(cache));
|
||||
}
|
||||
|
||||
static void http_cache_io_handler(struct appctx *appctx)
|
||||
{
|
||||
struct stream_interface *si = appctx->owner;
|
||||
@ -551,18 +562,12 @@ static void http_cache_io_handler(struct appctx *appctx)
|
||||
if ((shctx_row_data_get(shctx, first, (unsigned char *)bi_end(res->buf), sizeof(struct cache_entry), len)) != 0) {
|
||||
fprintf(stderr, "cache error too big: %d\n", first->len - (int)sizeof(struct cache_entry));
|
||||
|
||||
shctx_lock(shctx_ptr(cache));
|
||||
shctx_row_dec_hot(shctx_ptr(cache), first);
|
||||
shctx_unlock(shctx_ptr(cache));
|
||||
si_applet_cant_put(si);
|
||||
goto out;
|
||||
}
|
||||
res->buf->i += len;
|
||||
res->total += len;
|
||||
appctx->st0 = HTTP_CACHE_FWD;
|
||||
shctx_lock(shctx_ptr(cache));
|
||||
shctx_row_dec_hot(shctx_ptr(cache), first);
|
||||
shctx_unlock(shctx_ptr(cache));
|
||||
}
|
||||
|
||||
if (appctx->st0 == HTTP_CACHE_FWD) {
|
||||
@ -1015,7 +1020,7 @@ struct applet http_cache_applet = {
|
||||
.obj_type = OBJ_TYPE_APPLET,
|
||||
.name = "<CACHE>", /* used for logging */
|
||||
.fct = http_cache_io_handler,
|
||||
.release = NULL,
|
||||
.release = http_cache_applet_release,
|
||||
};
|
||||
|
||||
__attribute__((constructor))
|
||||
|
Loading…
x
Reference in New Issue
Block a user