mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-02-20 12:46:56 +00:00
MINOR: conn-stream: Add flags to set the type of the endpoint
This patch is mandatory to invert the endpoint and the context in the conn-stream. There is no common type (at least for now) for the entity representing a mux (h1s, h2s...), thus we must set its type when the endpoint is attached to a conn-stream. There is 2 types for the conn-stream endpoints: the mux (CS_FL_ENDP_MUX) and the applet (CS_FL_ENDP_APP).
This commit is contained in:
parent
4aa1d2838c
commit
81a40f630e
@ -184,6 +184,8 @@ void show_cs_flags(unsigned int f)
|
|||||||
printf("0\n");
|
printf("0\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
SHOW_FLAG(f, CS_FL_ENDP_APP);
|
||||||
|
SHOW_FLAG(f, CS_FL_ENDP_MUX);
|
||||||
SHOW_FLAG(f, CS_FL_WEBSOCKET);
|
SHOW_FLAG(f, CS_FL_WEBSOCKET);
|
||||||
SHOW_FLAG(f, CS_FL_NOT_FIRST);
|
SHOW_FLAG(f, CS_FL_NOT_FIRST);
|
||||||
SHOW_FLAG(f, CS_FL_KILL_CONN);
|
SHOW_FLAG(f, CS_FL_KILL_CONN);
|
||||||
|
@ -57,6 +57,9 @@ enum {
|
|||||||
|
|
||||||
/* flags set by the mux relayed to the stream */
|
/* flags set by the mux relayed to the stream */
|
||||||
CS_FL_WEBSOCKET = 0x00200000, /* websocket stream */
|
CS_FL_WEBSOCKET = 0x00200000, /* websocket stream */
|
||||||
|
|
||||||
|
CS_FL_ENDP_MUX = 0x00400000, /* Endpoint is a mux */
|
||||||
|
CS_FL_ENDP_APP = 0x00800000, /* Endpoint is an applet */
|
||||||
};
|
};
|
||||||
|
|
||||||
/* cs_shutr() modes */
|
/* cs_shutr() modes */
|
||||||
|
@ -65,7 +65,7 @@ static inline struct connection *__cs_conn(const struct conn_stream *cs)
|
|||||||
}
|
}
|
||||||
static inline struct connection *cs_conn(const struct conn_stream *cs)
|
static inline struct connection *cs_conn(const struct conn_stream *cs)
|
||||||
{
|
{
|
||||||
if (obj_type(cs->end) == OBJ_TYPE_CONN)
|
if (cs->flags & CS_FL_ENDP_MUX)
|
||||||
return __cs_conn(cs);
|
return __cs_conn(cs);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -90,7 +90,7 @@ static inline struct appctx *__cs_appctx(const struct conn_stream *cs)
|
|||||||
}
|
}
|
||||||
static inline struct appctx *cs_appctx(const struct conn_stream *cs)
|
static inline struct appctx *cs_appctx(const struct conn_stream *cs)
|
||||||
{
|
{
|
||||||
if (obj_type(cs->end) == OBJ_TYPE_APPCTX)
|
if (cs->flags & CS_FL_ENDP_APP)
|
||||||
return __cs_appctx(cs);
|
return __cs_appctx(cs);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -60,6 +60,7 @@ void cs_attach_endp(struct conn_stream *cs, enum obj_type *endp, void *ctx)
|
|||||||
}
|
}
|
||||||
else if (cs_check(cs))
|
else if (cs_check(cs))
|
||||||
cs->data_cb = &check_conn_cb;
|
cs->data_cb = &check_conn_cb;
|
||||||
|
cs->flags |= CS_FL_ENDP_MUX;
|
||||||
}
|
}
|
||||||
else if ((appctx = objt_appctx(endp)) != NULL) {
|
else if ((appctx = objt_appctx(endp)) != NULL) {
|
||||||
appctx->owner = cs;
|
appctx->owner = cs;
|
||||||
@ -67,6 +68,7 @@ void cs_attach_endp(struct conn_stream *cs, enum obj_type *endp, void *ctx)
|
|||||||
cs->si->ops = &si_applet_ops;
|
cs->si->ops = &si_applet_ops;
|
||||||
cs->data_cb = NULL;
|
cs->data_cb = NULL;
|
||||||
}
|
}
|
||||||
|
cs->flags |= CS_FL_ENDP_APP;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user