Tracking further investigation for this hang in Windows 10 Version 1703 but not vNext.
This is most likely related to the Windows vNext enhancements for WebSocket buffer management.
/cc @Diego-Perez-Botero
This issue is actually dup of dotnet/runtime#22692.
When endOfMessage == false, the expected behavior is hanging on UWP.
@Diego-Perez-Botero @davidsh
This issue is actually dup of dotnet/runtime#22692.
@caesar1995 this works fine on vNext but fails on Windows 10 Version 1703. Any ideas why?
I will test on my Windows vNext dev box.
I can confirm the test passed on my Windows vNext dev box.
I think the reason is here: here
dotnet/runtime#22311 improved the receive path of partial messages in UWP, but the existing WinRT APIs still lack partial message support in the send path.
@Diego-Perez-Botero could you please confirm?
@caesar1995 in that case, we probably need to do an OS version check similar to what @Diego-Perez-Botero did in the client ws tests.
Caesar is right. This hang doesn't happen in Insider Preview because of my dotnet/runtime#22311 fix. If you look at the test case's code, this one is trying to receive a partial message (endOfMessage==false) in some _InlineData_ combinations. The receive is carried out using a ClientWebSocket object, so that will only work post-#21102 in Insider Preview machines.
I think that this issue can be closed by adding the OS version check suggested by @CIPop.
@caesar1995 there should be a PartialMessagesSupported ConditionalTheory clause like the one used in SendReceiveTests,cs.
@CIPop do you want to add the ConditionalTheory in dotnet/corefx#22114? Or I can do that after the PR is merged, to avoid conflict.
@CIPop do you want to add the ConditionalTheory in dotnet/corefx#22114? Or I can do that after the PR is merged, to avoid conflict.
I've just merged that. Feel free to add the condition.
It's best if we could add it to the common/test folder since it's going to be shared between WS and HttpListener.
Sure, I will look into this.
Most helpful comment
@caesar1995 there should be a PartialMessagesSupported ConditionalTheory clause like the one used in SendReceiveTests,cs.