| Leo Repp | 58b9f11 | 2021-11-22 11:57:47 +0100 | [diff] [blame^] | 1 | 'use strict'; |
| 2 | |
| 3 | var WHITELIST = [ |
| 4 | 'ETIMEDOUT', |
| 5 | 'ECONNRESET', |
| 6 | 'EADDRINUSE', |
| 7 | 'ESOCKETTIMEDOUT', |
| 8 | 'ECONNREFUSED', |
| 9 | 'EPIPE', |
| 10 | 'EHOSTUNREACH', |
| 11 | 'EAI_AGAIN' |
| 12 | ]; |
| 13 | |
| 14 | var BLACKLIST = [ |
| 15 | 'ENOTFOUND', |
| 16 | 'ENETUNREACH', |
| 17 | |
| 18 | // SSL errors from https://github.com/nodejs/node/blob/ed3d8b13ee9a705d89f9e0397d9e96519e7e47ac/src/node_crypto.cc#L1950 |
| 19 | 'UNABLE_TO_GET_ISSUER_CERT', |
| 20 | 'UNABLE_TO_GET_CRL', |
| 21 | 'UNABLE_TO_DECRYPT_CERT_SIGNATURE', |
| 22 | 'UNABLE_TO_DECRYPT_CRL_SIGNATURE', |
| 23 | 'UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY', |
| 24 | 'CERT_SIGNATURE_FAILURE', |
| 25 | 'CRL_SIGNATURE_FAILURE', |
| 26 | 'CERT_NOT_YET_VALID', |
| 27 | 'CERT_HAS_EXPIRED', |
| 28 | 'CRL_NOT_YET_VALID', |
| 29 | 'CRL_HAS_EXPIRED', |
| 30 | 'ERROR_IN_CERT_NOT_BEFORE_FIELD', |
| 31 | 'ERROR_IN_CERT_NOT_AFTER_FIELD', |
| 32 | 'ERROR_IN_CRL_LAST_UPDATE_FIELD', |
| 33 | 'ERROR_IN_CRL_NEXT_UPDATE_FIELD', |
| 34 | 'OUT_OF_MEM', |
| 35 | 'DEPTH_ZERO_SELF_SIGNED_CERT', |
| 36 | 'SELF_SIGNED_CERT_IN_CHAIN', |
| 37 | 'UNABLE_TO_GET_ISSUER_CERT_LOCALLY', |
| 38 | 'UNABLE_TO_VERIFY_LEAF_SIGNATURE', |
| 39 | 'CERT_CHAIN_TOO_LONG', |
| 40 | 'CERT_REVOKED', |
| 41 | 'INVALID_CA', |
| 42 | 'PATH_LENGTH_EXCEEDED', |
| 43 | 'INVALID_PURPOSE', |
| 44 | 'CERT_UNTRUSTED', |
| 45 | 'CERT_REJECTED' |
| 46 | ]; |
| 47 | |
| 48 | module.exports = function (err) { |
| 49 | if (!err || !err.code) { |
| 50 | return true; |
| 51 | } |
| 52 | |
| 53 | if (WHITELIST.indexOf(err.code) !== -1) { |
| 54 | return true; |
| 55 | } |
| 56 | |
| 57 | if (BLACKLIST.indexOf(err.code) !== -1) { |
| 58 | return false; |
| 59 | } |
| 60 | |
| 61 | return true; |
| 62 | }; |