handle temporary send errors
I'm seeing these kinds of errors on the receive side (about 3 in 100000):
- sendto: no buffer space available
- sendto: no route to host
- wsasendto: A socket operation was attempted to an unreachable network
Note that the rate we're seeing in the logs is probably lower than the actual rate of these errors. If the buffer is persistently full, the CONNECTION_CLOSE will probably not be sent out at all. UPDATE: We also stopped sending those errors on the wire in #2666, so this error rate is not indicative of anything.
These kinds of errors should not be connection errors in the first place. The fact that the CONNECTION_CLOSE was sent shows that the connection was in a recoverable state.
I'm struggling to reproduce this. I wrote a script that's supposed to fill up the kernel send buffer: https://gist.github.com/marten-seemann/f376b2e89261b0dd2bd34e3f20002608 It doesn't seem to do that though.