• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'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};
63