blob: 3bab6c16b26b9be77e835d69fbe23bb456195bb5 [file] [log] [blame]
Leo Repp58b9f112021-11-22 11:57:47 +01001'use strict';
2
3var WHITELIST = [
4 'ETIMEDOUT',
5 'ECONNRESET',
6 'EADDRINUSE',
7 'ESOCKETTIMEDOUT',
8 'ECONNREFUSED',
9 'EPIPE',
10 'EHOSTUNREACH',
11 'EAI_AGAIN'
12];
13
14var 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
48module.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};