MINOR: conn-stream: Release a CS when both app and endp are detached

cs_detach_app() function is added to detach an app from a conn-stream. And
now, both cs_detach_app() and cs_detach_endp() release the conn-stream when
both the app and the endpoint are detached.
This commit is contained in:
Christopher Faulet 2022-01-06 08:44:58 +01:00
parent 014ac35eb2
commit c36de9dc93
2 changed files with 18 additions and 1 deletions

View File

@ -39,6 +39,7 @@ void cs_free(struct conn_stream *cs);
void cs_attach_endp(struct conn_stream *cs, enum obj_type *endp, void *ctx);
int cs_attach_app(struct conn_stream *cs, enum obj_type *app);
void cs_detach_endp(struct conn_stream *cs);
void cs_detach_app(struct conn_stream *cs);
/*
* Initializes all required fields for a new conn_strema.

View File

@ -133,11 +133,27 @@ void cs_detach_endp(struct conn_stream *cs)
appctx_free(appctx);
}
/* Rest CS */
/* FIXME: Rest CS for now but must be reviewed. CS flags are only
* connection related for now but this will evolved
*/
cs->flags = CS_FL_NONE;
cs->end = NULL;
cs->ctx = NULL;
if (cs->si)
cs->si->ops = &si_embedded_ops;
cs->data_cb = NULL;
if (cs->app == NULL)
cs_free(cs);
}
void cs_detach_app(struct conn_stream *cs)
{
si_free(cs->si);
cs->app = NULL;
cs->si = NULL;
cs->data_cb = NULL;
if (cs->end == NULL)
cs_free(cs);
}