Commit 33eed3c
committed
fix(net-websockets): ClientWebSocket gains .NET's outer gate (#2357)
Every operation raised WebSocketException(InvalidState) when the instance was
disposed or had never connected. .NET raises ObjectDisposedException and
InvalidOperationException there.
THE TICKET'S FRAMING WAS TOO SIMPLE AND THE REFERENCE CORRECTED IT. It said .NET
'never' raises WebSocketException at these doors. .NET has TWO layers: the outer
gate ConnectedWebSocket (ClientWebSocket.cs:163-177) raises ObjectDisposed /
InvalidOperation, while the inner per-operation check
(WebSocketStateHelper.cs:21-41) raises exactly WebSocketException(InvalidState).
This port's WebSocket::ThrowOnInvalidState IS that inner layer -- a faithful
counterpart of .NET's own protected static -- and was already correct. Rewriting
it would have replaced a correct exception with a wrong one. The outer layer did
not exist here at all.
NO NEW DATA MEMBER WAS NEEDED, so sizeof stays 424 and this is not an SA-3
change: Abort() calls Dispose() in .NET, so Aborted is Disposed there, and
socket_ is assigned only on a successful connect and cleared only by Dispose().
CloseAsync deliberately does not clear it, matching .NET.
#2096's pin is inverted as that ticket anticipated -- it raised WebSocketException
on both sides of the Dispose race precisely because matching .NET on one side
only would be worse, and named #2357 as the ticket that would move the family.
CloseAsync after Dispose used to succeed as a no-op and now faults, which is
.NET's behaviour.
Four mutations, all caught. Gate 17,282 run, 0 failed. Downstream: zero
WebSockets sites in either consumer.1 parent 9cf7a33 commit 33eed3c
6 files changed
Lines changed: 225 additions & 12 deletions
File tree
- docs
- modules/net-websockets
- include/System/Net/WebSockets
- src/System/Net/WebSockets
- tests/System/Net/WebSockets
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
Lines changed: 5 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
118 | 118 | | |
119 | 119 | | |
120 | 120 | | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
121 | 126 | | |
122 | 127 | | |
123 | 128 | | |
| |||
Lines changed: 56 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
| 5 | + | |
5 | 6 | | |
6 | 7 | | |
7 | 8 | | |
| |||
294 | 295 | | |
295 | 296 | | |
296 | 297 | | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
297 | 337 | | |
298 | 338 | | |
299 | 339 | | |
300 | 340 | | |
301 | 341 | | |
302 | 342 | | |
303 | 343 | | |
304 | | - | |
305 | | - | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
306 | 352 | | |
307 | 353 | | |
308 | 354 | | |
| |||
1007 | 1053 | | |
1008 | 1054 | | |
1009 | 1055 | | |
| 1056 | + | |
1010 | 1057 | | |
1011 | 1058 | | |
1012 | 1059 | | |
| |||
1037 | 1084 | | |
1038 | 1085 | | |
1039 | 1086 | | |
| 1087 | + | |
1040 | 1088 | | |
1041 | 1089 | | |
1042 | 1090 | | |
| |||
1166 | 1214 | | |
1167 | 1215 | | |
1168 | 1216 | | |
| 1217 | + | |
1169 | 1218 | | |
1170 | 1219 | | |
1171 | 1220 | | |
| |||
1192 | 1241 | | |
1193 | 1242 | | |
1194 | 1243 | | |
| 1244 | + | |
| 1245 | + | |
| 1246 | + | |
| 1247 | + | |
| 1248 | + | |
1195 | 1249 | | |
1196 | 1250 | | |
1197 | 1251 | | |
| |||
Lines changed: 87 additions & 9 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
39 | 39 | | |
40 | 40 | | |
41 | 41 | | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
42 | 45 | | |
43 | 46 | | |
44 | 47 | | |
| |||
105 | 108 | | |
106 | 109 | | |
107 | 110 | | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
108 | 120 | | |
109 | 121 | | |
110 | 122 | | |
| |||
194 | 206 | | |
195 | 207 | | |
196 | 208 | | |
197 | | - | |
198 | | - | |
199 | | - | |
200 | | - | |
201 | | - | |
202 | | - | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
203 | 218 | | |
204 | 219 | | |
205 | 220 | | |
| |||
209 | 224 | | |
210 | 225 | | |
211 | 226 | | |
212 | | - | |
| 227 | + | |
213 | 228 | | |
214 | 229 | | |
215 | | - | |
| 230 | + | |
216 | 231 | | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
217 | 236 | | |
218 | | - | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
219 | 297 | | |
220 | 298 | | |
221 | 299 | | |
| |||
Binary file not shown.
0 commit comments