mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-04-20 14:05:31 +00:00
MEDIUM: sample: fill the struct sample with the session, proxy and stream pointers
Some sample analyzer (sample-fetch or converters) needs to known the proxy, session and stream attached to the sampel. The sample-fetches and the converters function pointers cannot be called without these 3 pointers filled. This patch permits to reduce the sample-fetch and the converters called prototypes, and provides a new mean to add information for this type of functions.
This commit is contained in:
parent
bbfb6c4085
commit
6879ad31a5
@ -243,6 +243,15 @@ struct sample {
|
|||||||
struct meth meth; /* used for http method */
|
struct meth meth; /* used for http method */
|
||||||
} data; /* sample data */
|
} data; /* sample data */
|
||||||
union smp_ctx ctx;
|
union smp_ctx ctx;
|
||||||
|
|
||||||
|
/* Some sample analyzer (sample-fetch or converters) needs to
|
||||||
|
* known the attached proxy, session and stream. The sample-fetches
|
||||||
|
* and the converters function pointers cannot be called without
|
||||||
|
* these 3 pointers filled.
|
||||||
|
*/
|
||||||
|
struct proxy *px;
|
||||||
|
struct session *sess;
|
||||||
|
struct stream *strm;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Used to store sample constant */
|
/* Used to store sample constant */
|
||||||
|
@ -2770,6 +2770,9 @@ __LJMP static int hlua_run_sample_fetch(lua_State *L)
|
|||||||
memset(&smp, 0, sizeof(smp));
|
memset(&smp, 0, sizeof(smp));
|
||||||
|
|
||||||
/* Run the sample fetch process. */
|
/* Run the sample fetch process. */
|
||||||
|
smp.px = hsmp->p;
|
||||||
|
smp.sess = hsmp->s->sess;
|
||||||
|
smp.strm = hsmp->s;
|
||||||
if (!f->process(hsmp->p, hsmp->s->sess, hsmp->s, 0, args, &smp, f->kw, f->private)) {
|
if (!f->process(hsmp->p, hsmp->s->sess, hsmp->s, 0, args, &smp, f->kw, f->private)) {
|
||||||
if (hsmp->stringsafe)
|
if (hsmp->stringsafe)
|
||||||
lua_pushstring(L, "");
|
lua_pushstring(L, "");
|
||||||
@ -2888,6 +2891,9 @@ __LJMP static int hlua_run_sample_conv(lua_State *L)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Run the sample conversion process. */
|
/* Run the sample conversion process. */
|
||||||
|
smp.px = hsmp->p;
|
||||||
|
smp.sess = hsmp->s->sess;
|
||||||
|
smp.strm = hsmp->s;
|
||||||
if (!conv->process(hsmp->s, args, &smp, conv->private)) {
|
if (!conv->process(hsmp->s, args, &smp, conv->private)) {
|
||||||
if (hsmp->stringsafe)
|
if (hsmp->stringsafe)
|
||||||
lua_pushstring(L, "");
|
lua_pushstring(L, "");
|
||||||
|
@ -1033,6 +1033,9 @@ struct sample *sample_process(struct proxy *px, struct session *sess,
|
|||||||
memset(p, 0, sizeof(*p));
|
memset(p, 0, sizeof(*p));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
p->px = px;
|
||||||
|
p->sess = sess;
|
||||||
|
p->strm = strm;
|
||||||
if (!expr->fetch->process(px, sess, strm, opt, expr->arg_p, p, expr->fetch->kw, expr->fetch->private))
|
if (!expr->fetch->process(px, sess, strm, opt, expr->arg_p, p, expr->fetch->kw, expr->fetch->private))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user