Skip to content

Commit a7425ea

Browse files
committed
Deadlock in WsSession/WebSocket #205
1 parent 76383b1 commit a7425ea

19 files changed

+62
-66
lines changed

source/NetCoreServer/NetCoreServer.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<TargetFramework>net6.0</TargetFramework>
5-
<Version>6.2.0.0</Version>
5+
<Version>6.3.0.0</Version>
66
<Authors>Ivan Shynkarenka</Authors>
77
<Copyright>Copyright (c) 2019-2022 Ivan Shynkarenka</Copyright>
88
<RepositoryUrl>https://github.com/chronoxor/NetCoreServer</RepositoryUrl>

source/NetCoreServer/WebSocket.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -509,6 +509,12 @@ public int RequiredReceiveFrameSize()
509509
/// </summary>
510510
public void ClearWsBuffers()
511511
{
512+
lock (WsSendLock)
513+
{
514+
WsSendBuffer.Clear();
515+
Array.Clear(WsSendMask, 0, WsSendMask.Length);
516+
}
517+
512518
lock (WsReceiveLock)
513519
{
514520
WsFrameReceived = false;
@@ -519,12 +525,6 @@ public void ClearWsBuffers()
519525
WsReceiveFinalBuffer.Clear();
520526
Array.Clear(WsReceiveMask, 0, WsReceiveMask.Length);
521527
}
522-
523-
lock (WsSendLock)
524-
{
525-
WsSendBuffer.Clear();
526-
Array.Clear(WsSendMask, 0, WsSendMask.Length);
527-
}
528528
}
529529

530530
/// <summary>

tests/tests.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
</PropertyGroup>
77

88
<ItemGroup>
9-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
9+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.2.0" />
1010
<PackageReference Include="xunit" Version="2.4.1" />
11-
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
11+
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
1212
<PrivateAssets>all</PrivateAssets>
1313
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
1414
</PackageReference>

www/api/swagger/index.css

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
html {
2+
box-sizing: border-box;
3+
overflow: -moz-scrollbars-vertical;
4+
overflow-y: scroll;
5+
}
6+
7+
*,
8+
*:before,
9+
*:after {
10+
box-sizing: inherit;
11+
}
12+
13+
body {
14+
margin: 0;
15+
background: #fafafa;
16+
}

www/api/swagger/index.html

Lines changed: 2 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -5,56 +5,15 @@
55
<meta charset="UTF-8">
66
<title>Swagger UI</title>
77
<link rel="stylesheet" type="text/css" href="./swagger-ui.css" />
8+
<link rel="stylesheet" type="text/css" href="index.css" />
89
<link rel="icon" type="image/png" href="./favicon-32x32.png" sizes="32x32" />
910
<link rel="icon" type="image/png" href="./favicon-16x16.png" sizes="16x16" />
10-
<style>
11-
html
12-
{
13-
box-sizing: border-box;
14-
overflow: -moz-scrollbars-vertical;
15-
overflow-y: scroll;
16-
}
17-
18-
*,
19-
*:before,
20-
*:after
21-
{
22-
box-sizing: inherit;
23-
}
24-
25-
body
26-
{
27-
margin:0;
28-
background: #fafafa;
29-
}
30-
</style>
3111
</head>
3212

3313
<body>
3414
<div id="swagger-ui"></div>
35-
3615
<script src="./swagger-ui-bundle.js" charset="UTF-8"> </script>
3716
<script src="./swagger-ui-standalone-preset.js" charset="UTF-8"> </script>
38-
<script>
39-
window.onload = function() {
40-
// Begin Swagger UI call region
41-
const ui = SwaggerUIBundle({
42-
url: "https://petstore.swagger.io/v2/swagger.json",
43-
dom_id: '#swagger-ui',
44-
deepLinking: true,
45-
presets: [
46-
SwaggerUIBundle.presets.apis,
47-
SwaggerUIStandalonePreset
48-
],
49-
plugins: [
50-
SwaggerUIBundle.plugins.DownloadUrl
51-
],
52-
layout: "StandaloneLayout"
53-
});
54-
// End Swagger UI call region
55-
56-
window.ui = ui;
57-
};
58-
</script>
17+
<script src="./swagger-initializer.js" charset="UTF-8"> </script>
5918
</body>
6019
</html>

www/api/swagger/oauth2-redirect.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
authId: oauth2.auth.name,
3939
source: "auth",
4040
level: "warning",
41-
message: "Authorization may be unsafe, passed state was changed in server Passed state wasn't returned from auth server"
41+
message: "Authorization may be unsafe, passed state was changed in server. The passed state wasn't returned from auth server."
4242
});
4343
}
4444

@@ -58,7 +58,7 @@
5858
authId: oauth2.auth.name,
5959
source: "auth",
6060
level: "error",
61-
message: oauthErrorMsg || "[Authorization failed]: no accessCode received from the server"
61+
message: oauthErrorMsg || "[Authorization failed]: no accessCode received from the server."
6262
});
6363
}
6464
} else {
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
window.onload = function() {
2+
//<editor-fold desc="Changeable Configuration Block">
3+
4+
// the following lines will be replaced by docker/configurator, when it runs in a docker-container
5+
window.ui = SwaggerUIBundle({
6+
url: "https://petstore.swagger.io/v2/swagger.json",
7+
dom_id: '#swagger-ui',
8+
deepLinking: true,
9+
presets: [
10+
SwaggerUIBundle.presets.apis,
11+
SwaggerUIStandalonePreset
12+
],
13+
plugins: [
14+
SwaggerUIBundle.plugins.DownloadUrl
15+
],
16+
layout: "StandaloneLayout"
17+
});
18+
19+
//</editor-fold>
20+
};

www/api/swagger/swagger-ui-bundle.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

www/api/swagger/swagger-ui-bundle.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

www/api/swagger/swagger-ui-es-bundle-core.js

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)