Since the following patch, streams wakeup mechanism has changed so that
every still present stream are notified regardless of the connection
status. This is useful when qcm_wake() callback is used. Along with this
change, qcc_wake_streams() via qcm_wake() is no longer directly called
if the connection is on error, as previous qcc_io_process() already
perform it.
044ad3a602d7b217ec1470f06ec15bca102ff685
BUG/MEDIUM: mux-quic: adjust wakeup behavior
This causes issue when qcm_wake() is used to notify about proxy
soft-stop. If listener socket is used, soft-stop is not really
supported, so connection is flagged with CO_FL_ERROR and
qcc_io_process() is interrupted. This skips stream notification, so they
will remain until their timeout fire, which may block worker termination
for some delay.
Fix this by ensuring qcc_wake_streams() is always called if connection
on error in qcc_io_process() epilogue.
This must be backported up to 2.8.
qcc_app_shutdown(qcc);
}
+ out:
/* Report error if set on stream endpoint layer. */
if (qcc->flags & (QC_CF_ERR_CONN|QC_CF_ERRL))
qcc_wake_streams(qcc);
- out:
if (qcc_is_dead(qcc))
return 1;