Commit 50ac8aa
committed
Fix rare silent connection hangs on Linux
The epoll backend silently ignored failures from epoll_ctl when
registering, resubscribing, and unsubscribing event filters. An actor
that thought it was subscribed would wait forever for a notification
that never comes.
Check epoll_ctl returns and send ASIO_ERROR to the owning actor on
subscribe/resubscribe failure. Also fixes the init error check (was
comparing against 0 instead of -1) and adds proper resource cleanup
on partial init failure.
Closes #5119
Closes #51261 parent 5b50d2c commit 50ac8aa
File tree
2 files changed
+29
-4
lines changed- .release-notes
- src/libponyrt/asio
2 files changed
+29
-4
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
112 | 112 | | |
113 | 113 | | |
114 | 114 | | |
115 | | - | |
| 115 | + | |
116 | 116 | | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
117 | 122 | | |
118 | 123 | | |
119 | 124 | | |
| |||
122 | 127 | | |
123 | 128 | | |
124 | 129 | | |
125 | | - | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
126 | 138 | | |
127 | 139 | | |
128 | 140 | | |
| |||
186 | 198 | | |
187 | 199 | | |
188 | 200 | | |
189 | | - | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
190 | 205 | | |
191 | 206 | | |
192 | 207 | | |
| |||
426 | 441 | | |
427 | 442 | | |
428 | 443 | | |
429 | | - | |
| 444 | + | |
| 445 | + | |
430 | 446 | | |
431 | 447 | | |
432 | 448 | | |
| |||
459 | 475 | | |
460 | 476 | | |
461 | 477 | | |
| 478 | + | |
| 479 | + | |
462 | 480 | | |
463 | 481 | | |
464 | 482 | | |
| |||
0 commit comments