Skip to content

Commit b2c600d

Browse files
committed
Also relax reentrant assertion in QuicStreamIndicateEvent for custom executions
1 parent 07a6866 commit b2c600d

File tree

2 files changed

+8
-5
lines changed

2 files changed

+8
-5
lines changed

src/core/connection.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -692,9 +692,9 @@ QuicConnIndicateEvent(
692692
// MsQuic shouldn't indicate reentrancy to the app when at all possible.
693693
// The general exception to this rule is when the connection is being
694694
// closed because the API MUST block until all work is completed, so we
695-
// have to execute the event callbacks inline. Custom executions also
696-
// allow reentrancy because set/get param must be executed inline to not
697-
// block the thread, and the app is expected to handle reentrancy.
695+
// have to execute the event callbacks inline. Custom executions always
696+
// have InlineApiExecution set, which makes this reentrancy check
697+
// unreliable, so it is skipped for custom executions.
698698
//
699699
CXPLAT_DBG_ASSERT(
700700
!Connection->State.InlineApiExecution ||

src/core/stream.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -470,13 +470,16 @@ QuicStreamIndicateEvent(
470470
// or stream is being closed because the API MUST block until all work
471471
// is completed, so we have to execute the event callbacks inline. There
472472
// is also one additional exception for start complete when StreamStart
473-
// is called synchronously on an MsQuic thread.
473+
// is called synchronously on an MsQuic thread. Custom executions
474+
// always have InlineApiExecution set, which makes this reentrancy
475+
// check unreliable, so it is skipped for custom executions.
474476
//
475477
CXPLAT_DBG_ASSERT(
476478
!Stream->Connection->State.InlineApiExecution ||
477479
Stream->Connection->State.HandleClosed ||
478480
Stream->Flags.HandleClosed ||
479-
Event->Type == QUIC_STREAM_EVENT_START_COMPLETE);
481+
Event->Type == QUIC_STREAM_EVENT_START_COMPLETE ||
482+
MsQuicLib.CustomExecutions);
480483
Status =
481484
Stream->ClientCallbackHandler(
482485
(HQUIC)Stream,

0 commit comments

Comments
 (0)