mirror of
https://gitea.invidious.io/iv-org/litespeed-quic.git
synced 2024-08-15 00:53:43 +00:00
Fix: when stream is reset, it is writeable -- let user collect the error
This commit is contained in:
parent
d91deca498
commit
77cf229599
1 changed files with 18 additions and 2 deletions
|
@ -751,6 +751,22 @@ lsquic_stream_readable (struct lsquic_stream *stream)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int
|
||||||
|
stream_writeable (struct lsquic_stream *stream)
|
||||||
|
{
|
||||||
|
/* A stream is writeable if one of the following is true: */
|
||||||
|
return
|
||||||
|
/* - The stream is reset, by either side. In this case,
|
||||||
|
* lsquic_stream_write() will return -1 (we want the user to be
|
||||||
|
* able to collect the error).
|
||||||
|
*/
|
||||||
|
lsquic_stream_is_reset(stream)
|
||||||
|
/* - Data can be written to stream: */
|
||||||
|
|| lsquic_stream_write_avail(stream)
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static size_t
|
static size_t
|
||||||
stream_write_avail_no_frames (struct lsquic_stream *stream)
|
stream_write_avail_no_frames (struct lsquic_stream *stream)
|
||||||
{
|
{
|
||||||
|
@ -2002,7 +2018,7 @@ stream_dispatch_write_events_loop (lsquic_stream_t *stream)
|
||||||
stream->stream_flags |= STREAM_LAST_WRITE_OK;
|
stream->stream_flags |= STREAM_LAST_WRITE_OK;
|
||||||
while ((stream->sm_qflags & SMQF_WANT_WRITE)
|
while ((stream->sm_qflags & SMQF_WANT_WRITE)
|
||||||
&& (stream->stream_flags & STREAM_LAST_WRITE_OK)
|
&& (stream->stream_flags & STREAM_LAST_WRITE_OK)
|
||||||
&& lsquic_stream_write_avail(stream))
|
&& stream_writeable(stream))
|
||||||
{
|
{
|
||||||
progress = stream_progress(stream);
|
progress = stream_progress(stream);
|
||||||
|
|
||||||
|
@ -2121,7 +2137,7 @@ lsquic_stream_dispatch_write_events (lsquic_stream_t *stream)
|
||||||
if (stream->sm_bflags & SMBF_RW_ONCE)
|
if (stream->sm_bflags & SMBF_RW_ONCE)
|
||||||
{
|
{
|
||||||
if ((stream->sm_qflags & SMQF_WANT_WRITE)
|
if ((stream->sm_qflags & SMQF_WANT_WRITE)
|
||||||
&& lsquic_stream_write_avail(stream))
|
&& stream_writeable(stream))
|
||||||
{
|
{
|
||||||
on_write = select_on_write(stream);
|
on_write = select_on_write(stream);
|
||||||
on_write(stream, stream->st_ctx);
|
on_write(stream, stream->st_ctx);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue