From ea6c1cd7e6525f76041d341074a0e10b800d4e13 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Fri, 8 Jan 2021 14:25:37 +0100 Subject: device: receive: do not exit immediately on transient UDP receive errors Some users report seeing lines like: > Routine: receive incoming IPv4 - stopped Popping up unexpectedly. Let's sleep and try again before failing, and also log the error, and perhaps we'll eventually understand this situation better in future versions. Because we have to distinguish between the socket being closed explicitly and whatever error this is, we bump the module to require Go 1.16. Signed-off-by: Jason A. Donenfeld --- conn/conn_linux.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'conn') diff --git a/conn/conn_linux.go b/conn/conn_linux.go index ef5c0ba..642ad7d 100644 --- a/conn/conn_linux.go +++ b/conn/conn_linux.go @@ -204,7 +204,7 @@ func (bind *nativeBind) ReceiveIPv6(buff []byte) (int, Endpoint, error) { var end NativeEndpoint if bind.sock6 == -1 { - return 0, nil, syscall.EAFNOSUPPORT + return 0, nil, net.ErrClosed } n, err := receive6( bind.sock6, @@ -220,7 +220,7 @@ func (bind *nativeBind) ReceiveIPv4(buff []byte) (int, Endpoint, error) { var end NativeEndpoint if bind.sock4 == -1 { - return 0, nil, syscall.EAFNOSUPPORT + return 0, nil, net.ErrClosed } n, err := receive4( bind.sock4, @@ -237,12 +237,12 @@ func (bind *nativeBind) Send(buff []byte, end Endpoint) error { nend := end.(*NativeEndpoint) if !nend.isV6 { if bind.sock4 == -1 { - return syscall.EAFNOSUPPORT + return net.ErrClosed } return send4(bind.sock4, nend, buff) } else { if bind.sock6 == -1 { - return syscall.EAFNOSUPPORT + return net.ErrClosed } return send6(bind.sock6, nend, buff) } -- cgit v1.2.3