From d174b97af7d8b6f47a116276d3a247303666dabe Mon Sep 17 00:00:00 2001 From: Nick Craig-Wood Date: Thu, 11 Jun 2020 20:08:25 +0100 Subject: [PATCH] errors: add WSAECONNREFUSED and more to the list of retriable Windows errors This adds the missing WSAECONNREFUSED error to the list of errors we can retry under Windows. > Connection refused. No connection could be made because the target > computer actively refused it. It also adds any relevant errors I could see in the error code list. See: https://forum.rclone.org/t/failing-to-upload-large-file-to-b2/17085 --- fs/fserrors/retriable_errors_windows.go | 32 +++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/fs/fserrors/retriable_errors_windows.go b/fs/fserrors/retriable_errors_windows.go index 55c8c5985..c6bea32ae 100644 --- a/fs/fserrors/retriable_errors_windows.go +++ b/fs/fserrors/retriable_errors_windows.go @@ -6,12 +6,25 @@ import ( "syscall" ) +// Windows error code list +// https://docs.microsoft.com/en-us/windows/win32/winsock/windows-sockets-error-codes-2 const ( + WSAENETDOWN syscall.Errno = 10050 + WSAENETUNREACH syscall.Errno = 10051 + WSAENETRESET syscall.Errno = 10052 WSAECONNABORTED syscall.Errno = 10053 + WSAECONNRESET syscall.Errno = 10054 + WSAENOBUFS syscall.Errno = 10055 + WSAENOTCONN syscall.Errno = 10057 + WSAESHUTDOWN syscall.Errno = 10058 + WSAETIMEDOUT syscall.Errno = 10060 + WSAECONNREFUSED syscall.Errno = 10061 + WSAEHOSTDOWN syscall.Errno = 10064 + WSAEHOSTUNREACH syscall.Errno = 10065 + WSAEDISCON syscall.Errno = 10101 + WSAEREFUSED syscall.Errno = 10112 WSAHOST_NOT_FOUND syscall.Errno = 11001 WSATRY_AGAIN syscall.Errno = 11002 - WSAENETRESET syscall.Errno = 10052 - WSAETIMEDOUT syscall.Errno = 10060 ) func init() { @@ -19,11 +32,22 @@ func init() { // don't seem to happen retriableErrors = append(retriableErrors, syscall.WSAECONNRESET, + WSAENETDOWN, + WSAENETUNREACH, + WSAENETRESET, WSAECONNABORTED, + WSAECONNRESET, + WSAENOBUFS, + WSAENOTCONN, + WSAESHUTDOWN, + WSAETIMEDOUT, + WSAECONNREFUSED, + WSAEHOSTDOWN, + WSAEHOSTUNREACH, + WSAEDISCON, + WSAEREFUSED, WSAHOST_NOT_FOUND, WSATRY_AGAIN, - WSAENETRESET, - WSAETIMEDOUT, syscall.ERROR_HANDLE_EOF, syscall.ERROR_NETNAME_DELETED, syscall.ERROR_BROKEN_PIPE,