qcs->subs = NULL;
LIST_INIT(&qcs->list);
- eb64_insert(&qcc->streams_by_id, &qcs->by_id);
+ // TODO do not insert luqs into streams_by_id as it prevent to detect
+ // that the connection is dead
+ //eb64_insert(&qcc->streams_by_id, &qcs->by_id);
TRACE_LEAVE(QC_EV_QCS_NEW, qcc->conn);
return qcs;
qcs->subs = NULL;
LIST_INIT(&qcs->list);
- eb64_insert(&qcc->streams_by_id, &qcs->by_id);
+ // TODO do not insert ruqs into streams_by_id as it prevent to detect
+ // that the connection is dead
+ //eb64_insert(&qcc->streams_by_id, &qcs->by_id);
TRACE_LEAVE(QC_EV_QCS_NEW, qcc->conn);
return qcs;
static void qc_detach(struct conn_stream *cs)
{
struct qcs *qcs = cs->ctx;
+ struct qcc *qcc = qcs->qcc;
TRACE_ENTER(QC_EV_STRM_END, qcs ? qcs->qcc->conn : NULL, qcs);
- /* XXX TO DO XXX */
+ qcs_destroy(qcs);
+ if (eb_is_empty(&qcc->streams_by_id))
+ qc_release(qcc);
TRACE_LEAVE(QC_EV_STRM_END, qcs ? qcs->qcc->conn : NULL);
}