Commit eaad084
authored
Suppress fcntl errors on the listener's accept path (#191)
Motivation:
On Darwin, 'fcntl(2)' on a just-accepted socket can fail with EINVAL,
which NIO surfaces as a 'NIOFcntlFailedError'. NIO closes the socket
directly and fires the error down the pipeline for informational
purposes.
However, when wrapped in a NIOAsyncChannel channel the read loop throws
this error which causes the server to shutdown.
Note that testing this reliably is difficult: the error type is public
but its init is not so we cannot synthesize the failure. Hitting this is
possible in release builds after serveral thousand iterations but much
less so in debug builds.
Modifications:
- Ignore the error on Darwin
Result:
Fewer errors1 parent c46f77c commit eaad084
2 files changed
Lines changed: 50 additions & 0 deletions
File tree
- Sources/GRPCNIOTransportHTTP2Posix
Lines changed: 8 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
126 | 126 | | |
127 | 127 | | |
128 | 128 | | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
129 | 136 | | |
| 137 | + | |
130 | 138 | | |
131 | 139 | | |
132 | 140 | | |
| |||
Lines changed: 42 additions & 0 deletions
| 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 | + | |
0 commit comments