Skip to content

feat(dvc): close channel API for server and client#1302

Draft
uchouT (uchouT) wants to merge 2 commits into
Devolutions:masterfrom
uchouT:dvc-close
Draft

feat(dvc): close channel API for server and client#1302
uchouT (uchouT) wants to merge 2 commits into
Devolutions:masterfrom
uchouT:dvc-close

Conversation

@uchouT
Copy link
Copy Markdown
Contributor

Summary

  1. Align with MS-RDPEDYC 3.2.5.2 spec:

If the client receives a DYNVC_CLOSE (section 2.2.4) PDU for a channel that is not in the list of active ChannelIds, the client MUST ignore the PDU and SHOULD NOT respond with a DYNVC_CLOSE (section 2.2.4) PDU.

  1. Add close_channel API for both DrdynvcServer and DrdynvcClient. According to the spec, both the server and client can initiate a close channel request.

Quesions

The server-side close_channel is not implemented yet.

  1. A server-initiated DYNVC_CLOSE may receive a response from the client. Should the server perform the local channel teardown when sending the request, or only after the client's response arrives?

  2. When the server currently handles an incoming ClosePdu, it just marks ChannelState::Closed. Should it instead remove the DVC instance entirely?

MS-RDPEDYC 3.2.5.2:

> A channel can be closed by either a DVC client manager or a DVC server
> manager. A DYNVC_CLOSE (section 2.2.4) PDU is used for both a close
> request and a close response.

DYNVC_CLOSE is a symmetric PDU.

> If the client receives a DYNVC_CLOSE (section 2.2.4) PDU for a channel
> that is not in the list of active ChannelIds, the client MUST ignore the
> PDU and SHOULD NOT respond with a DYNVC_CLOSE (section 2.2.4) PDU.

Currently the client always responds with a DYNVC_CLOSE

Signed-off-by: uchouT <i@uchout.moe>
Signed-off-by: uchouT <i@uchout.moe>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant