diff options
author | David Gibson <david@gibson.dropbear.id.au> | 2024-09-06 15:17:10 +1000 |
---|---|---|
committer | Stefano Brivio <sbrivio@redhat.com> | 2024-09-06 12:53:38 +0200 |
commit | aff5a49b0e75dd08428a88c05d98f39885556c8b (patch) | |
tree | 0d7dd172361c9ee573076ca5724d69108f03e7a9 /tcp.c | |
parent | bd99f02a64f46cae44ef13c3cb934b8baa9c1a2c (diff) | |
download | passt-aff5a49b0e75dd08428a88c05d98f39885556c8b.tar passt-aff5a49b0e75dd08428a88c05d98f39885556c8b.tar.gz passt-aff5a49b0e75dd08428a88c05d98f39885556c8b.tar.bz2 passt-aff5a49b0e75dd08428a88c05d98f39885556c8b.tar.lz passt-aff5a49b0e75dd08428a88c05d98f39885556c8b.tar.xz passt-aff5a49b0e75dd08428a88c05d98f39885556c8b.tar.zst passt-aff5a49b0e75dd08428a88c05d98f39885556c8b.zip |
udp: Handle more error conditions in udp_sock_errs()
udp_sock_errs() reads out everything in the socket error queue. However
we've seen some cases[0] where an EPOLLERR event is active, but there isn't
anything in the queue.
One possibility is that the error is reported instead by the SO_ERROR
sockopt. Check for that case and report it as best we can. If we still
get an EPOLLERR without visible error, we have no way to clear the error
state, so treat it as an unrecoverable error.
[0] https://github.com/containers/podman/issues/23686#issuecomment-2324945010
Link: https://bugs.passt.top/show_bug.cgi?id=95
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'tcp.c')
0 files changed, 0 insertions, 0 deletions