mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-11-28 14:21:00 +01:00
MINOR: stream: pass the pointer to the origin explicitly to stream_new()
We don't pass sess->origin anymore but the pointer to the previous step. Now it should be much easier to chain elements together once applets are moved out of streams. Indeed, the session is only used for configuration and not for the dynamic chaining anymore.
This commit is contained in:
parent
678be62981
commit
73b65acd46
@ -36,7 +36,7 @@ extern struct list buffer_wq;
|
|||||||
|
|
||||||
extern struct data_cb sess_conn_cb;
|
extern struct data_cb sess_conn_cb;
|
||||||
|
|
||||||
struct stream *stream_new(struct session *sess, struct task *t);
|
struct stream *stream_new(struct session *sess, struct task *t, enum obj_type *origin);
|
||||||
|
|
||||||
/* perform minimal intializations, report 0 in case of error, 1 if OK. */
|
/* perform minimal intializations, report 0 in case of error, 1 if OK. */
|
||||||
int init_stream();
|
int init_stream();
|
||||||
|
|||||||
@ -2197,7 +2197,7 @@ __LJMP static int hlua_socket_new(lua_State *L)
|
|||||||
}
|
}
|
||||||
task->nice = 0;
|
task->nice = 0;
|
||||||
|
|
||||||
strm = stream_new(sess, task);
|
strm = stream_new(sess, task, &appctx->obj_type);
|
||||||
if (!strm) {
|
if (!strm) {
|
||||||
hlua_pusherror(L, "socket: out of memory");
|
hlua_pusherror(L, "socket: out of memory");
|
||||||
goto out_fail_stream;
|
goto out_fail_stream;
|
||||||
|
|||||||
@ -1140,7 +1140,7 @@ static struct stream *peer_session_create(struct peer *peer, struct peer_session
|
|||||||
}
|
}
|
||||||
t->nice = l->nice;
|
t->nice = l->nice;
|
||||||
|
|
||||||
if ((s = stream_new(sess, t)) == NULL) {
|
if ((s = stream_new(sess, t, &appctx->obj_type)) == NULL) {
|
||||||
Alert("Failed to initialize stream in peer_session_create().\n");
|
Alert("Failed to initialize stream in peer_session_create().\n");
|
||||||
goto out_free_task;
|
goto out_free_task;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -259,7 +259,7 @@ int session_accept_fd(struct listener *l, int cfd, struct sockaddr_storage *addr
|
|||||||
cli_conn->flags |= CO_FL_XPRT_TRACKED;
|
cli_conn->flags |= CO_FL_XPRT_TRACKED;
|
||||||
|
|
||||||
session_count_new(sess);
|
session_count_new(sess);
|
||||||
strm = stream_new(sess, t);
|
strm = stream_new(sess, t, &cli_conn->obj_type);
|
||||||
if (!strm)
|
if (!strm)
|
||||||
goto out_free_task;
|
goto out_free_task;
|
||||||
|
|
||||||
@ -424,7 +424,7 @@ static int conn_complete_session(struct connection *conn)
|
|||||||
|
|
||||||
session_count_new(sess);
|
session_count_new(sess);
|
||||||
task->process = sess->listener->handler;
|
task->process = sess->listener->handler;
|
||||||
strm = stream_new(sess, task);
|
strm = stream_new(sess, task, &conn->obj_type);
|
||||||
if (!strm)
|
if (!strm)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
|
|||||||
18
src/stream.c
18
src/stream.c
@ -57,18 +57,18 @@ struct list streams;
|
|||||||
struct list buffer_wq = LIST_HEAD_INIT(buffer_wq);
|
struct list buffer_wq = LIST_HEAD_INIT(buffer_wq);
|
||||||
|
|
||||||
/* This function is called from the session handler which detects the end of
|
/* This function is called from the session handler which detects the end of
|
||||||
* handshake, in order to complete initialization of a valid stream. It must
|
* handshake, in order to complete initialization of a valid stream. It must be
|
||||||
* be called with an embryonic session. It returns the pointer to the newly
|
* called with a session (which may be embryonic). It returns the pointer to
|
||||||
* created stream, or NULL in case of fatal error. For now the client-side
|
* the newly created stream, or NULL in case of fatal error. The client-facing
|
||||||
* end point is taken from the session's origin, which must be valid.
|
* end point is assigned to <origin>, which must be valid. The task's context
|
||||||
* The task's context is set to the new stream, and its function is set to
|
* is set to the new stream, and its function is set to process_stream().
|
||||||
* process_stream(). Target and analysers are null.
|
* Target and analysers are null.
|
||||||
*/
|
*/
|
||||||
struct stream *stream_new(struct session *sess, struct task *t)
|
struct stream *stream_new(struct session *sess, struct task *t, enum obj_type *origin)
|
||||||
{
|
{
|
||||||
struct stream *s;
|
struct stream *s;
|
||||||
struct connection *conn = objt_conn(sess->origin);
|
struct connection *conn = objt_conn(origin);
|
||||||
struct appctx *appctx = objt_appctx(sess->origin);
|
struct appctx *appctx = objt_appctx(origin);
|
||||||
|
|
||||||
if (unlikely((s = pool_alloc2(pool2_stream)) == NULL))
|
if (unlikely((s = pool_alloc2(pool2_stream)) == NULL))
|
||||||
return s;
|
return s;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user