MEDIUM: stream: also accept appctx as origin in stream_accept_session()

It's likely that the code could be simplified a bit though.
This commit is contained in:
Willy Tarreau 2015-04-05 01:33:13 +02:00
parent f2b9874bcf
commit 470280ef63

View File

@ -70,6 +70,7 @@ int stream_accept_session(struct session *sess, struct task *t)
struct listener *l = sess->listener; struct listener *l = sess->listener;
struct proxy *p = sess->fe; struct proxy *p = sess->fe;
struct connection *conn = objt_conn(sess->origin); struct connection *conn = objt_conn(sess->origin);
struct appctx *appctx = objt_appctx(sess->origin);
int ret; int ret;
int i; int i;
@ -153,6 +154,8 @@ int stream_accept_session(struct session *sess, struct task *t)
/* attach the incoming connection to the stream interface now. */ /* attach the incoming connection to the stream interface now. */
if (conn) if (conn)
si_attach_conn(&s->si[0], conn); si_attach_conn(&s->si[0], conn);
else if (appctx)
si_attach_appctx(&s->si[0], appctx);
if (likely(sess->fe->options2 & PR_O2_INDEPSTR)) if (likely(sess->fe->options2 & PR_O2_INDEPSTR))
s->si[0].flags |= SI_FL_INDEP_STR; s->si[0].flags |= SI_FL_INDEP_STR;
@ -207,6 +210,8 @@ int stream_accept_session(struct session *sess, struct task *t)
/* finish initialization of the accepted file descriptor */ /* finish initialization of the accepted file descriptor */
if (conn) if (conn)
conn_data_want_recv(conn); conn_data_want_recv(conn);
else if (appctx)
s->si[0].flags |= SI_FL_WAIT_DATA;
/* FIXME: we shouldn't restrict ourselves to connections but for now /* FIXME: we shouldn't restrict ourselves to connections but for now
* the only ->accept() only works with sessions. * the only ->accept() only works with sessions.