unsigned int flags; /* CS_FL_* */
unsigned int hcto; /* half-closed timeout (0 = unset) */
struct wait_event wait_event; /* We're in a wait list */
- struct sedesc *endp; /* points to the end point (MUX stream or appctx) */
+ struct sedesc *sedesc; /* points to the stream endpoint descriptor */
enum obj_type *app; /* points to the applicative point (stream or check) */
const struct data_cb *data_cb; /* data layer callbacks. Must be set before xprt->init() */
struct cs_app_ops *ops; /* general operations used at the app layer */
/* stream connector version */
static forceinline void sc_ep_zero(struct conn_stream *sc)
{
- se_fl_zero(sc->endp);
+ se_fl_zero(sc->sedesc);
}
static forceinline void sc_ep_setall(struct conn_stream *sc, uint all)
{
- se_fl_setall(sc->endp, all);
+ se_fl_setall(sc->sedesc, all);
}
static forceinline void sc_ep_set(struct conn_stream *sc, uint on)
{
- se_fl_set(sc->endp, on);
+ se_fl_set(sc->sedesc, on);
}
static forceinline void sc_ep_clr(struct conn_stream *sc, uint off)
{
- se_fl_clr(sc->endp, off);
+ se_fl_clr(sc->sedesc, off);
}
static forceinline uint sc_ep_test(const struct conn_stream *sc, uint test)
{
- return se_fl_test(sc->endp, test);
+ return se_fl_test(sc->sedesc, test);
}
static forceinline uint sc_ep_get(const struct conn_stream *sc)
{
- return se_fl_get(sc->endp);
+ return se_fl_get(sc->sedesc);
}
/* Returns the endpoint target without any control */
static inline void *__cs_endp_target(const struct conn_stream *cs)
{
- return cs->endp->se;
+ return cs->sedesc->se;
}
/* Returns the connection from a cs if the endpoint is a mux stream. Otherwise
*/
static inline struct connection *__cs_conn(const struct conn_stream *cs)
{
- return cs->endp->conn;
+ return cs->sedesc->conn;
}
static inline struct connection *cs_conn(const struct conn_stream *cs)
{
}
if (avail >= 1) {
- if (srv_conn->mux->attach(srv_conn, s->csb->endp, s->sess) == -1) {
+ if (srv_conn->mux->attach(srv_conn, s->csb->sedesc, s->sess) == -1) {
srv_conn = NULL;
if (cs_reset_endp(s->csb) < 0)
return SF_ERR_INTERNAL;
s->srv_error(s, s->csb);
return 1;
}
- se_fl_clr(s->csb->endp, ~SE_FL_DETACHED);
+ se_fl_clr(s->csb->sedesc, ~SE_FL_DETACHED);
}
sockaddr_free(&s->csb->dst);
if (unlikely(!sedesc))
goto alloc_error;
}
- cs->endp = sedesc;
+ cs->sedesc = sedesc;
sedesc->cs = cs;
return cs;
{
sockaddr_free(&cs->src);
sockaddr_free(&cs->dst);
- if (cs->endp) {
+ if (cs->sedesc) {
BUG_ON(!sc_ep_test(cs, SE_FL_DETACHED));
- sedesc_free(cs->endp);
+ sedesc_free(cs->sedesc);
}
if (cs->wait_event.tasklet)
tasklet_free(cs->wait_event.tasklet);
{
struct conn_stream *cs = *csp;
- if (!cs->app && (!cs->endp || sc_ep_test(cs, SE_FL_DETACHED))) {
+ if (!cs->app && (!cs->sedesc || sc_ep_test(cs, SE_FL_DETACHED))) {
cs_free(cs);
*csp = NULL;
}
int cs_attach_mux(struct conn_stream *cs, void *endp, void *ctx)
{
struct connection *conn = ctx;
+ struct sedesc *sedesc = cs->sedesc;
- cs->endp->se = endp;
- cs->endp->conn = ctx;
- sc_ep_set(cs, SE_FL_T_MUX);
- sc_ep_clr(cs, SE_FL_DETACHED);
+ sedesc->se = endp;
+ sedesc->conn = ctx;
+ se_fl_set(sedesc, SE_FL_T_MUX);
+ se_fl_clr(sedesc, SE_FL_DETACHED);
if (!conn->ctx)
conn->ctx = cs;
if (cs_strm(cs)) {
*/
static void cs_attach_applet(struct conn_stream *cs, void *endp)
{
- cs->endp->se = endp;
+ cs->sedesc->se = endp;
sc_ep_set(cs, SE_FL_T_APPLET);
sc_ep_clr(cs, SE_FL_DETACHED);
if (cs_strm(cs)) {
if (!cs)
return;
- if (!cs->endp)
+ if (!cs->sedesc)
goto reset_cs;
if (sc_ep_test(cs, SE_FL_T_MUX)) {
struct connection *conn = __cs_conn(cs);
- struct sedesc *endp = cs->endp;
+ struct sedesc *sedesc = cs->sedesc;
if (conn->mux) {
if (cs->wait_event.events != 0)
conn->mux->unsubscribe(cs, cs->wait_event.events, &cs->wait_event);
- se_fl_set(endp, SE_FL_ORPHAN);
- endp->cs = NULL;
- cs->endp = NULL;
- conn->mux->detach(endp);
+ se_fl_set(sedesc, SE_FL_ORPHAN);
+ sedesc->cs = NULL;
+ cs->sedesc = NULL;
+ conn->mux->detach(sedesc);
}
else {
/* It's too early to have a mux, let's just destroy
struct appctx *appctx = __cs_appctx(cs);
sc_ep_set(cs, SE_FL_ORPHAN);
- cs->endp->cs = NULL;
- cs->endp = NULL;
+ cs->sedesc->cs = NULL;
+ cs->sedesc = NULL;
appctx_shut(appctx);
appctx_free(appctx);
}
- if (cs->endp) {
+ if (cs->sedesc) {
/* the cs is the only one one the endpoint */
- cs->endp->se = NULL;
- cs->endp->conn = NULL;
+ cs->sedesc->se = NULL;
+ cs->sedesc->conn = NULL;
sc_ep_clr(cs, ~SE_FL_APP_MASK);
sc_ep_set(cs, SE_FL_DETACHED);
}
/* The app is still attached, the cs will not be released */
cs_detach_endp(&cs);
- BUG_ON(cs->endp);
- cs->endp = new_endp;
- cs->endp->cs = cs;
+ BUG_ON(cs->sedesc);
+ cs->sedesc = new_endp;
+ cs->sedesc->cs = cs;
sc_ep_set(cs, SE_FL_DETACHED);
return 0;
}
DPRINTF(stderr, "registering handler %p for cs %p (was %p)\n", app, cs, cs_strm_task(cs));
- appctx = appctx_new_here(app, cs->endp);
+ appctx = appctx_new_here(app, cs->sedesc);
if (!appctx)
return NULL;
cs_attach_applet(cs, appctx);
}
if (cs_attach_mux(cs, fstrm, fconn->conn) < 0)
goto out;
- fstrm->endp = cs->endp;
+ fstrm->endp = cs->sedesc;
fstrm->sess = sess;
fconn->nb_cs++;
if (cs) {
if (cs_attach_mux(cs, h1s, h1c->conn) < 0)
goto fail;
- h1s->endp = cs->endp;
+ h1s->endp = cs->sedesc;
}
else {
h1s->endp = sedesc_new();
goto fail;
h1s->flags |= H1S_F_RX_BLK;
- h1s->endp = cs->endp;
+ h1s->endp = cs->sedesc;
h1s->sess = sess;
h1c->flags = (h1c->flags & ~H1C_F_ST_EMBRYONIC) | H1C_F_ST_ATTACHED | H1C_F_ST_READY;
h2s = NULL;
goto out;
}
- h2s->endp = cs->endp;
+ h2s->endp = cs->sedesc;
h2s->sess = sess;
h2c->nb_cs++;
else {
if (cs_attach_mux(cs, ctx, conn) < 0)
goto fail_free_ctx;
- ctx->endp = cs->endp;
+ ctx->endp = cs->sedesc;
}
conn->ctx = ctx;
se_fl_set(ctx->endp, SE_FL_RCV_MORE);
chunk_appendf(&trash, " csf=%p flags=0x%08x state=%s endp=%s,%p,0x%08x sub=%d\n",
csf, csf->flags, cs_state_str(csf->state),
(sc_ep_test(csf, SE_FL_T_MUX) ? "CONN" : (sc_ep_test(csf, SE_FL_T_APPLET) ? "APPCTX" : "NONE")),
- csf->endp->se, sc_ep_get(csf), csf->wait_event.events);
+ csf->sedesc->se, sc_ep_get(csf), csf->wait_event.events);
if ((conn = cs_conn(csf)) != NULL) {
chunk_appendf(&trash,
chunk_appendf(&trash, " csb=%p flags=0x%08x state=%s endp=%s,%p,0x%08x sub=%d\n",
csb, csb->flags, cs_state_str(csb->state),
(sc_ep_test(csb, SE_FL_T_MUX) ? "CONN" : (sc_ep_test(csb, SE_FL_T_APPLET) ? "APPCTX" : "NONE")),
- csb->endp->se, sc_ep_get(csb), csb->wait_event.events);
+ csb->sedesc->se, sc_ep_get(csb), csb->wait_event.events);
if ((conn = cs_conn(csb)) != NULL) {
chunk_appendf(&trash,