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
This commit is contained in:
Nick Craig-Wood 2020-06-11 20:08:25 +01:00
parent fff8822239
commit d174b97af7

View file

@ -6,12 +6,25 @@ import (
"syscall" "syscall"
) )
// Windows error code list
// https://docs.microsoft.com/en-us/windows/win32/winsock/windows-sockets-error-codes-2
const ( const (
WSAENETDOWN syscall.Errno = 10050
WSAENETUNREACH syscall.Errno = 10051
WSAENETRESET syscall.Errno = 10052
WSAECONNABORTED syscall.Errno = 10053 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 WSAHOST_NOT_FOUND syscall.Errno = 11001
WSATRY_AGAIN syscall.Errno = 11002 WSATRY_AGAIN syscall.Errno = 11002
WSAENETRESET syscall.Errno = 10052
WSAETIMEDOUT syscall.Errno = 10060
) )
func init() { func init() {
@ -19,11 +32,22 @@ func init() {
// don't seem to happen // don't seem to happen
retriableErrors = append(retriableErrors, retriableErrors = append(retriableErrors,
syscall.WSAECONNRESET, syscall.WSAECONNRESET,
WSAENETDOWN,
WSAENETUNREACH,
WSAENETRESET,
WSAECONNABORTED, WSAECONNABORTED,
WSAECONNRESET,
WSAENOBUFS,
WSAENOTCONN,
WSAESHUTDOWN,
WSAETIMEDOUT,
WSAECONNREFUSED,
WSAEHOSTDOWN,
WSAEHOSTUNREACH,
WSAEDISCON,
WSAEREFUSED,
WSAHOST_NOT_FOUND, WSAHOST_NOT_FOUND,
WSATRY_AGAIN, WSATRY_AGAIN,
WSAENETRESET,
WSAETIMEDOUT,
syscall.ERROR_HANDLE_EOF, syscall.ERROR_HANDLE_EOF,
syscall.ERROR_NETNAME_DELETED, syscall.ERROR_NETNAME_DELETED,
syscall.ERROR_BROKEN_PIPE, syscall.ERROR_BROKEN_PIPE,