From 422a3af4cefaf1adcced7af9153ca0ae2d688ffb Mon Sep 17 00:00:00 2001 From: Thierry FOURNIER Date: Mon, 10 Aug 2015 18:30:18 +0200 Subject: [PATCH] MINOR: proto_tcp: add session in the action prototype Some actions require the "struct session" while the "struct stream" is not avalaible. This patch adds a pointer to the session. --- include/types/proto_tcp.h | 2 +- src/hlua.c | 4 ++-- src/proto_tcp.c | 6 +++--- src/vars.c | 6 ++++-- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/include/types/proto_tcp.h b/include/types/proto_tcp.h index 20b8a9f2c6..88f6999f6d 100644 --- a/include/types/proto_tcp.h +++ b/include/types/proto_tcp.h @@ -53,7 +53,7 @@ struct tcp_rule { struct acl_cond *cond; int action; int (*action_ptr)(struct tcp_rule *rule, struct proxy *px, - struct stream *s); + struct session *sess, struct stream *s); union { struct track_ctr_prm trk_ctr; struct capture_prm cap; diff --git a/src/hlua.c b/src/hlua.c index 3a325b75bd..83e3058cdf 100644 --- a/src/hlua.c +++ b/src/hlua.c @@ -4380,7 +4380,7 @@ static int hlua_request_act_wrapper(struct hlua_rule *rule, struct proxy *px, * "hlua_request_act_wrapper" for executing the LUA code. */ int hlua_tcp_req_act_wrapper(struct tcp_rule *tcp_rule, struct proxy *px, - struct stream *s) + struct session *sess, struct stream *s) { return hlua_request_act_wrapper((struct hlua_rule *)tcp_rule->act_prm.data[0], px, s, AN_REQ_INSPECT_FE); @@ -4390,7 +4390,7 @@ int hlua_tcp_req_act_wrapper(struct tcp_rule *tcp_rule, struct proxy *px, * "hlua_request_act_wrapper" for executing the LUA code. */ int hlua_tcp_res_act_wrapper(struct tcp_rule *tcp_rule, struct proxy *px, - struct stream *s) + struct session *sess, struct stream *s) { return hlua_request_act_wrapper((struct hlua_rule *)tcp_rule->act_prm.data[0], px, s, AN_RES_INSPECT); diff --git a/src/proto_tcp.c b/src/proto_tcp.c index e4998682e8..00c308a8bd 100644 --- a/src/proto_tcp.c +++ b/src/proto_tcp.c @@ -1231,7 +1231,7 @@ resume_execution: } else { /* Custom keywords. */ - if (rule->action_ptr && !rule->action_ptr(rule, s->be, s)) { + if (rule->action_ptr && !rule->action_ptr(rule, s->be, s->sess, s)) { s->current_rule = rule; goto missing_data; } @@ -1356,7 +1356,7 @@ resume_execution: } else { /* Custom keywords. */ - if (rule->action_ptr && !rule->action_ptr(rule, s->be, s)) { + if (rule->action_ptr && !rule->action_ptr(rule, s->be, s->sess, s)) { channel_dont_close(rep); s->current_rule = rule; return 0; @@ -1441,7 +1441,7 @@ int tcp_exec_req_rules(struct session *sess) else { /* Custom keywords. */ if (rule->action_ptr) { - rule->action_ptr(rule, sess->fe, NULL); + rule->action_ptr(rule, sess->fe, sess, NULL); if (rule->action == TCP_ACT_CUSTOM_CONT) continue; } diff --git a/src/vars.c b/src/vars.c index d233c8885a..02d472acf2 100644 --- a/src/vars.c +++ b/src/vars.c @@ -502,7 +502,8 @@ static inline int action_store(struct sample_expr *expr, const char *name, } /* Returns 0 if miss data, else returns 1. */ -static int action_tcp_req_store(struct tcp_rule *rule, struct proxy *px, struct stream *s) +static int action_tcp_req_store(struct tcp_rule *rule, struct proxy *px, + struct session *sess, struct stream *s) { struct sample_expr *expr = rule->act_prm.data[0]; const char *name = rule->act_prm.data[1]; @@ -512,7 +513,8 @@ static int action_tcp_req_store(struct tcp_rule *rule, struct proxy *px, struct } /* Returns 0 if miss data, else returns 1. */ -static int action_tcp_res_store(struct tcp_rule *rule, struct proxy *px, struct stream *s) +static int action_tcp_res_store(struct tcp_rule *rule, struct proxy *px, + struct session *sess, struct stream *s) { struct sample_expr *expr = rule->act_prm.data[0]; const char *name = rule->act_prm.data[1]; -- 2.47.3