Repository navigation
fix(dvc): allow channel listeners to serve a re-created channel - #2106
Open
YaoSiQian (YaoSiQian) wants to merge 1 commit into
Open
YaoSiQian (YaoSiQian) wants to merge 1 commit into
YaoSiQian (YaoSiQian) wants to merge 1 commit into
Conversation
Servers periodically close and re-create the same dynamic virtual channel (e.g. MS-RDPEDISP display control). A single-use listener turned the re-create into NO_LISTENER, permanently dropping the channel. Give DvcChannelListener a recycle hook that hands the processor of a closing channel back to its listener so a later CREATE can be served again. OnceListener re-arms when it has no processor; the default implementation keeps the previous drop-on-close behavior, and a recycled channel no longer double-notifies close on drop.
YaoSiQian (YaoSiQian)
force-pushed
the
fix/dvc-channel-recycle
branch
from
October 10, 2026 14:10
3f016dc to
ad3ce9c
Compare
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Servers periodically close and re-create the same dynamic virtual channel (e.g. MS-RDPEDISP display control). A single-use listener turned that re-create into NO_LISTENER, permanently dropping the channel.
Changes
DvcChannelListener::recyclehook hands the processor of a closing channel back to its listener so a later CREATE can be served again;OnceListenerre-arms when it has no processor, and the default keeps the previous drop-on-close behavior.DynamicVirtualChannelnow holds anOptionprocessor; a recycled channel no longer double-notifies close on drop.Testing
cargo checkacross the client, web, testsuite and example targets with zero warnings; exercised with servers that cycle the display control channel.