http_ctx->hlua = NULL;
}
+/* Release the private data attached to a Lua action or service rule. */
+static void release_hlua_rule(struct act_rule *rule)
+{
+ if (rule->arg.hlua_rule) {
+ if (rule->arg.hlua_rule->args) {
+ int i;
+
+ for (i = 0; rule->arg.hlua_rule->args[i]; i++)
+ ha_free(&rule->arg.hlua_rule->args[i]);
+ ha_free(&rule->arg.hlua_rule->args);
+ }
+ ha_free(&rule->arg.hlua_rule);
+ }
+}
+
/* global {tcp|http}-request parser. Return ACT_RET_PRS_OK in
* success case, else return ACT_RET_PRS_ERR.
*
rule->action = ACT_CUSTOM;
rule->action_ptr = hlua_action;
+ rule->release_ptr = release_hlua_rule;
return ACT_RET_PRS_OK;
error:
rule->applet.fct = hlua_applet_http_fct;
rule->applet.release = hlua_applet_http_release;
rule->applet.timeout = hlua_timeout_applet;
+ rule->release_ptr = release_hlua_rule;
return ACT_RET_PRS_OK;
}
rule->applet.fct = hlua_applet_tcp_fct;
rule->applet.release = hlua_applet_tcp_release;
rule->applet.timeout = hlua_timeout_applet;
+ rule->release_ptr = release_hlua_rule;
return 0;
}