diff --git a/src/tcp_act.c b/src/tcp_act.c index 7608643b3..354dbc95a 100644 --- a/src/tcp_act.c +++ b/src/tcp_act.c @@ -356,6 +356,14 @@ static enum act_return tcp_action_set_tos(struct act_rule *rule, struct proxy *p } #endif +/* + * Release the sample expr when releasing a set src/dst action + */ +static void release_set_src_dst_action(struct act_rule *rule) +{ + release_sample_expr(rule->arg.expr); +} + /* parse "set-{src,dst}[-port]" action */ static enum act_parse_ret tcp_parse_set_src_dst(const char **args, int *orig_arg, struct proxy *px, struct act_rule *rule, char **err) @@ -397,6 +405,7 @@ static enum act_parse_ret tcp_parse_set_src_dst(const char **args, int *orig_arg return ACT_RET_PRS_ERR; } + rule->release_ptr = release_set_src_dst_action; (*orig_arg)++; return ACT_RET_PRS_OK;