mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-22 22:31:28 +02:00
MEDIUM: session: prepare to support earlier transitions to the established state
At the moment it is possible in sess_prepare_conn_req() to switch to the established state when the target is an applet. But sess_update_stream_int() will soon also have the ability to set the established state via connect_server() when a connection is reused, leading to a synchronous connect. So prepare the code to handle this SI_ST_ASS -> SI_ST_EST transition, which really matches what's done in the lower layers.
This commit is contained in:
parent
0e37f1c40e
commit
b44c873d61
@ -2222,20 +2222,20 @@ struct task *process_session(struct task *t)
|
||||
*/
|
||||
if (s->si[1].state != SI_ST_REQ)
|
||||
sess_update_stream_int(s, &s->si[1]);
|
||||
if (s->si[1].state == SI_ST_REQ) {
|
||||
if (s->si[1].state == SI_ST_REQ)
|
||||
sess_prepare_conn_req(s, &s->si[1]);
|
||||
|
||||
/* applets directly go to the ESTABLISHED state */
|
||||
if (unlikely(s->si[1].state == SI_ST_EST))
|
||||
sess_establish(s, &s->si[1]);
|
||||
/* applets directly go to the ESTABLISHED state */
|
||||
if (unlikely(s->si[1].state == SI_ST_EST))
|
||||
sess_establish(s, &s->si[1]);
|
||||
|
||||
/* Now we can add the server name to a header (if requested) */
|
||||
/* check for HTTP mode and proxy server_name_hdr_name != NULL */
|
||||
if ((s->flags & SN_BE_ASSIGNED) &&
|
||||
(s->be->mode == PR_MODE_HTTP) &&
|
||||
(s->be->server_id_hdr_name != NULL && objt_server(s->target))) {
|
||||
http_send_name_header(&s->txn, s->be, objt_server(s->target)->id);
|
||||
}
|
||||
/* Now we can add the server name to a header (if requested) */
|
||||
/* check for HTTP mode and proxy server_name_hdr_name != NULL */
|
||||
if ((s->si[1].state >= SI_ST_CON) &&
|
||||
(s->be->server_id_hdr_name != NULL) &&
|
||||
(s->be->mode == PR_MODE_HTTP) &&
|
||||
objt_server(s->target)) {
|
||||
http_send_name_header(&s->txn, s->be, objt_server(s->target)->id);
|
||||
}
|
||||
|
||||
srv = objt_server(s->target);
|
||||
|
Loading…
x
Reference in New Issue
Block a user