A segfault happens when receiving a CONNECTION_CLOSE during handshake.
This is because the mux is not initialized at this stage but the
transport layer dereferences it.
Fix this by ensuring that the MUX is initialized before. Thanks to Willy
for his help on this one. Welcome in the QUIC-men team !
case QUIC_FT_CONNECTION_CLOSE:
case QUIC_FT_CONNECTION_CLOSE_APP:
/* warn the mux to close the connection */
- if (qc->mux_state == QC_MUX_READY)
+ if (qc->mux_state == QC_MUX_READY) {
qc->qcc->flags |= QC_CF_CC_RECV;
- tasklet_wakeup(qc->qcc->wait_event.tasklet);
+ tasklet_wakeup(qc->qcc->wait_event.tasklet);
+ }
break;
case QUIC_FT_HANDSHAKE_DONE:
if (qc_is_listener(ctx->qc))