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.
diff --git a/src/cache.c b/src/cache.c
index e277bec..7ae3267 100644
--- a/src/cache.c
+++ b/src/cache.c
@@ -524,6 +524,17 @@
 #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 @@
 		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 @@
 	.obj_type = OBJ_TYPE_APPLET,
 	.name = "<CACHE>", /* used for logging */
 	.fct = http_cache_io_handler,
-	.release = NULL,
+	.release = http_cache_applet_release,
 };
 
 __attribute__((constructor))