Commit aeff23a
authored
Fix last peer initiated stream ID when quiescing (#1700)
Motivation:
The idle handler records the ID of the last stream created by the remote
peer and uses it when sending GOAWAY frames. In most paths this was
correctly updated according to the role the handler played in the
connection and the stream ID. However, in the quiescing state it was
unconditionally updated. This can lead to cases where the client
attempts to send a GOAWAY with a client initiated stream ID: this is
invalid and NIO HTTP/2 treats it as a connection level error, closing
all open streams.
Modification:
- Conditionally update the last peer initiated stream ID when quiescing
Result:
Fewer connection errors1 parent 765ff32 commit aeff23a
File tree
2 files changed
+37
-1
lines changed- Sources/GRPC
- Tests/GRPCTests
2 files changed
+37
-1
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
275 | 275 | | |
276 | 276 | | |
277 | 277 | | |
278 | | - | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
279 | 287 | | |
280 | 288 | | |
281 | 289 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
535 | 535 | | |
536 | 536 | | |
537 | 537 | | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
| 546 | + | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
538 | 566 | | |
539 | 567 | | |
540 | 568 | | |
| |||
0 commit comments