mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-08-06 23:27:04 +02:00
MINOR: stream: provide a few helpers to retrieve frontend, listener and origin
Expressions are quite long when using strm_sess(strm)->whatever, so let's provide a few helpers : strm_fe(), strm_li(), strm_orig().
This commit is contained in:
parent
192252e2d8
commit
d0d8da989b
@ -68,6 +68,24 @@ static inline struct session *strm_sess(const struct stream *strm)
|
||||
return strm->sess;
|
||||
}
|
||||
|
||||
/* returns the frontend this stream was initiated from */
|
||||
static inline struct proxy *strm_fe(const struct stream *strm)
|
||||
{
|
||||
return strm->sess->fe;
|
||||
}
|
||||
|
||||
/* returns the listener this stream was initiated from */
|
||||
static inline struct listener *strm_li(const struct stream *strm)
|
||||
{
|
||||
return strm->sess->listener;
|
||||
}
|
||||
|
||||
/* returns a pointer to the origin of the session which created this stream */
|
||||
static inline enum obj_type *strm_orig(const struct stream *strm)
|
||||
{
|
||||
return strm->sess->origin;
|
||||
}
|
||||
|
||||
/* sets the stick counter's entry pointer */
|
||||
static inline void stkctr_set_entry(struct stkctr *stkctr, struct stksess *entry)
|
||||
{
|
||||
|
@ -607,7 +607,7 @@ int assign_server(struct stream *s)
|
||||
|
||||
switch (s->be->lbprm.algo & BE_LB_PARM) {
|
||||
case BE_LB_HASH_SRC:
|
||||
conn = objt_conn(strm_sess(s)->origin);
|
||||
conn = objt_conn(strm_orig(s));
|
||||
if (conn && conn->addr.from.ss_family == AF_INET) {
|
||||
srv = get_server_sh(s->be,
|
||||
(void *)&((struct sockaddr_in *)&conn->addr.from)->sin_addr,
|
||||
@ -746,7 +746,7 @@ int assign_server(struct stream *s)
|
||||
*/
|
||||
int assign_server_address(struct stream *s)
|
||||
{
|
||||
struct connection *cli_conn = objt_conn(strm_sess(s)->origin);
|
||||
struct connection *cli_conn = objt_conn(strm_orig(s));
|
||||
struct connection *srv_conn = objt_conn(s->si[1].end);
|
||||
|
||||
#ifdef DEBUG_FULL
|
||||
@ -966,7 +966,7 @@ static void assign_tproxy_address(struct stream *s)
|
||||
case CO_SRC_TPROXY_CLI:
|
||||
case CO_SRC_TPROXY_CIP:
|
||||
/* FIXME: what can we do if the client connects in IPv6 or unix socket ? */
|
||||
cli_conn = objt_conn(strm_sess(s)->origin);
|
||||
cli_conn = objt_conn(strm_orig(s));
|
||||
if (cli_conn)
|
||||
srv_conn->addr.from = cli_conn->addr.from;
|
||||
else
|
||||
@ -1074,7 +1074,7 @@ int connect_server(struct stream *s)
|
||||
srv_conn->send_proxy_ofs = 0;
|
||||
if (objt_server(s->target) && objt_server(s->target)->pp_opts) {
|
||||
srv_conn->send_proxy_ofs = 1; /* must compute size */
|
||||
cli_conn = objt_conn(strm_sess(s)->origin);
|
||||
cli_conn = objt_conn(strm_orig(s));
|
||||
if (cli_conn)
|
||||
conn_get_to_addr(cli_conn);
|
||||
}
|
||||
@ -1090,7 +1090,7 @@ int connect_server(struct stream *s)
|
||||
}
|
||||
|
||||
/* flag for logging source ip/port */
|
||||
if (strm_sess(s)->fe->options2 & PR_O2_SRC_ADDR)
|
||||
if (strm_fe(s)->options2 & PR_O2_SRC_ADDR)
|
||||
s->si[1].flags |= SI_FL_SRC_ADDR;
|
||||
|
||||
/* disable lingering */
|
||||
|
@ -319,10 +319,10 @@ int http_compression_buffer_end(struct stream *s, struct buffer **in, struct buf
|
||||
/* update input rate */
|
||||
if (s->comp_ctx && s->comp_ctx->cur_lvl > 0) {
|
||||
update_freq_ctr(&global.comp_bps_in, msg->next);
|
||||
strm_sess(s)->fe->fe_counters.comp_in += msg->next;
|
||||
strm_fe(s)->fe_counters.comp_in += msg->next;
|
||||
s->be->be_counters.comp_in += msg->next;
|
||||
} else {
|
||||
strm_sess(s)->fe->fe_counters.comp_byp += msg->next;
|
||||
strm_fe(s)->fe_counters.comp_byp += msg->next;
|
||||
s->be->be_counters.comp_byp += msg->next;
|
||||
}
|
||||
|
||||
@ -346,7 +346,7 @@ int http_compression_buffer_end(struct stream *s, struct buffer **in, struct buf
|
||||
|
||||
if (s->comp_ctx && s->comp_ctx->cur_lvl > 0) {
|
||||
update_freq_ctr(&global.comp_bps_out, to_forward);
|
||||
strm_sess(s)->fe->fe_counters.comp_out += to_forward;
|
||||
strm_fe(s)->fe_counters.comp_out += to_forward;
|
||||
s->be->be_counters.comp_out += to_forward;
|
||||
}
|
||||
|
||||
|
@ -551,7 +551,7 @@ static int stats_dump_table_head_to_buffer(struct chunk *msg, struct stream_inte
|
||||
|
||||
/* any other information should be dumped here */
|
||||
|
||||
if (target && strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_OPER)
|
||||
if (target && strm_li(s)->bind_conf->level < ACCESS_LVL_OPER)
|
||||
chunk_appendf(msg, "# contents not dumped due to insufficient privileges\n");
|
||||
|
||||
if (bi_putchk(si_ic(si), msg) == -1) {
|
||||
@ -705,7 +705,7 @@ static void stats_sock_table_key_request(struct stream_interface *si, char **arg
|
||||
}
|
||||
|
||||
/* check permissions */
|
||||
if (strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_OPER) {
|
||||
if (strm_li(s)->bind_conf->level < ACCESS_LVL_OPER) {
|
||||
appctx->ctx.cli.msg = stats_permission_denied_msg;
|
||||
appctx->st0 = STAT_CLI_PRINT;
|
||||
return;
|
||||
@ -905,7 +905,7 @@ static struct proxy *expect_frontend_admin(struct stream *s, struct stream_inter
|
||||
struct appctx *appctx = __objt_appctx(si->end);
|
||||
struct proxy *px;
|
||||
|
||||
if (strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_ADMIN) {
|
||||
if (strm_li(s)->bind_conf->level < ACCESS_LVL_ADMIN) {
|
||||
appctx->ctx.cli.msg = stats_permission_denied_msg;
|
||||
appctx->st0 = STAT_CLI_PRINT;
|
||||
return NULL;
|
||||
@ -938,7 +938,7 @@ static struct server *expect_server_admin(struct stream *s, struct stream_interf
|
||||
struct server *sv;
|
||||
char *line;
|
||||
|
||||
if (strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_ADMIN) {
|
||||
if (strm_li(s)->bind_conf->level < ACCESS_LVL_ADMIN) {
|
||||
appctx->ctx.cli.msg = stats_permission_denied_msg;
|
||||
appctx->st0 = STAT_CLI_PRINT;
|
||||
return NULL;
|
||||
@ -1111,7 +1111,7 @@ static int stats_sock_parse_request(struct stream_interface *si, char *line)
|
||||
}
|
||||
else if (strcmp(args[1], "sess") == 0) {
|
||||
appctx->st2 = STAT_ST_INIT;
|
||||
if (strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_OPER) {
|
||||
if (strm_li(s)->bind_conf->level < ACCESS_LVL_OPER) {
|
||||
appctx->ctx.cli.msg = stats_permission_denied_msg;
|
||||
appctx->st0 = STAT_CLI_PRINT;
|
||||
return 1;
|
||||
@ -1127,7 +1127,7 @@ static int stats_sock_parse_request(struct stream_interface *si, char *line)
|
||||
appctx->st0 = STAT_CLI_O_SESS; // stats_dump_sess_to_buffer
|
||||
}
|
||||
else if (strcmp(args[1], "errors") == 0) {
|
||||
if (strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_OPER) {
|
||||
if (strm_li(s)->bind_conf->level < ACCESS_LVL_OPER) {
|
||||
appctx->ctx.cli.msg = stats_permission_denied_msg;
|
||||
appctx->st0 = STAT_CLI_PRINT;
|
||||
return 1;
|
||||
@ -1188,8 +1188,8 @@ static int stats_sock_parse_request(struct stream_interface *si, char *line)
|
||||
clrall = 1;
|
||||
|
||||
/* check permissions */
|
||||
if (strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_OPER ||
|
||||
(clrall && strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_ADMIN)) {
|
||||
if (strm_li(s)->bind_conf->level < ACCESS_LVL_OPER ||
|
||||
(clrall && strm_li(s)->bind_conf->level < ACCESS_LVL_ADMIN)) {
|
||||
appctx->ctx.cli.msg = stats_permission_denied_msg;
|
||||
appctx->st0 = STAT_CLI_PRINT;
|
||||
return 1;
|
||||
@ -1511,15 +1511,15 @@ static int stats_sock_parse_request(struct stream_interface *si, char *line)
|
||||
resume_listener(l);
|
||||
}
|
||||
|
||||
if (px->maxconn > px->feconn && !LIST_ISEMPTY(&strm_sess(s)->fe->listener_queue))
|
||||
dequeue_all_listeners(&strm_sess(s)->fe->listener_queue);
|
||||
if (px->maxconn > px->feconn && !LIST_ISEMPTY(&strm_fe(s)->listener_queue))
|
||||
dequeue_all_listeners(&strm_fe(s)->listener_queue);
|
||||
|
||||
return 1;
|
||||
}
|
||||
else if (strcmp(args[2], "global") == 0) {
|
||||
int v;
|
||||
|
||||
if (strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_ADMIN) {
|
||||
if (strm_li(s)->bind_conf->level < ACCESS_LVL_ADMIN) {
|
||||
appctx->ctx.cli.msg = stats_permission_denied_msg;
|
||||
appctx->st0 = STAT_CLI_PRINT;
|
||||
return 1;
|
||||
@ -1561,7 +1561,7 @@ static int stats_sock_parse_request(struct stream_interface *si, char *line)
|
||||
if (strcmp(args[3], "global") == 0) {
|
||||
int v;
|
||||
|
||||
if (strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_ADMIN) {
|
||||
if (strm_li(s)->bind_conf->level < ACCESS_LVL_ADMIN) {
|
||||
appctx->ctx.cli.msg = stats_permission_denied_msg;
|
||||
appctx->st0 = STAT_CLI_PRINT;
|
||||
return 1;
|
||||
@ -1598,7 +1598,7 @@ static int stats_sock_parse_request(struct stream_interface *si, char *line)
|
||||
if (strcmp(args[3], "global") == 0) {
|
||||
int v;
|
||||
|
||||
if (strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_ADMIN) {
|
||||
if (strm_li(s)->bind_conf->level < ACCESS_LVL_ADMIN) {
|
||||
appctx->ctx.cli.msg = stats_permission_denied_msg;
|
||||
appctx->st0 = STAT_CLI_PRINT;
|
||||
return 1;
|
||||
@ -1636,7 +1636,7 @@ static int stats_sock_parse_request(struct stream_interface *si, char *line)
|
||||
if (strcmp(args[3], "global") == 0) {
|
||||
int v;
|
||||
|
||||
if (strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_ADMIN) {
|
||||
if (strm_li(s)->bind_conf->level < ACCESS_LVL_ADMIN) {
|
||||
appctx->ctx.cli.msg = stats_permission_denied_msg;
|
||||
appctx->st0 = STAT_CLI_PRINT;
|
||||
return 1;
|
||||
@ -1981,7 +1981,7 @@ static int stats_sock_parse_request(struct stream_interface *si, char *line)
|
||||
else if (strcmp(args[1], "session") == 0) {
|
||||
struct stream *sess, *ptr;
|
||||
|
||||
if (strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_ADMIN) {
|
||||
if (strm_li(s)->bind_conf->level < ACCESS_LVL_ADMIN) {
|
||||
appctx->ctx.cli.msg = stats_permission_denied_msg;
|
||||
appctx->st0 = STAT_CLI_PRINT;
|
||||
return 1;
|
||||
@ -5020,9 +5020,9 @@ static int stats_dump_full_sess_to_buffer(struct stream_interface *si, struct st
|
||||
tm.tm_mday, monthname[tm.tm_mon], tm.tm_year+1900,
|
||||
tm.tm_hour, tm.tm_min, tm.tm_sec, (int)(sess->logs.accept_date.tv_usec),
|
||||
sess->uniq_id,
|
||||
strm_sess(sess)->listener && strm_sess(sess)->listener->proto->name ? strm_sess(sess)->listener->proto->name : "?");
|
||||
strm_li(sess) && strm_li(sess)->proto->name ? strm_li(sess)->proto->name : "?");
|
||||
|
||||
conn = objt_conn(strm_sess(sess)->origin);
|
||||
conn = objt_conn(strm_orig(sess));
|
||||
switch (conn ? addr_to_str(&conn->addr.from, pn, sizeof(pn)) : AF_UNSPEC) {
|
||||
case AF_INET:
|
||||
case AF_INET6:
|
||||
@ -5030,7 +5030,7 @@ static int stats_dump_full_sess_to_buffer(struct stream_interface *si, struct st
|
||||
pn, get_host_port(&conn->addr.from));
|
||||
break;
|
||||
case AF_UNIX:
|
||||
chunk_appendf(&trash, " source=unix:%d\n", strm_sess(sess)->listener->luid);
|
||||
chunk_appendf(&trash, " source=unix:%d\n", strm_li(sess)->luid);
|
||||
break;
|
||||
default:
|
||||
/* no more information to print right now */
|
||||
@ -5044,9 +5044,9 @@ static int stats_dump_full_sess_to_buffer(struct stream_interface *si, struct st
|
||||
|
||||
chunk_appendf(&trash,
|
||||
" frontend=%s (id=%u mode=%s), listener=%s (id=%u)",
|
||||
strm_sess(sess)->fe->id, strm_sess(sess)->fe->uuid, strm_sess(sess)->fe->mode ? "http" : "tcp",
|
||||
strm_sess(sess)->listener ? strm_sess(sess)->listener->name ? strm_sess(sess)->listener->name : "?" : "?",
|
||||
strm_sess(sess)->listener ? strm_sess(sess)->listener->luid : 0);
|
||||
strm_fe(sess)->id, strm_fe(sess)->uuid, strm_fe(sess)->mode ? "http" : "tcp",
|
||||
strm_li(sess) ? strm_li(sess)->name ? strm_li(sess)->name : "?" : "?",
|
||||
strm_li(sess) ? strm_li(sess)->luid : 0);
|
||||
|
||||
if (conn)
|
||||
conn_get_to_addr(conn);
|
||||
@ -5058,7 +5058,7 @@ static int stats_dump_full_sess_to_buffer(struct stream_interface *si, struct st
|
||||
pn, get_host_port(&conn->addr.to));
|
||||
break;
|
||||
case AF_UNIX:
|
||||
chunk_appendf(&trash, " addr=unix:%d\n", strm_sess(sess)->listener->luid);
|
||||
chunk_appendf(&trash, " addr=unix:%d\n", strm_li(sess)->luid);
|
||||
break;
|
||||
default:
|
||||
/* no more information to print right now */
|
||||
@ -5602,10 +5602,10 @@ static int stats_dump_sess_to_buffer(struct stream_interface *si)
|
||||
chunk_appendf(&trash,
|
||||
"%p: proto=%s",
|
||||
curr_sess,
|
||||
strm_sess(curr_sess)->listener->proto->name);
|
||||
strm_li(curr_sess)->proto->name);
|
||||
|
||||
|
||||
conn = objt_conn(strm_sess(curr_sess)->origin);
|
||||
conn = objt_conn(strm_orig(curr_sess));
|
||||
switch (conn ? addr_to_str(&conn->addr.from, pn, sizeof(pn)) : AF_UNSPEC) {
|
||||
case AF_INET:
|
||||
case AF_INET6:
|
||||
@ -5613,7 +5613,7 @@ static int stats_dump_sess_to_buffer(struct stream_interface *si)
|
||||
" src=%s:%d fe=%s be=%s srv=%s",
|
||||
pn,
|
||||
get_host_port(&conn->addr.from),
|
||||
strm_sess(curr_sess)->fe->id,
|
||||
strm_fe(curr_sess)->id,
|
||||
(curr_sess->be->cap & PR_CAP_BE) ? curr_sess->be->id : "<NONE>",
|
||||
objt_server(curr_sess->target) ? objt_server(curr_sess->target)->id : "<none>"
|
||||
);
|
||||
@ -5621,8 +5621,8 @@ static int stats_dump_sess_to_buffer(struct stream_interface *si)
|
||||
case AF_UNIX:
|
||||
chunk_appendf(&trash,
|
||||
" src=unix:%d fe=%s be=%s srv=%s",
|
||||
strm_sess(curr_sess)->listener->luid,
|
||||
strm_sess(curr_sess)->fe->id,
|
||||
strm_li(curr_sess)->luid,
|
||||
strm_fe(curr_sess)->id,
|
||||
(curr_sess->be->cap & PR_CAP_BE) ? curr_sess->be->id : "<NONE>",
|
||||
objt_server(curr_sess->target) ? objt_server(curr_sess->target)->id : "<none>"
|
||||
);
|
||||
@ -5828,7 +5828,7 @@ static int stats_table_request(struct stream_interface *si, int action)
|
||||
return 0;
|
||||
|
||||
if (appctx->ctx.table.target &&
|
||||
strm_sess(s)->listener->bind_conf->level >= ACCESS_LVL_OPER) {
|
||||
strm_li(s)->bind_conf->level >= ACCESS_LVL_OPER) {
|
||||
/* dump entries only if table explicitly requested */
|
||||
eb = ebmb_first(&appctx->ctx.table.proxy->table.keys);
|
||||
if (eb) {
|
||||
|
@ -215,7 +215,7 @@ static void peer_session_release(struct stream_interface *si)
|
||||
static void peer_io_handler(struct stream_interface *si)
|
||||
{
|
||||
struct stream *s = si_strm(si);
|
||||
struct peers *curpeers = (struct peers *)strm_sess(s)->fe->parent;
|
||||
struct peers *curpeers = (struct peers *)strm_fe(s)->parent;
|
||||
struct appctx *appctx = objt_appctx(si->end);
|
||||
int reql = 0;
|
||||
int repl = 0;
|
||||
|
@ -851,8 +851,8 @@ struct chunk *http_error_message(struct stream *s, int msgnum)
|
||||
{
|
||||
if (s->be->errmsg[msgnum].str)
|
||||
return &s->be->errmsg[msgnum];
|
||||
else if (strm_sess(s)->fe->errmsg[msgnum].str)
|
||||
return &strm_sess(s)->fe->errmsg[msgnum];
|
||||
else if (strm_fe(s)->errmsg[msgnum].str)
|
||||
return &strm_fe(s)->errmsg[msgnum];
|
||||
else
|
||||
return &http_err_chunks[msgnum];
|
||||
}
|
||||
@ -2264,7 +2264,7 @@ int select_compression_request_header(struct stream *s, struct buffer *req)
|
||||
}
|
||||
|
||||
/* search for the algo in the backend in priority or the frontend */
|
||||
if ((s->be->comp && (comp_algo_back = s->be->comp->algos)) || (strm_sess(s)->fe->comp && (comp_algo_back = strm_sess(s)->fe->comp->algos))) {
|
||||
if ((s->be->comp && (comp_algo_back = s->be->comp->algos)) || (strm_fe(s)->comp && (comp_algo_back = strm_fe(s)->comp->algos))) {
|
||||
int best_q = 0;
|
||||
|
||||
ctx.idx = 0;
|
||||
@ -2322,7 +2322,7 @@ int select_compression_request_header(struct stream *s, struct buffer *req)
|
||||
|
||||
/* remove all occurrences of the header when "compression offload" is set */
|
||||
if (s->comp_algo) {
|
||||
if ((s->be->comp && s->be->comp->offload) || (strm_sess(s)->fe->comp && strm_sess(s)->fe->comp->offload)) {
|
||||
if ((s->be->comp && s->be->comp->offload) || (strm_fe(s)->comp && strm_fe(s)->comp->offload)) {
|
||||
http_remove_header2(msg, &txn->hdr_idx, &ctx);
|
||||
ctx.idx = 0;
|
||||
while (http_find_header2("Accept-Encoding", 15, req->p, &txn->hdr_idx, &ctx)) {
|
||||
@ -2333,7 +2333,7 @@ int select_compression_request_header(struct stream *s, struct buffer *req)
|
||||
}
|
||||
|
||||
/* identity is implicit does not require headers */
|
||||
if ((s->be->comp && (comp_algo_back = s->be->comp->algos)) || (strm_sess(s)->fe->comp && (comp_algo_back = strm_sess(s)->fe->comp->algos))) {
|
||||
if ((s->be->comp && (comp_algo_back = s->be->comp->algos)) || (strm_fe(s)->comp && (comp_algo_back = strm_fe(s)->comp->algos))) {
|
||||
for (comp_algo = comp_algo_back; comp_algo; comp_algo = comp_algo->next) {
|
||||
if (comp_algo->cfg_name_len == 8 && memcmp(comp_algo->cfg_name, "identity", 8) == 0) {
|
||||
s->comp_algo = comp_algo;
|
||||
@ -2400,7 +2400,7 @@ int select_compression_response_header(struct stream *s, struct buffer *res)
|
||||
goto fail;
|
||||
|
||||
if ((s->be->comp && (comp_type = s->be->comp->types)) ||
|
||||
(strm_sess(s)->fe->comp && (comp_type = strm_sess(s)->fe->comp->types))) {
|
||||
(strm_fe(s)->comp && (comp_type = strm_fe(s)->comp->types))) {
|
||||
for (; comp_type; comp_type = comp_type->next) {
|
||||
if (ctx.vlen >= comp_type->name_len &&
|
||||
strncasecmp(ctx.line+ctx.val, comp_type->name, comp_type->name_len) == 0)
|
||||
@ -2413,7 +2413,7 @@ int select_compression_response_header(struct stream *s, struct buffer *res)
|
||||
}
|
||||
}
|
||||
else { /* no content-type header */
|
||||
if ((s->be->comp && s->be->comp->types) || (strm_sess(s)->fe->comp && strm_sess(s)->fe->comp->types))
|
||||
if ((s->be->comp && s->be->comp->types) || (strm_fe(s)->comp && strm_fe(s)->comp->types))
|
||||
goto fail; /* a content-type was required */
|
||||
}
|
||||
|
||||
@ -2464,7 +2464,7 @@ int select_compression_response_header(struct stream *s, struct buffer *res)
|
||||
|
||||
void http_adjust_conn_mode(struct stream *s, struct http_txn *txn, struct http_msg *msg)
|
||||
{
|
||||
struct proxy *fe = strm_sess(s)->fe;
|
||||
struct proxy *fe = strm_fe(s);
|
||||
int tmp = TX_CON_WANT_KAL;
|
||||
|
||||
if (!((fe->options2|s->be->options2) & PR_O2_FAKE_KA)) {
|
||||
@ -4907,7 +4907,7 @@ int http_send_name_header(struct http_txn *txn, struct proxy* be, const char* sr
|
||||
void http_end_txn_clean_session(struct stream *s)
|
||||
{
|
||||
int prev_status = s->txn->status;
|
||||
struct proxy *fe = strm_sess(s)->fe;
|
||||
struct proxy *fe = strm_fe(s);
|
||||
|
||||
/* FIXME: We need a more portable way of releasing a backend's and a
|
||||
* server's connections. We need a safer way to reinitialize buffer
|
||||
@ -5062,7 +5062,7 @@ void http_end_txn_clean_session(struct stream *s)
|
||||
/* we're in keep-alive with an idle connection, monitor it */
|
||||
si_idle_conn(&s->si[1]);
|
||||
|
||||
s->req.analysers = strm_sess(s)->listener->analysers;
|
||||
s->req.analysers = strm_li(s)->analysers;
|
||||
s->res.analysers = 0;
|
||||
}
|
||||
|
||||
@ -6988,7 +6988,7 @@ int apply_filter_to_req_headers(struct stream *s, struct channel *req, struct hd
|
||||
* FIXME: should we return an HTTP/500 here so that
|
||||
* the admin knows there's a problem ?
|
||||
*/
|
||||
if (s->be != strm_sess(s)->fe)
|
||||
if (s->be != strm_fe(s))
|
||||
break;
|
||||
|
||||
/* Swithing Proxy */
|
||||
@ -7089,7 +7089,7 @@ int apply_filter_to_req_line(struct stream *s, struct channel *req, struct hdr_e
|
||||
* FIXME: should we return an HTTP/500 here so that
|
||||
* the admin knows there's a problem ?
|
||||
*/
|
||||
if (s->be != strm_sess(s)->fe)
|
||||
if (s->be != strm_fe(s))
|
||||
break;
|
||||
|
||||
/* Swithing Proxy */
|
||||
@ -8830,7 +8830,7 @@ struct http_txn *http_alloc_txn(struct stream *s)
|
||||
void http_init_txn(struct stream *s)
|
||||
{
|
||||
struct http_txn *txn = s->txn;
|
||||
struct proxy *fe = strm_sess(s)->fe;
|
||||
struct proxy *fe = strm_fe(s);
|
||||
|
||||
txn->flags = 0;
|
||||
txn->status = -1;
|
||||
@ -8872,7 +8872,7 @@ void http_init_txn(struct stream *s)
|
||||
void http_end_txn(struct stream *s)
|
||||
{
|
||||
struct http_txn *txn = s->txn;
|
||||
struct proxy *fe = strm_sess(s)->fe;
|
||||
struct proxy *fe = strm_fe(s);
|
||||
|
||||
/* release any possible compression context */
|
||||
if (s->flags & SF_COMP_READY)
|
||||
@ -8920,8 +8920,8 @@ void http_reset_txn(struct stream *s)
|
||||
*/
|
||||
s->current_rule_list = NULL;
|
||||
|
||||
s->be = strm_sess(s)->fe;
|
||||
s->logs.logwait = strm_sess(s)->fe->to_log;
|
||||
s->be = strm_fe(s);
|
||||
s->logs.logwait = strm_fe(s)->to_log;
|
||||
s->logs.level = 0;
|
||||
stream_del_srv_conn(s);
|
||||
s->target = NULL;
|
||||
@ -8944,11 +8944,11 @@ void http_reset_txn(struct stream *s)
|
||||
if (unlikely(s->res.buf->i))
|
||||
s->res.buf->i = 0;
|
||||
|
||||
s->req.rto = strm_sess(s)->fe->timeout.client;
|
||||
s->req.rto = strm_fe(s)->timeout.client;
|
||||
s->req.wto = TICK_ETERNITY;
|
||||
|
||||
s->res.rto = TICK_ETERNITY;
|
||||
s->res.wto = strm_sess(s)->fe->timeout.client;
|
||||
s->res.wto = strm_fe(s)->timeout.client;
|
||||
|
||||
s->req.rex = TICK_ETERNITY;
|
||||
s->req.wex = TICK_ETERNITY;
|
||||
@ -10887,7 +10887,7 @@ static int
|
||||
smp_fetch_capture_header_req(struct proxy *px, struct session *sess, struct stream *strm, unsigned int opt,
|
||||
const struct arg *args, struct sample *smp, const char *kw, void *private)
|
||||
{
|
||||
struct proxy *fe = strm_sess(strm)->fe;
|
||||
struct proxy *fe = strm_fe(strm);
|
||||
int idx;
|
||||
|
||||
if (!args || args->type != ARGT_UINT)
|
||||
@ -10913,7 +10913,7 @@ static int
|
||||
smp_fetch_capture_header_res(struct proxy *px, struct session *sess, struct stream *strm, unsigned int opt,
|
||||
const struct arg *args, struct sample *smp, const char *kw, void *private)
|
||||
{
|
||||
struct proxy *fe = strm_sess(strm)->fe;
|
||||
struct proxy *fe = strm_fe(strm);
|
||||
int idx;
|
||||
|
||||
if (!args || args->type != ARGT_UINT)
|
||||
|
@ -959,8 +959,8 @@ int stream_set_backend(struct stream *s, struct proxy *be)
|
||||
* have to re-adjust the desired keep-alive/close mode to accommodate
|
||||
* both the frontend's and the backend's modes.
|
||||
*/
|
||||
if (strm_sess(s)->fe->mode == PR_MODE_HTTP && be->mode == PR_MODE_HTTP &&
|
||||
((strm_sess(s)->fe->options & PR_O_HTTP_MODE) != (be->options & PR_O_HTTP_MODE)))
|
||||
if (strm_fe(s)->mode == PR_MODE_HTTP && be->mode == PR_MODE_HTTP &&
|
||||
((strm_fe(s)->options & PR_O_HTTP_MODE) != (be->options & PR_O_HTTP_MODE)))
|
||||
http_adjust_conn_mode(s, s->txn, &s->txn->req);
|
||||
|
||||
/* If an LB algorithm needs to access some pre-parsed body contents,
|
||||
@ -984,7 +984,7 @@ int stream_set_backend(struct stream *s, struct proxy *be)
|
||||
* be more reliable to store the list of analysers that have been run,
|
||||
* but what we do here is OK for now.
|
||||
*/
|
||||
s->req.analysers |= be->be_req_ana & ~strm_sess(s)->listener->analysers;
|
||||
s->req.analysers |= be->be_req_ana & ~strm_li(s)->analysers;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
10
src/stream.c
10
src/stream.c
@ -1062,7 +1062,7 @@ static void sess_establish(struct stream *s)
|
||||
if (s->be->mode == PR_MODE_TCP) { /* let's allow immediate data connection in this case */
|
||||
/* if the user wants to log as soon as possible, without counting
|
||||
* bytes from the server, then this is the right moment. */
|
||||
if (!LIST_ISEMPTY(&strm_sess(s)->fe->logformat) && !(s->logs.logwait & LW_BYTES)) {
|
||||
if (!LIST_ISEMPTY(&strm_fe(s)->logformat) && !(s->logs.logwait & LW_BYTES)) {
|
||||
s->logs.t_close = s->logs.t_connect; /* to get a valid end date */
|
||||
s->do_log(s);
|
||||
}
|
||||
@ -1071,7 +1071,7 @@ static void sess_establish(struct stream *s)
|
||||
rep->flags |= CF_READ_DONTWAIT; /* a single read is enough to get response headers */
|
||||
}
|
||||
|
||||
rep->analysers |= strm_sess(s)->fe->fe_rsp_ana | s->be->be_rsp_ana;
|
||||
rep->analysers |= strm_fe(s)->fe_rsp_ana | s->be->be_rsp_ana;
|
||||
rep->flags |= CF_READ_ATTACHED; /* producer is now attached */
|
||||
if (req->flags & CF_WAKE_CONNECT) {
|
||||
req->flags |= CF_WAKE_ONCE;
|
||||
@ -1264,9 +1264,9 @@ static void sess_set_term_flags(struct stream *s)
|
||||
if (!(s->flags & SF_FINST_MASK)) {
|
||||
if (s->si[1].state < SI_ST_REQ) {
|
||||
|
||||
strm_sess(s)->fe->fe_counters.failed_req++;
|
||||
if (strm_sess(s)->listener->counters)
|
||||
strm_sess(s)->listener->counters->failed_req++;
|
||||
strm_fe(s)->fe_counters.failed_req++;
|
||||
if (strm_li(s)->counters)
|
||||
strm_li(s)->counters->failed_req++;
|
||||
|
||||
s->flags |= SF_FINST_R;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user