mirror of
https://github.com/nodejs/node-v0.x-archive.git
synced 2026-04-28 03:01:10 -04:00
Compare commits
582 Commits
nodeconf-2
...
fix-api-do
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c681f8c994 | ||
|
|
02a549ed2b | ||
|
|
67d9a56251 | ||
|
|
7edfd5f6d1 | ||
|
|
0b4e67f861 | ||
|
|
0b5731a63c | ||
|
|
4b69c72b8b | ||
|
|
1fc3fdf892 | ||
|
|
15cdeb7d99 | ||
|
|
63377ec3c3 | ||
|
|
2b21c45f75 | ||
|
|
10717f659b | ||
|
|
c6e8a2c920 | ||
|
|
4332c77bf7 | ||
|
|
50c23fb381 | ||
|
|
7d6b5b1d5b | ||
|
|
219c80d099 | ||
|
|
f2a45caf2e | ||
|
|
51fe319faf | ||
|
|
a5be84fe9b | ||
|
|
dcff5d565c | ||
|
|
8bcd0a4c4a | ||
|
|
d01a900078 | ||
|
|
c8239c08d7 | ||
|
|
ad0684807c | ||
|
|
431eb172f9 | ||
|
|
ff32b81516 | ||
|
|
6b264dd1f9 | ||
|
|
09b482886b | ||
|
|
6168fe6720 | ||
|
|
9e387fb611 | ||
|
|
f5e9b6e84a | ||
|
|
deef605085 | ||
|
|
b28c76e9d2 | ||
|
|
e45c52c573 | ||
|
|
0c50195071 | ||
|
|
0a430b9aec | ||
|
|
31051e5c7b | ||
|
|
6ebd85e105 | ||
|
|
fe2019699a | ||
|
|
cd6dff9728 | ||
|
|
a363f61ca8 | ||
|
|
102a861ec2 | ||
|
|
48536394c9 | ||
|
|
fd2cb7c611 | ||
|
|
1425ccd1b2 | ||
|
|
78db74dd88 | ||
|
|
1b81ea8276 | ||
|
|
a6757fb9d0 | ||
|
|
52795f8fcc | ||
|
|
afb488db86 | ||
|
|
1eb1e0a9af | ||
|
|
f75a8ad723 | ||
|
|
542234ad98 | ||
|
|
45f1330425 | ||
|
|
0ff51c6e06 | ||
|
|
bddea12026 | ||
|
|
710845cfd3 | ||
|
|
33f74bbd90 | ||
|
|
934bfe23a1 | ||
|
|
813114dab0 | ||
|
|
69b122a642 | ||
|
|
0603c8345b | ||
|
|
d230fa9eb7 | ||
|
|
1c031c84d2 | ||
|
|
8120015f40 | ||
|
|
f5cb330ab1 | ||
|
|
5e503f45d2 | ||
|
|
8c868989be | ||
|
|
f9456a2d36 | ||
|
|
479b0b4e54 | ||
|
|
3c9c920f57 | ||
|
|
0d051238be | ||
|
|
3a08b7c3e0 | ||
|
|
a1b2875afd | ||
|
|
caeb67735b | ||
|
|
fbff7054a4 | ||
|
|
8032a21025 | ||
|
|
70dafa7b62 | ||
|
|
e17c5a72b2 | ||
|
|
2ff29cc7e3 | ||
|
|
13a992b1c2 | ||
|
|
5ff59453a4 | ||
|
|
88bd95cfef | ||
|
|
d435f4b3eb | ||
|
|
523929c927 | ||
|
|
ea69dd7584 | ||
|
|
e59eca58ad | ||
|
|
8d045a30e9 | ||
|
|
69080f5474 | ||
|
|
b9283cf9d1 | ||
|
|
fe2e8a4a24 | ||
|
|
35443862a2 | ||
|
|
1349b680ba | ||
|
|
7dbc024c85 | ||
|
|
6c8593d456 | ||
|
|
226c98649d | ||
|
|
b259f245f8 | ||
|
|
3139fa20d7 | ||
|
|
3859fbdb7d | ||
|
|
2afa3d8a03 | ||
|
|
d601c76f4d | ||
|
|
c1f4aacc75 | ||
|
|
707cc25011 | ||
|
|
e0e38c2f47 | ||
|
|
d6712917f5 | ||
|
|
0ec78c961b | ||
|
|
6a95e9f7e0 | ||
|
|
1524d48333 | ||
|
|
641cea0926 | ||
|
|
2b7c8a2f02 | ||
|
|
d87ae24dfe | ||
|
|
c8e0bdd7cf | ||
|
|
542ac7f3d2 | ||
|
|
84952da241 | ||
|
|
1a8b0e807f | ||
|
|
0fe0d12155 | ||
|
|
daca803e9e | ||
|
|
1fddc1fee8 | ||
|
|
6e689ece46 | ||
|
|
0664ddc093 | ||
|
|
7c5fabe405 | ||
|
|
627c1a92eb | ||
|
|
8e60b4523c | ||
|
|
b869797a2d | ||
|
|
0f2956192c | ||
|
|
f39e608c6e | ||
|
|
ada85d7307 | ||
|
|
3122e0eae6 | ||
|
|
adf2cfd54d | ||
|
|
3998914ec8 | ||
|
|
7fabdc23d8 | ||
|
|
6a11bfe74b | ||
|
|
d1dd0d6b38 | ||
|
|
ffd0116eda | ||
|
|
181b8a5d3a | ||
|
|
fd80a31e06 | ||
|
|
6b97c2e986 | ||
|
|
5d824c89c9 | ||
|
|
b0277f35bd | ||
|
|
d6b4766a78 | ||
|
|
cc08106d62 | ||
|
|
70cc9968f6 | ||
|
|
53b4accb6e | ||
|
|
6f043940bd | ||
|
|
2fd7ee12d9 | ||
|
|
8e2cc69e78 | ||
|
|
92518892ec | ||
|
|
4f2b08c523 | ||
|
|
98c69e892c | ||
|
|
bc0ff830af | ||
|
|
7169879879 | ||
|
|
530af9cb8e | ||
|
|
1223cafea6 | ||
|
|
4f1ae11a62 | ||
|
|
9d281934df | ||
|
|
befbbad051 | ||
|
|
9f36c0d235 | ||
|
|
38f6fcd822 | ||
|
|
338ba2bc80 | ||
|
|
93390ffc20 | ||
|
|
96b166f291 | ||
|
|
eba7aae107 | ||
|
|
3530fa9cd0 | ||
|
|
1d3d8c0e55 | ||
|
|
9d9fc3fa30 | ||
|
|
a96d6603b3 | ||
|
|
7f86baf5c7 | ||
|
|
b87ca794e3 | ||
|
|
71fc4d9486 | ||
|
|
e2f2a20279 | ||
|
|
11337db35f | ||
|
|
449ffecbb0 | ||
|
|
c7c904b1fc | ||
|
|
9cbfd6ef51 | ||
|
|
7cb38309fe | ||
|
|
47ee9a48a8 | ||
|
|
4128d4d2ba | ||
|
|
a97bdef06d | ||
|
|
c94afdccf3 | ||
|
|
ee95e4f5f7 | ||
|
|
72dcc26c7a | ||
|
|
e22ea56647 | ||
|
|
361aa5344d | ||
|
|
f6ba61bd15 | ||
|
|
1cb6f1a46a | ||
|
|
fc21bcb017 | ||
|
|
ce82d6b847 | ||
|
|
7fd5a4d096 | ||
|
|
e9170cbc3d | ||
|
|
f051f31790 | ||
|
|
535c7777ac | ||
|
|
0da4c67165 | ||
|
|
881ac26f27 | ||
|
|
80eff96829 | ||
|
|
9fbd0f0f7d | ||
|
|
22b839845c | ||
|
|
2efe4ab761 | ||
|
|
a7dd0e51f3 | ||
|
|
715bb7f89f | ||
|
|
72cc66e503 | ||
|
|
c862c03485 | ||
|
|
e86c9421ef | ||
|
|
31150df92a | ||
|
|
1d90b5b78e | ||
|
|
c06495713a | ||
|
|
7bd08c5062 | ||
|
|
885142a5ed | ||
|
|
92875501d2 | ||
|
|
17fbdc18b8 | ||
|
|
120f7cf55f | ||
|
|
00890e43fb | ||
|
|
a960d1707a | ||
|
|
bfe1fdb8ab | ||
|
|
d857d5ab09 | ||
|
|
b148cbe09d | ||
|
|
dbec0a0cd8 | ||
|
|
1285008fca | ||
|
|
7abd826366 | ||
|
|
cb7911f78a | ||
|
|
f76c3938d0 | ||
|
|
1038959dbf | ||
|
|
793c76e5c6 | ||
|
|
3f3a71e61e | ||
|
|
250782d139 | ||
|
|
f9ced08de3 | ||
|
|
0ee99565f9 | ||
|
|
b0fa931e07 | ||
|
|
4601e7c892 | ||
|
|
75bc11cf12 | ||
|
|
9520adeb37 | ||
|
|
1bd4f3a605 | ||
|
|
bfb7de5e75 | ||
|
|
632c135622 | ||
|
|
af69f88a9d | ||
|
|
d6fd118727 | ||
|
|
f2b297cc7c | ||
|
|
c2d32f4c0e | ||
|
|
cdc093b31f | ||
|
|
47bed4828c | ||
|
|
a9d22247ad | ||
|
|
f68a116c3c | ||
|
|
70f198ddb1 | ||
|
|
bd547d6598 | ||
|
|
7989f42f86 | ||
|
|
43a29f53ca | ||
|
|
f0d870501e | ||
|
|
6bd78fd770 | ||
|
|
5e06ce4fb9 | ||
|
|
a9d24fa40d | ||
|
|
bd8a5755dc | ||
|
|
6eb4d1d15c | ||
|
|
06453a94a7 | ||
|
|
47abdd9c43 | ||
|
|
0a01a42e87 | ||
|
|
aae51ecf7d | ||
|
|
70ea5bac43 | ||
|
|
1efe6837b2 | ||
|
|
e0c5302590 | ||
|
|
a6f89ccd76 | ||
|
|
b7776fb192 | ||
|
|
b940e0fd86 | ||
|
|
085db9dd6c | ||
|
|
ae418f974d | ||
|
|
0206925b0d | ||
|
|
cc56c62ed8 | ||
|
|
31c510ca88 | ||
|
|
1fa5cff4f2 | ||
|
|
1d734a75b5 | ||
|
|
3e6e63406d | ||
|
|
c2aea3747d | ||
|
|
abbde2fafa | ||
|
|
562b015170 | ||
|
|
217bb0c964 | ||
|
|
829a9b8cba | ||
|
|
86b8d84811 | ||
|
|
55543d3c45 | ||
|
|
37376debe5 | ||
|
|
b222374b07 | ||
|
|
dee5270a6c | ||
|
|
5c832e44c3 | ||
|
|
2e8bb57fe3 | ||
|
|
3595139b51 | ||
|
|
d10a68736d | ||
|
|
96379f83e0 | ||
|
|
2ee86c624e | ||
|
|
56e80a37e0 | ||
|
|
e3d8359021 | ||
|
|
1317032c97 | ||
|
|
d2147c55c2 | ||
|
|
09c51d5e40 | ||
|
|
154d9d2163 | ||
|
|
643a7d8c16 | ||
|
|
fac8f396cc | ||
|
|
e796e11087 | ||
|
|
a98d541733 | ||
|
|
8c05570258 | ||
|
|
d2de8ba34d | ||
|
|
b4c4e0bbaa | ||
|
|
00efcb4cd7 | ||
|
|
896e19330a | ||
|
|
0ec3770767 | ||
|
|
9975ff603b | ||
|
|
485fcf9c63 | ||
|
|
42cd468901 | ||
|
|
5d4f4ee310 | ||
|
|
5aebc73525 | ||
|
|
eb7c7be7da | ||
|
|
24d05f21be | ||
|
|
b0e5f195df | ||
|
|
bc2f31ae1d | ||
|
|
8b7ec73331 | ||
|
|
25f9e92813 | ||
|
|
f645c40fcd | ||
|
|
1d57a5caa4 | ||
|
|
61c0d571bf | ||
|
|
abe02553f2 | ||
|
|
67e9298fb6 | ||
|
|
198ed0bd0d | ||
|
|
549be1caa8 | ||
|
|
7f81ca2c47 | ||
|
|
e7f7e2aeca | ||
|
|
a05dae2ced | ||
|
|
346b59e4a3 | ||
|
|
7bd6e33318 | ||
|
|
1b74892807 | ||
|
|
8753bb3859 | ||
|
|
196184d332 | ||
|
|
56913d2cde | ||
|
|
270c2deb84 | ||
|
|
fc7e217a30 | ||
|
|
30b3bc2f7c | ||
|
|
1be9365930 | ||
|
|
b922b5e90d | ||
|
|
aa56d9d354 | ||
|
|
5a8de857f0 | ||
|
|
ffb718b5a3 | ||
|
|
3917232030 | ||
|
|
6f8aa24d1e | ||
|
|
3e9f2e61db | ||
|
|
cb5da7b443 | ||
|
|
34b9280da4 | ||
|
|
d2d56d04f8 | ||
|
|
7f82faee30 | ||
|
|
55b0bd639d | ||
|
|
f84c7a2776 | ||
|
|
00e28ee6a8 | ||
|
|
696ae46fd7 | ||
|
|
b7fd6bc899 | ||
|
|
9371be0aa1 | ||
|
|
2eaef9f6da | ||
|
|
32478acf94 | ||
|
|
2a741f2d12 | ||
|
|
e10c223eb6 | ||
|
|
97738994e0 | ||
|
|
39e2426b20 | ||
|
|
1d5e797445 | ||
|
|
7dca8d714f | ||
|
|
bb1575b4c4 | ||
|
|
593672c33d | ||
|
|
0462bc2356 | ||
|
|
4bc2ec90d7 | ||
|
|
f89a7185b7 | ||
|
|
04d52270b6 | ||
|
|
910bc3c02d | ||
|
|
4ec189b250 | ||
|
|
a22de4f7ee | ||
|
|
f16edd2632 | ||
|
|
4a2792cd2f | ||
|
|
92bbd60a3f | ||
|
|
2905884b63 | ||
|
|
b5e161989c | ||
|
|
5cfee927cd | ||
|
|
796834bf18 | ||
|
|
98be8df571 | ||
|
|
b371d4ae8f | ||
|
|
60f777d343 | ||
|
|
bd7fa92de4 | ||
|
|
94c4ba9dd3 | ||
|
|
8aac118b69 | ||
|
|
9b8fcff435 | ||
|
|
6877e64fa8 | ||
|
|
fcfaa392ae | ||
|
|
a32b8787a4 | ||
|
|
207a3e10f8 | ||
|
|
658aeb2ca0 | ||
|
|
90655a998e | ||
|
|
953d7184ec | ||
|
|
71aabedad4 | ||
|
|
a34bbaf31b | ||
|
|
c1452f4c6f | ||
|
|
88dc1fcb62 | ||
|
|
fce0eb416b | ||
|
|
5885f464f0 | ||
|
|
5ce50ece16 | ||
|
|
1394d5856b | ||
|
|
a763db8fc0 | ||
|
|
65b127572f | ||
|
|
c9d93f3431 | ||
|
|
ac9cf00252 | ||
|
|
9142dc676f | ||
|
|
36f2bf22b5 | ||
|
|
cbff8f091c | ||
|
|
16934d9210 | ||
|
|
ac799ba0af | ||
|
|
007393a09d | ||
|
|
568072ceae | ||
|
|
2010985354 | ||
|
|
3dcc9b93e1 | ||
|
|
ac2263b77f | ||
|
|
8f221bc43d | ||
|
|
0be5a94c56 | ||
|
|
849c92fec7 | ||
|
|
155df9ca76 | ||
|
|
9f7f9d1240 | ||
|
|
0c5981b226 | ||
|
|
4b5e6a38df | ||
|
|
977c54adb5 | ||
|
|
5ac6f4de13 | ||
|
|
a60f67192f | ||
|
|
21265e20d3 | ||
|
|
9c6e06bed3 | ||
|
|
f6f176e108 | ||
|
|
808a968409 | ||
|
|
eb291de00e | ||
|
|
91a0e52c03 | ||
|
|
97813ae58d | ||
|
|
028e524bce | ||
|
|
2649ae8395 | ||
|
|
85b2aaea3d | ||
|
|
7940833773 | ||
|
|
e2da042844 | ||
|
|
5e41c022af | ||
|
|
8fc48bcf4c | ||
|
|
b97c28f59e | ||
|
|
f051b8919f | ||
|
|
2e16037201 | ||
|
|
ed186c971c | ||
|
|
5bc5210b92 | ||
|
|
5ef03bc3ee | ||
|
|
9a3a0ccc50 | ||
|
|
56c5806da3 | ||
|
|
720675e7db | ||
|
|
ff1efdd6ee | ||
|
|
51cdce8322 | ||
|
|
9c65387673 | ||
|
|
9777890f5d | ||
|
|
98c57c7c07 | ||
|
|
b011811a9f | ||
|
|
d97ea06d88 | ||
|
|
b7f36e187d | ||
|
|
a63079f34c | ||
|
|
d537992d57 | ||
|
|
451497c81e | ||
|
|
d7234c8d50 | ||
|
|
994ce4c99f | ||
|
|
671b5be6e9 | ||
|
|
cfa03ad2e3 | ||
|
|
9135c7fea8 | ||
|
|
093efafce3 | ||
|
|
cb150406c8 | ||
|
|
6b5e6a5a3e | ||
|
|
55546f55d4 | ||
|
|
35ae696822 | ||
|
|
7c554a5cd0 | ||
|
|
5bda2bed37 | ||
|
|
afabdf0e15 | ||
|
|
7196742852 | ||
|
|
9fad8e5dc4 | ||
|
|
1c3863abfd | ||
|
|
3546825b14 | ||
|
|
ebeae2df51 | ||
|
|
1be09dfc25 | ||
|
|
1da7bcc22c | ||
|
|
6301613ff5 | ||
|
|
8b05206665 | ||
|
|
9c19c1e19c | ||
|
|
65ed79a6dc | ||
|
|
86d881f888 | ||
|
|
67a1f0c52e | ||
|
|
95794641d2 | ||
|
|
00a1d3633c | ||
|
|
01f3b468a9 | ||
|
|
fbb963b5d5 | ||
|
|
02eb9c834a | ||
|
|
a3da3e7312 | ||
|
|
5508236c49 | ||
|
|
3f1dba18b2 | ||
|
|
92e4375173 | ||
|
|
1d27987dab | ||
|
|
3c66b15789 | ||
|
|
fcf180327b | ||
|
|
469a4a5091 | ||
|
|
e445fbda1f | ||
|
|
985695e4d6 | ||
|
|
8a9434c4ef | ||
|
|
8d42c6344b | ||
|
|
af6a2339c5 | ||
|
|
e04c8a8ee4 | ||
|
|
26a8c0c6b8 | ||
|
|
9456cf8fe2 | ||
|
|
2385fbbc3a | ||
|
|
31a27ca72d | ||
|
|
732f8b9641 | ||
|
|
545807918e | ||
|
|
0c2960ef4a | ||
|
|
5453619eb2 | ||
|
|
a66d2400a0 | ||
|
|
0e043528a1 | ||
|
|
e679739b63 | ||
|
|
50b4c905a4 | ||
|
|
5abdef790c | ||
|
|
f55aca6515 | ||
|
|
255650f4d9 | ||
|
|
b1acb2ebd6 | ||
|
|
23d92ec88e | ||
|
|
366baedfd8 | ||
|
|
6b92a71321 | ||
|
|
231092d236 | ||
|
|
6a7be99703 | ||
|
|
bea9dfa14c | ||
|
|
9e1eb361e8 | ||
|
|
98db7babcc | ||
|
|
fc6f8a6943 | ||
|
|
3398cce193 | ||
|
|
6359e017ac | ||
|
|
6327d67be3 | ||
|
|
dce26ccea1 | ||
|
|
4881a6a9a3 | ||
|
|
767c5bf01d | ||
|
|
df1673202c | ||
|
|
e4363145ba | ||
|
|
180f987147 | ||
|
|
33267337fa | ||
|
|
272525714d | ||
|
|
2426d65af8 | ||
|
|
015ec05272 | ||
|
|
0de5b831e2 | ||
|
|
0256edc43e | ||
|
|
90c448de23 | ||
|
|
e2a598b5f2 | ||
|
|
fdf57f811f | ||
|
|
5c81f41e70 | ||
|
|
4bf5211820 | ||
|
|
ff0de45929 | ||
|
|
e20811a628 | ||
|
|
ed806385bf | ||
|
|
14f45ba739 | ||
|
|
e0c4fba0ac | ||
|
|
48a4600c56 | ||
|
|
04e0324f6a | ||
|
|
db5776cf8b | ||
|
|
e48536f4cd | ||
|
|
875dd37a93 | ||
|
|
21dd5f4ea9 | ||
|
|
5e86519199 | ||
|
|
ff8a4058bf | ||
|
|
6d91bd3707 | ||
|
|
610269295b | ||
|
|
8a65df9baa | ||
|
|
b3b8e74dbf | ||
|
|
f1bb5dca85 | ||
|
|
8a7e2b9da6 | ||
|
|
8d9897d735 | ||
|
|
e32660a984 | ||
|
|
5b6464f461 | ||
|
|
8bac8857f5 | ||
|
|
f5602bda18 | ||
|
|
91698f77e5 | ||
|
|
ed5324687e | ||
|
|
99a7e78e77 | ||
|
|
2d6d46172e | ||
|
|
806e300878 | ||
|
|
4c38742dd8 | ||
|
|
16b59cbc74 | ||
|
|
dc3c2d12c8 | ||
|
|
95dcd11dde | ||
|
|
9290385057 | ||
|
|
cf6acf2a1a | ||
|
|
2a8c5ddc46 | ||
|
|
c1bf89df2e | ||
|
|
a0b6df080d |
6
.gitignore
vendored
6
.gitignore
vendored
@@ -15,6 +15,7 @@ node_g
|
||||
.benchmark_reports
|
||||
/.project
|
||||
/.cproject
|
||||
icu_config.gypi
|
||||
|
||||
/out
|
||||
|
||||
@@ -54,6 +55,9 @@ deps/openssl/openssl.xml
|
||||
|
||||
# build/release artifacts
|
||||
/*.tar.gz
|
||||
/SHASUMS.txt*
|
||||
/SHASUMS*.txt*
|
||||
|
||||
/tools/wrk/wrk
|
||||
|
||||
# test artifacts
|
||||
tools/faketime
|
||||
|
||||
14
.travis.yml
Normal file
14
.travis.yml
Normal file
@@ -0,0 +1,14 @@
|
||||
language: node_js
|
||||
|
||||
before_script:
|
||||
- "./configure"
|
||||
- "make"
|
||||
|
||||
script:
|
||||
- "make test"
|
||||
|
||||
notifications:
|
||||
email: false
|
||||
irc:
|
||||
- "irc.freenode.net#libuv"
|
||||
|
||||
81
AUTHORS
81
AUTHORS
@@ -431,10 +431,6 @@ JeongHoon Byun <outsideris@gmail.com>
|
||||
Iskren Ivov Chernev <iskren.chernev@gmail.com>
|
||||
Alexey Kupershtokh <alexey.kupershtokh@gmail.com>
|
||||
Benjamin Ruston <benjy.ruston@gmail.com>
|
||||
Manav Rathi <manav.r@directi.com>
|
||||
Marcin Kostrzewa <marcinkostrzewa@yahoo.com>
|
||||
Suwon Chae <doortts@gmail.com>
|
||||
David Braun <NodeJS-box@snkmail.com>
|
||||
Mitar Milutinovic <mitar.git@tnode.com>
|
||||
Michael Hart <michael.hart.au@gmail.com>
|
||||
Andrew Hart <hartandrewr@gmail.com>
|
||||
@@ -446,7 +442,6 @@ Kelly Gerber <kellygerber22@yahoo.com>
|
||||
Ryan Doenges <rhdoenges@gmail.com>
|
||||
Sean Silva <chisophugis@gmail.com>
|
||||
Miroslav Bajtoš <miro.bajtos@gmail.com>
|
||||
Olof Johansson <olof@ethup.se>
|
||||
Sam Roberts <vieuxtech@gmail.com>
|
||||
Kevin Locke <kevin@kevinlocke.name>
|
||||
Daniel Moore <polaris@northhorizon.net>
|
||||
@@ -454,10 +449,84 @@ Robert Kowalski <rok@kowalski.gd>
|
||||
Benoit Vallée <github@benoitvallee.net>
|
||||
Ryuichi Okumura <okuryu@okuryu.com>
|
||||
Brandon Frohs <bfrohs@gmail.com>
|
||||
Nick Sullivan <nick@sullivanflock.com>
|
||||
Nathan Zadoks <nathan@nathan7.eu>
|
||||
Rafael Henrique Moreira <rafadev7@gmail.com>
|
||||
Daniel G. Taylor <dan@programmer-art.org>
|
||||
Kiyoshi Nomo <tokyoincidents.g@gmail.com>
|
||||
Veres Lajos <vlajos@gmail.com>
|
||||
Yuan Chuan <yuanchuan23@gmail.com>
|
||||
Peter Rust <peter@cornerstonenw.com>
|
||||
Shuan Wang <shuanwang@gmail.com>
|
||||
Andrew Chilton <andychilton@gmail.com>
|
||||
Wyatt Preul <wpreul@gmail.com>
|
||||
Forrest L Norvell <ogd@aoaioxxysz.net>
|
||||
Eran Hammer <eran@hueniverse.com>
|
||||
Daniel Chatfield <chatfielddaniel@gmail.com>
|
||||
Eivind Uggedal <eivind@uggedal.com>
|
||||
Edward Hutchins <eahutchins@gmail.com>
|
||||
Chris Wren <cthewren@gmail.com>
|
||||
Duan Yao <duanyao@ustc.edu>
|
||||
Eric Schrock <Eric.Schrock@delphix.com>
|
||||
Zarko Stankovic <stankovic.zarko@gmail.com>
|
||||
Maxim Bogushevich <boga1@mail.ru>
|
||||
Phillip Alexander <git@phillipalexander.io>
|
||||
Tim Wood <washwithcare@gmail.com>
|
||||
Linus Unnebäck <linus@folkdatorn.se>
|
||||
Nikolai Vavilov <vvnicholas@gmail.com>
|
||||
Michael Ridgway <mcridgway@gmail.com>
|
||||
Yazhong Liu <yorkiefixer@gmail.com>
|
||||
Gabriel Falkenberg <gabriel.falkenberg@gmail.com>
|
||||
Kai Groner <kai@gronr.com>
|
||||
Gabriel Farrell <g@grrawr.com>
|
||||
Nicolas Kaiser <nikai@nikai.net>
|
||||
Lev Gimelfarb <lev.gimelfarb@gmail.com>
|
||||
Dav Glass <davglass@gmail.com>
|
||||
ayanamist <contact@ayanamist.com>
|
||||
Lorenz Leutgeb <lorenz.leutgeb@gmail.com>
|
||||
Brandon Cheng <bcheng.gt@gmail.com>
|
||||
Alexis Campailla <alexis@janeasystems.com>
|
||||
Jun Ma <roammm@gmail.com>
|
||||
Maxime Quandalle <maxime.quandalle@gmail.com>
|
||||
Benjamin Waters <ben25890@gmail.com>
|
||||
Doron Pagot <doronpagot@gmail.com>
|
||||
Kenan Sulayman <kenan@sly.mn>
|
||||
Christian Schulz <me@rndm.de>
|
||||
Pedro Ballesteros <nitroduna@gmail.com>
|
||||
Anton Khlynovskiy <subzey@gmail.com>
|
||||
Nicolas Talle <dev@nicolab.net>
|
||||
Mike Pennisi <mike@mikepennisi.com>
|
||||
Greg Brail <greg@apigee.com>
|
||||
Shuhei Kagawa <shuhei.kagawa@gmail.com>
|
||||
Josh Dague <daguej@email.uc.edu>
|
||||
Goh Yisheng (Andrew) <mail.yisheng@gmail.com>
|
||||
William Bert <william@spanishdict.com>
|
||||
Greg Sabia Tucker <greg@narrowlabs.com>
|
||||
Calvin Metcalf <calvin.metcalf@gmail.com>
|
||||
cjihrig <cjihrig@gmail.com>
|
||||
Chris Barber <chris@cb1inc.com>
|
||||
Nick Apperson <apperson@gmail.com>
|
||||
Oguz Bastemur <obastemur@gmail.com>
|
||||
Maurice Butler <maurice.butler@gmail.com>
|
||||
Chris Dickinson <christopher.s.dickinson@gmail.com>
|
||||
Julien Gilli <julien.gilli@joyent.com>
|
||||
Jakob Gillich <jakob@gillich.me>
|
||||
James Halliday <mail@substack.net>
|
||||
Kevin Simper <kevin.simper@gmail.com>
|
||||
Jackson Tian <shyvo1987@gmail.com>
|
||||
Tristan Berger <tristan.berger@gmail.com>
|
||||
Mathias Schreck <schreck.mathias@googlemail.com>
|
||||
Matthew Fitzsimmons <matt@fitzage.com>
|
||||
Swaagie <info@martijnswaagman.nl>
|
||||
Emmanuel Odeke <emmanuel.odeke@cmgcanada.ca>
|
||||
Eric Mill <eric@konklone.com>
|
||||
Brendan Ashworth <squirrelslikeacorns@gmail.com>
|
||||
Alejandro Oviedo <alejandro.oviedo.g@gmail.com>
|
||||
pkcs <pkcs@gmx.com>
|
||||
Saúl Ibarra Corretgé <saghul@gmail.com>
|
||||
silverwind <silv3rwind@gmail.com>
|
||||
Steven R. Loomis <srl@icu-project.org>
|
||||
James M Snell <jasnell@gmail.com>
|
||||
Amir Saboury <amir.saboury@gmail.com>
|
||||
Florin-Cristian Gavrila <cristi_gavrila1@yahoo.com>
|
||||
Tyler Anton <mtyleranton@gmail.com>
|
||||
Jonas Dohse <jonas@dohse.ch>
|
||||
|
||||
@@ -134,12 +134,6 @@ feature branch. Post a comment in the pull request afterwards; GitHub does
|
||||
not send out notifications when you add commits.
|
||||
|
||||
|
||||
### CONTRIBUTOR LICENSE AGREEMENT
|
||||
|
||||
Please visit http://nodejs.org/cla.html and sign the Contributor License
|
||||
Agreement. You only need to do that once.
|
||||
|
||||
|
||||
[stability index page]: https://github.com/joyent/node/blob/master/doc/api/documentation.markdown
|
||||
[issue tracker]: https://github.com/joyent/node/issues
|
||||
[node.js mailing list]: http://groups.google.com/group/nodejs
|
||||
|
||||
508
ChangeLog
508
ChangeLog
@@ -1,98 +1,465 @@
|
||||
2013.05.13, Version 0.11.2 (Unstable)
|
||||
2015.03.23, Version 0.10.38 (Maintenance)
|
||||
|
||||
* uv: Upgrade to 0.11.2
|
||||
|
||||
* V8: Upgrade to 3.19.0
|
||||
|
||||
* npm: Upgrade to 1.2.21
|
||||
|
||||
* build: Makefile should respect configure --prefix (Timothy J Fontaine)
|
||||
|
||||
* cluster: use round-robin load balancing (Ben Noordhuis)
|
||||
|
||||
* debugger, cluster: each worker has new debug port (Miroslav Bajtoš)
|
||||
|
||||
* debugger: `restart` with custom debug port (Miroslav Bajtoš)
|
||||
|
||||
* debugger: breakpoints in scripts not loaded yet (Miroslav Bajtoš)
|
||||
|
||||
* event: EventEmitter#setMaxListeners() returns this (Sam Roberts)
|
||||
|
||||
* events: add EventEmitter.defaultMaxListeners (Ben Noordhuis)
|
||||
|
||||
* install: Support $(PREFIX) install target directory prefix (Olof Johansson)
|
||||
|
||||
* os: Include netmask in os.networkInterfaces() (Ben Kelly)
|
||||
|
||||
* path: add path.isAbsolute(path) (Ryan Doenges)
|
||||
|
||||
* stream: Guarantee ordering of 'finish' event (isaacs)
|
||||
|
||||
* streams: introduce .cork/.uncork/._writev (Fedor Indutny)
|
||||
|
||||
* vm: add support for timeout argument (Andrew Paprocki)
|
||||
* openssl: upgrade to 1.0.1m (Addressing multiple CVEs)
|
||||
|
||||
|
||||
2013.04.19, Version 0.11.1 (Unstable), 4babd2b46ebf9fbea2c9946af5cfae25a33b2b22
|
||||
2015.03.11, Version 0.10.37 (Maintenance), 7d6b5b1d5ba726331f9ccaaae59af7cd53eee82e
|
||||
|
||||
* V8: upgrade to 3.18.0
|
||||
* uv: update to 0.10.36 (CVE-2015-0278)
|
||||
|
||||
* uv: Upgrade to v0.11.1
|
||||
* domains: fix stack clearing after error handled (Jonas Dohse)
|
||||
|
||||
* http: split into multiple separate modules (Timothy J Fontaine)
|
||||
* buffer: reword Buffer.concat error message (Chris Dickinson)
|
||||
|
||||
* http: escape unsafe characters in request path (Ben Noordhuis)
|
||||
* console: allow Object.prototype fields as labels (Julien Gilli)
|
||||
|
||||
* url: Escape all unwise characters (isaacs)
|
||||
* V8: log version in profiler log file (Ben Noordhuis)
|
||||
|
||||
* build: depend on v8 postmortem-metadata if enabled (Paddy Byers)
|
||||
|
||||
* etw: update prototypes to match dtrace provider (Timothy J Fontaine)
|
||||
|
||||
* buffer: change output of Buffer.prototype.toJSON() (David Braun)
|
||||
|
||||
* dtrace: actually use the _handle.fd value (Timothy J Fontaine)
|
||||
|
||||
* dtrace: pass more arguments to probes (Dave Pacheco)
|
||||
|
||||
* build: allow building with dtrace on osx (Dave Pacheco)
|
||||
|
||||
* zlib: allow passing options to convenience methods (Kyle Robinson Young)
|
||||
* http: fix performance regression for GET requests (Florin-Cristian Gavrila)
|
||||
|
||||
|
||||
2013.03.28, Version 0.11.0 (Unstable), bce38b3d74e64fcb7d04a2dd551151da6168cdc5
|
||||
2015.01.26, Version 0.10.36 (Stable), 09b482886bdd3d863c3d4e7d71264eac0daaf9e1
|
||||
|
||||
* V8: update to 3.17.13
|
||||
* openssl: update to 1.0.1l
|
||||
|
||||
* os: use %SystemRoot% or %windir% in os.tmpdir() (Suwon Chae)
|
||||
* v8: Fix debugger and strict mode regression (Julien Gilli)
|
||||
|
||||
* util: fix util.inspect() line width calculation (Marcin Kostrzewa)
|
||||
* v8: don't busy loop in cpu profiler thread (Ben Noordhuis)
|
||||
|
||||
* buffer: remove _charsWritten (Trevor Norris)
|
||||
|
||||
* fs: uv_[fl]stat now reports subsecond resolution (Timothy J Fontaine)
|
||||
2014.12.22, Version 0.10.35 (Stable), a363f61ca839e817eb6853c5dc5af8c3b9b9226b
|
||||
|
||||
* fs: Throw if error raised and missing callback (bnoordhuis)
|
||||
* tls: re-add 1024-bit SSL certs removed by f9456a2 (Chris Dickinson)
|
||||
|
||||
* tls: expose SSL_CTX_set_timeout via tls.createServer (Manav Rathi)
|
||||
* timers: don't close interval timers when unrefd (Julien Gilli)
|
||||
|
||||
* tls: remove harmful unnecessary bounds checking (Marcel Laverdet)
|
||||
* timers: don't mutate unref list while iterating it (Julien Gilli)
|
||||
|
||||
* buffer: write ascii strings using WriteOneByte (Trevor Norris)
|
||||
|
||||
* dtrace: fix generation of v8 constants on freebsd (Fedor Indutny)
|
||||
2014.12.17, Version 0.10.34 (Stable), 52795f8fcc2de77cf997e671ea58614e5e425dfe
|
||||
|
||||
* dtrace: x64 ustack helper (Fedor Indutny)
|
||||
* uv: update to v0.10.30
|
||||
|
||||
* readline: handle wide characters properly (Nao Iizuka)
|
||||
* zlib: upgrade to v1.2.8
|
||||
|
||||
* repl: Use a domain to catch async errors safely (isaacs)
|
||||
* child_process: check execFile args is an array (Sam Roberts)
|
||||
|
||||
* repl: emit 'reset' event when context is reset (Sami Samhuri)
|
||||
* child_process: check fork args is an array (Sam Roberts)
|
||||
|
||||
* util: custom `inspect()` method may return an Object (Nathan Rajlich)
|
||||
* crypto: update root certificates (Ben Noordhuis)
|
||||
|
||||
* console: `console.dir()` bypasses inspect() methods (Nathan Rajlich)
|
||||
* domains: fix issues with abort on uncaught (Julien Gilli)
|
||||
|
||||
* timers: Avoid linear scan in _unrefActive. (Julien Gilli)
|
||||
|
||||
* timers: fix unref() memory leak (Trevor Norris)
|
||||
|
||||
* v8: add api for aborting on uncaught exception (Julien Gilli)
|
||||
|
||||
* debugger: fix when using "use strict" (Julien Gilli)
|
||||
|
||||
|
||||
2014.10.20, Version 0.10.33 (Stable), 8d045a30e95602b443eb259a5021d33feb4df079
|
||||
|
||||
* openssl: Update to 1.0.1j (Addressing multiple CVEs)
|
||||
|
||||
* uv: Update to v0.10.29
|
||||
|
||||
* child_process: properly support optional args (cjihrig)
|
||||
|
||||
* crypto: Disable autonegotiation for SSLv2/3 by default (Fedor Indutny,
|
||||
Timothy J Fontaine, Alexis Campailla)
|
||||
|
||||
This is a behavior change, by default we will not allow the negotiation to
|
||||
SSLv2 or SSLv3. If you want this behavior, run Node.js with either
|
||||
`--enable-ssl2` or `--enable-ssl3` respectively.
|
||||
|
||||
This does not change the behavior for users specifically requesting
|
||||
`SSLv2_method` or `SSLv3_method`. While this behavior is not advised, it is
|
||||
assumed you know what you're doing since you're specifically asking to use
|
||||
these methods.
|
||||
|
||||
|
||||
2014.09.16, Version 0.10.32 (Stable), 0fe0d121551593c23a565db8397f85f17bb0f00e
|
||||
|
||||
* npm: Update to 1.4.28
|
||||
|
||||
* v8: fix a crash introduced by previous release (Fedor Indutny)
|
||||
|
||||
* configure: add --openssl-no-asm flag (Fedor Indutny)
|
||||
|
||||
* crypto: use domains for any callback-taking method (Chris Dickinson)
|
||||
|
||||
* http: do not send `0\r\n\r\n` in TE HEAD responses (Fedor Indutny)
|
||||
|
||||
* querystring: fix unescape override (Tristan Berger)
|
||||
|
||||
* url: Add support for RFC 3490 separators (Mathias Bynens)
|
||||
|
||||
|
||||
2014.08.19, Version 0.10.31 (Stable), 7fabdc23d843cb705d2d0739e7bbdaaf50aa3292
|
||||
|
||||
* v8: backport CVE-2013-6668
|
||||
|
||||
* openssl: Update to v1.0.1i
|
||||
|
||||
* npm: Update to v1.4.23
|
||||
|
||||
* cluster: disconnect should not be synchronous (Sam Roberts)
|
||||
|
||||
* fs: fix fs.readFileSync fd leak when get RangeError (Jackson Tian)
|
||||
|
||||
* stream: fix Readable.wrap objectMode falsy values (James Halliday)
|
||||
|
||||
* timers: fix timers with non-integer delay hanging. (Julien Gilli)
|
||||
|
||||
|
||||
2014.07.31, Version 0.10.30 (Stable), bc0ff830aff1e016163d855e86ded5c98b0899e8
|
||||
|
||||
* uv: Upgrade to v0.10.28
|
||||
|
||||
* npm: Upgrade to v1.4.21
|
||||
|
||||
* v8: Interrupts must not mask stack overflow.
|
||||
|
||||
* Revert "stream: start old-mode read in a next tick" (Fedor Indutny)
|
||||
|
||||
* buffer: fix sign overflow in `readUIn32BE` (Fedor Indutny)
|
||||
|
||||
* buffer: improve {read,write}{U}Int* methods (Nick Apperson)
|
||||
|
||||
* child_process: handle writeUtf8String error (Fedor Indutny)
|
||||
|
||||
* deps: backport 4ed5fde4f from v8 upstream (Fedor Indutny)
|
||||
|
||||
*
|
||||
|
||||
* lib: remove and restructure calls to isNaN() (cjihrig)
|
||||
|
||||
* module: eliminate double `getenv()` (Maciej Małecki)
|
||||
|
||||
* stream2: flush extant data on read of ended stream (Chris Dickinson)
|
||||
|
||||
* streams: remove unused require('assert') (Rod Vagg)
|
||||
|
||||
* timers: backport f8193ab (Julien Gilli)
|
||||
|
||||
* util.h: interface compatibility (Oguz Bastemur)
|
||||
|
||||
* zlib: do not crash on write after close (Fedor Indutny)
|
||||
|
||||
|
||||
2014.06.05, Version 0.10.29 (Stable), ce82d6b8474bde7ac7df6d425fb88fb1bcba35bc
|
||||
|
||||
* openssl: to 1.0.1h (CVE-2014-0224)
|
||||
|
||||
* npm: upgrade to 1.4.14
|
||||
|
||||
* utf8: Prevent Node from sending invalid UTF-8 (Felix Geisendörfer)
|
||||
- *NOTE* this introduces a breaking change, previously you could construct
|
||||
invalid UTF-8 and invoke an error in a client that was expecting valid
|
||||
UTF-8, now unmatched surrogate pairs are replaced with the unknown UTF-8
|
||||
character. To restore the old functionality simply have NODE_INVALID_UTF8
|
||||
environment variable set.
|
||||
|
||||
* child_process: do not set args before throwing (Greg Sabia Tucker)
|
||||
|
||||
* child_process: spawn() does not throw TypeError (Greg Sabia Tucker)
|
||||
|
||||
* constants: export O_NONBLOCK (Fedor Indutny)
|
||||
|
||||
* crypto: improve memory usage (Alexis Campailla)
|
||||
|
||||
* fs: close file if fstat() fails in readFile() (cjihrig)
|
||||
|
||||
* lib: name EventEmitter prototype methods (Ben Noordhuis)
|
||||
|
||||
* tls: fix performance issue (Alexis Campailla)
|
||||
|
||||
|
||||
2014.05.01, Version 0.10.28 (Stable), b148cbe09d4657766fdb61575ba985734c2ff0a8
|
||||
|
||||
* npm: upgrade to v1.4.9
|
||||
|
||||
|
||||
2014.05.01, Version 0.10.27 (Stable), cb7911f78ae96ef7a540df992cc1359ba9636e86
|
||||
|
||||
* npm: upgrade to v1.4.8
|
||||
|
||||
* openssl: upgrade to 1.0.1g
|
||||
|
||||
* uv: update to v0.10.27
|
||||
|
||||
* dns: fix certain txt entries (Fedor Indutny)
|
||||
|
||||
* assert: Ensure reflexivity of deepEqual (Mike Pennisi)
|
||||
|
||||
* child_process: fix deadlock when sending handles (Fedor Indutny)
|
||||
|
||||
* child_process: fix sending handle twice (Fedor Indutny)
|
||||
|
||||
* crypto: do not lowercase cipher/hash names (Fedor Indutny)
|
||||
|
||||
* dtrace: workaround linker bug on FreeBSD (Fedor Indutny)
|
||||
|
||||
* http: do not emit EOF non-readable socket (Fedor Indutny)
|
||||
|
||||
* http: invoke createConnection when no agent (Nathan Rajlich)
|
||||
|
||||
* stream: remove useless check (Brian White)
|
||||
|
||||
* timer: don't reschedule timer bucket in a domain (Greg Brail)
|
||||
|
||||
* url: treat \ the same as / (isaacs)
|
||||
|
||||
* util: format as Error if instanceof Error (Rod Vagg)
|
||||
|
||||
|
||||
2014.02.18, Version 0.10.26 (Stable), cc56c62ed879ad4f93b1fdab3235c43e60f48b7e
|
||||
|
||||
* uv: Upgrade to v0.10.25 (Timothy J Fontaine)
|
||||
|
||||
* npm: upgrade to 1.4.3 (isaacs)
|
||||
|
||||
* v8: support compiling with VS2013 (Fedor Indutny)
|
||||
|
||||
* cares: backport TXT parsing fix (Fedor Indutny)
|
||||
|
||||
* crypto: throw on SignFinal failure (Fedor Indutny)
|
||||
|
||||
* crypto: update root certificates (Ben Noordhuis)
|
||||
|
||||
* debugger: Fix breakpoint not showing after restart (Farid Neshat)
|
||||
|
||||
* fs: make unwatchFile() insensitive to path (iamdoron)
|
||||
|
||||
* net: do not re-emit stream errors (Fedor Indutny)
|
||||
|
||||
* net: make Socket destroy() re-entrance safe (Jun Ma)
|
||||
|
||||
* net: reset `endEmitted` on reconnect (Fedor Indutny)
|
||||
|
||||
* node: do not close stdio implicitly (Fedor Indutny)
|
||||
|
||||
* zlib: avoid assertion in close (Fedor Indutny)
|
||||
|
||||
|
||||
2014.01.23, Version 0.10.25 (Stable), b0e5f195dfce3e2b99f5091373d49f6616682596
|
||||
|
||||
* uv: Upgrade to v0.10.23
|
||||
|
||||
* npm: Upgrade to v1.3.24
|
||||
|
||||
* v8: Fix enumeration for objects with lots of properties
|
||||
|
||||
* child_process: fix spawn() optional arguments (Sam Roberts)
|
||||
|
||||
* cluster: report more errors to workers (Fedor Indutny)
|
||||
|
||||
* domains: exit() only affects active domains (Ryan Graham)
|
||||
|
||||
* src: OnFatalError handler must abort() (Timothy J Fontaine)
|
||||
|
||||
* stream: writes may return false but forget to emit drain (Yang Tianyang)
|
||||
|
||||
|
||||
2013.12.18, Version 0.10.24 (Stable), b7fd6bc899ccb629d790c47aee06aba87e535c41
|
||||
|
||||
* uv: Upgrade to v0.10.21
|
||||
|
||||
* npm: upgrade to 1.3.21
|
||||
|
||||
* v8: backport fix for CVE-2013-{6639|6640}
|
||||
|
||||
* build: unix install node and dep library headers (Timothy J Fontaine)
|
||||
|
||||
* cluster, v8: fix --logfile=%p.log (Ben Noordhuis)
|
||||
|
||||
* module: only cache package main (Wyatt Preul)
|
||||
|
||||
|
||||
2013.12.12, Version 0.10.23 (Stable), 0462bc23564e7e950a70ae4577a840b04db6c7c6
|
||||
|
||||
* uv: Upgrade to v0.10.20 (Timothy J Fontaine)
|
||||
|
||||
* npm: Upgrade to 1.3.17 (isaacs)
|
||||
|
||||
* gyp: update to 78b26f7 (Timothy J Fontaine)
|
||||
|
||||
* build: include postmortem symbols on linux (Timothy J Fontaine)
|
||||
|
||||
* crypto: Make Decipher._flush() emit errors. (Kai Groner)
|
||||
|
||||
* dgram: fix abort when getting `fd` of closed dgram (Fedor Indutny)
|
||||
|
||||
* events: do not accept NaN in setMaxListeners (Fedor Indutny)
|
||||
|
||||
* events: avoid calling `once` functions twice (Tim Wood)
|
||||
|
||||
* events: fix TypeError in removeAllListeners (Jeremy Martin)
|
||||
|
||||
* fs: report correct path when EEXIST (Fedor Indutny)
|
||||
|
||||
* process: enforce allowed signals for kill (Sam Roberts)
|
||||
|
||||
* tls: emit 'end' on .receivedShutdown (Fedor Indutny)
|
||||
|
||||
* tls: fix potential data corruption (Fedor Indutny)
|
||||
|
||||
* tls: handle `ssl.start()` errors appropriately (Fedor Indutny)
|
||||
|
||||
* tls: reset NPN callbacks after SNI (Fedor Indutny)
|
||||
|
||||
|
||||
2013.11.12, Version 0.10.22 (Stable), cbff8f091c22fb1df6b238c7a1b9145db950fa65
|
||||
|
||||
* npm: Upgrade to 1.3.14
|
||||
|
||||
* uv: Upgrade to v0.10.19
|
||||
|
||||
* child_process: don't assert on stale file descriptor events (Fedor Indutny)
|
||||
|
||||
* darwin: Fix "Not Responding" in Mavericks activity monitor (Fedor Indutny)
|
||||
|
||||
* debugger: Fix bug in sb() with unnamed script (Maxim Bogushevich)
|
||||
|
||||
* repl: do not insert duplicates into completions (Maciej Małecki)
|
||||
|
||||
* src: Fix memory leak on closed handles (Timothy J Fontaine)
|
||||
|
||||
* tls: prevent stalls by using read(0) (Fedor Indutny)
|
||||
|
||||
* v8: use correct timezone information on Solaris (Maciej Małecki)
|
||||
|
||||
|
||||
2013.10.18, Version 0.10.21 (Stable), e2da042844a830fafb8031f6c477eb4f96195210
|
||||
|
||||
* uv: Upgrade to v0.10.18
|
||||
|
||||
* crypto: clear errors from verify failure (Timothy J Fontaine)
|
||||
|
||||
* dtrace: interpret two byte strings (Dave Pacheco)
|
||||
|
||||
* fs: fix fs.truncate() file content zeroing bug (Ben Noordhuis)
|
||||
|
||||
* http: provide backpressure for pipeline flood (isaacs)
|
||||
|
||||
* tls: fix premature connection termination (Ben Noordhuis)
|
||||
|
||||
|
||||
2013.09.30, Version 0.10.20 (Stable), d7234c8d50a1af73f60d2d3c0cc7eed17429a481
|
||||
|
||||
* tls: fix sporadic hang and partial reads (Fedor Indutny)
|
||||
- fixes "npm ERR! cb() never called!"
|
||||
|
||||
|
||||
2013.09.24, Version 0.10.19 (Stable), 6b5e6a5a3ec8d994c9aab3b800b9edbf1b287904
|
||||
|
||||
* uv: Upgrade to v0.10.17
|
||||
|
||||
* npm: upgrade to 1.3.11
|
||||
|
||||
* readline: handle input starting with control chars (Eric Schrock)
|
||||
|
||||
* configure: add mips-float-abi (soft, hard) option (Andrei Sedoi)
|
||||
|
||||
* stream: objectMode transforms allow falsey values (isaacs)
|
||||
|
||||
* tls: prevent duplicate values returned from read (Nathan Rajlich)
|
||||
|
||||
* tls: NPN protocols are now local to connections (Fedor Indutny)
|
||||
|
||||
|
||||
2013.09.04, Version 0.10.18 (Stable), 67a1f0c52e0708e2596f3f2134b8386d6112561e
|
||||
|
||||
* uv: Upgrade to v0.10.15
|
||||
|
||||
* stream: Don't crash on unset _events property (isaacs)
|
||||
|
||||
* stream: Pass 'buffer' encoding with decoded writable chunks (isaacs)
|
||||
|
||||
|
||||
2013.08.21, Version 0.10.17 (Stable), 469a4a5091a677df62be319675056b869c31b35c
|
||||
|
||||
* uv: Upgrade v0.10.14
|
||||
|
||||
* http_parser: Do not accept PUN/GEM methods as PUT/GET (Chris Dickinson)
|
||||
|
||||
* tls: fix assertion when ssl is destroyed at read (Fedor Indutny)
|
||||
|
||||
* stream: Throw on 'error' if listeners removed (isaacs)
|
||||
|
||||
* dgram: fix assertion on bad send() arguments (Ben Noordhuis)
|
||||
|
||||
* readline: pause stdin before turning off terminal raw mode (Daniel Chatfield)
|
||||
|
||||
|
||||
2013.08.16, Version 0.10.16 (Stable), 50b4c905a4425430ae54db4906f88982309e128d
|
||||
|
||||
* v8: back-port fix for CVE-2013-2882
|
||||
|
||||
* npm: Upgrade to 1.3.8
|
||||
|
||||
* crypto: fix assert() on malformed hex input (Ben Noordhuis)
|
||||
|
||||
* crypto: fix memory leak in randomBytes() error path (Ben Noordhuis)
|
||||
|
||||
* events: fix memory leak, don't leak event names (Ben Noordhuis)
|
||||
|
||||
* http: Handle hex/base64 encodings properly (isaacs)
|
||||
|
||||
* http: improve chunked res.write(buf) performance (Ben Noordhuis)
|
||||
|
||||
* stream: Fix double pipe error emit (Eran Hammer)
|
||||
|
||||
|
||||
2013.07.25, Version 0.10.15 (Stable)
|
||||
|
||||
* src: fix process.getuid() return value (Ben Noordhuis)
|
||||
|
||||
|
||||
2013.07.25, Version 0.10.14 (Stable), fdf57f811f9683a4ec49a74dc7226517e32e6c9d
|
||||
|
||||
* uv: Upgrade to v0.10.13
|
||||
|
||||
* npm: Upgrade to v1.3.5
|
||||
|
||||
* os: Don't report negative times in cpu info (Ben Noordhuis)
|
||||
|
||||
* fs: Handle large UID and GID (Ben Noordhuis)
|
||||
|
||||
* url: Fix edge-case when protocol is non-lowercase (Shuan Wang)
|
||||
|
||||
* doc: Streams API Doc Rewrite (isaacs)
|
||||
|
||||
* node: call MakeDomainCallback in all domain cases (Trevor Norris)
|
||||
|
||||
* crypto: fix memory leak in LoadPKCS12 (Fedor Indutny)
|
||||
|
||||
|
||||
2013.07.09, Version 0.10.13 (Stable), e32660a984427d46af6a144983cf7b8045b7299c
|
||||
|
||||
* uv: Upgrade to v0.10.12
|
||||
|
||||
* npm: Upgrade to 1.3.2
|
||||
|
||||
* windows: get proper errno (Ben Noordhuis)
|
||||
|
||||
* tls: only wait for finish if we haven't seen it (Timothy J Fontaine)
|
||||
|
||||
* http: Dump response when request is aborted (isaacs)
|
||||
|
||||
* http: use an unref'd timer to fix delay in exit (Peter Rust)
|
||||
|
||||
* zlib: level can be negative (Brian White)
|
||||
|
||||
* zlib: allow zero values for level and strategy (Brian White)
|
||||
|
||||
* buffer: add comment explaining buffer alignment (Ben Noordhuis)
|
||||
|
||||
* string_bytes: properly detect 64bit (Timothy J Fontaine)
|
||||
|
||||
* src: fix memory leak in UsingDomains() (Ben Noordhuis)
|
||||
|
||||
|
||||
2013.06.18, Version 0.10.12 (Stable), a088cf4f930d3928c97d239adf950ab43e7794aa
|
||||
@@ -127,6 +494,7 @@
|
||||
* net: Fix busy loop on POLLERR|POLLHUP on older linux kernels (Ben Noordhuis, isaacs)
|
||||
|
||||
|
||||
|
||||
2013.06.04, Version 0.10.10 (Stable), 25e51c396aa23018603baae2b1d9390f5d9db496
|
||||
|
||||
* uv: Upgrade to 0.10.10
|
||||
@@ -223,8 +591,6 @@
|
||||
* stream: Fix unshift() race conditions (isaacs)
|
||||
|
||||
|
||||
|
||||
|
||||
2013.04.11, Version 0.10.4 (Stable), 9712aa9f76073c30850b20a188b1ed12ffb74d17
|
||||
|
||||
* uv: Upgrade to 0.10.4
|
||||
@@ -283,7 +649,7 @@
|
||||
* src: tie process.versions.uv to uv_version_string() (Ben Noordhuis)
|
||||
|
||||
|
||||
2013.03.28, Version 0.10.2 (Stable), 1e0de9c426e07a260bbec2d2196c2d2db8eb8886
|
||||
2013.03.28, Version 0.10.2 (Stable)
|
||||
|
||||
* npm: Upgrade to 1.2.15
|
||||
|
||||
|
||||
302
LICENSE
302
LICENSE
@@ -294,9 +294,9 @@ maintained libraries. The externally maintained libraries used by Node are:
|
||||
- Zlib at deps/zlib. zlib's license follows:
|
||||
"""
|
||||
/* zlib.h -- interface of the 'zlib' general purpose compression library
|
||||
version 1.2.4, March 14th, 2010
|
||||
version 1.2.8, April 28th, 2013
|
||||
|
||||
Copyright (C) 1995-2010 Jean-loup Gailly and Mark Adler
|
||||
Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
@@ -314,79 +314,249 @@ maintained libraries. The externally maintained libraries used by Node are:
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
|
||||
Jean-loup Gailly
|
||||
Mark Adler
|
||||
|
||||
Jean-loup Gailly Mark Adler
|
||||
jloup@gzip.org madler@alumni.caltech.edu
|
||||
*/
|
||||
"""
|
||||
|
||||
- npm is a package manager program located at deps/npm.
|
||||
npm's license follows:
|
||||
"""
|
||||
Copyright 2009-2012, Isaac Z. Schlueter (the "Original Author")
|
||||
Copyright (c) Isaac Z. Schlueter
|
||||
All rights reserved.
|
||||
|
||||
MIT +no-false-attribs License
|
||||
|
||||
Permission is hereby granted, free of charge, to any person
|
||||
obtaining a copy of this software and associated documentation
|
||||
files (the "Software"), to deal in the Software without
|
||||
restriction, including without limitation the rights to use,
|
||||
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following
|
||||
conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
Distributions of all or part of the Software intended to be used
|
||||
by the recipients as they would use the unmodified Software,
|
||||
containing modifications that substantially alter, remove, or
|
||||
disable functionality of the Software, outside of the documented
|
||||
configuration mechanisms provided by the Software, shall be
|
||||
modified such that the Original Author's bug reporting email
|
||||
addresses and urls are either replaced with the contact information
|
||||
of the parties responsible for the changes, or removed entirely.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
OTHER DEALINGS IN THE SOFTWARE.
|
||||
npm is released under the Artistic 2.0 License.
|
||||
The text of the License follows:
|
||||
|
||||
|
||||
Except where noted, this license applies to any and all software
|
||||
programs and associated documentation files created by the
|
||||
Original Author, when distributed with the Software.
|
||||
--------
|
||||
|
||||
|
||||
The Artistic License 2.0
|
||||
|
||||
Copyright (c) 2000-2006, The Perl Foundation.
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
This license establishes the terms under which a given free software
|
||||
Package may be copied, modified, distributed, and/or redistributed.
|
||||
The intent is that the Copyright Holder maintains some artistic
|
||||
control over the development of that Package while still keeping the
|
||||
Package available as open source and free software.
|
||||
|
||||
You are always permitted to make arrangements wholly outside of this
|
||||
license directly with the Copyright Holder of a given Package. If the
|
||||
terms of this license do not permit the full use that you propose to
|
||||
make of the Package, you should contact the Copyright Holder and seek
|
||||
a different licensing arrangement.
|
||||
|
||||
Definitions
|
||||
|
||||
"Copyright Holder" means the individual(s) or organization(s)
|
||||
named in the copyright notice for the entire Package.
|
||||
|
||||
"Contributor" means any party that has contributed code or other
|
||||
material to the Package, in accordance with the Copyright Holder's
|
||||
procedures.
|
||||
|
||||
"You" and "your" means any person who would like to copy,
|
||||
distribute, or modify the Package.
|
||||
|
||||
"Package" means the collection of files distributed by the
|
||||
Copyright Holder, and derivatives of that collection and/or of
|
||||
those files. A given Package may consist of either the Standard
|
||||
Version, or a Modified Version.
|
||||
|
||||
"Distribute" means providing a copy of the Package or making it
|
||||
accessible to anyone else, or in the case of a company or
|
||||
organization, to others outside of your company or organization.
|
||||
|
||||
"Distributor Fee" means any fee that you charge for Distributing
|
||||
this Package or providing support for this Package to another
|
||||
party. It does not mean licensing fees.
|
||||
|
||||
"Standard Version" refers to the Package if it has not been
|
||||
modified, or has been modified only in ways explicitly requested
|
||||
by the Copyright Holder.
|
||||
|
||||
"Modified Version" means the Package, if it has been changed, and
|
||||
such changes were not explicitly requested by the Copyright
|
||||
Holder.
|
||||
|
||||
"Original License" means this Artistic License as Distributed with
|
||||
the Standard Version of the Package, in its current version or as
|
||||
it may be modified by The Perl Foundation in the future.
|
||||
|
||||
"Source" form means the source code, documentation source, and
|
||||
configuration files for the Package.
|
||||
|
||||
"Compiled" form means the compiled bytecode, object code, binary,
|
||||
or any other form resulting from mechanical transformation or
|
||||
translation of the Source form.
|
||||
|
||||
|
||||
Permission for Use and Modification Without Distribution
|
||||
|
||||
(1) You are permitted to use the Standard Version and create and use
|
||||
Modified Versions for any purpose without restriction, provided that
|
||||
you do not Distribute the Modified Version.
|
||||
|
||||
|
||||
Permissions for Redistribution of the Standard Version
|
||||
|
||||
(2) You may Distribute verbatim copies of the Source form of the
|
||||
Standard Version of this Package in any medium without restriction,
|
||||
either gratis or for a Distributor Fee, provided that you duplicate
|
||||
all of the original copyright notices and associated disclaimers. At
|
||||
your discretion, such verbatim copies may or may not include a
|
||||
Compiled form of the Package.
|
||||
|
||||
(3) You may apply any bug fixes, portability changes, and other
|
||||
modifications made available from the Copyright Holder. The resulting
|
||||
Package will still be considered the Standard Version, and as such
|
||||
will be subject to the Original License.
|
||||
|
||||
|
||||
Distribution of Modified Versions of the Package as Source
|
||||
|
||||
(4) You may Distribute your Modified Version as Source (either gratis
|
||||
or for a Distributor Fee, and with or without a Compiled form of the
|
||||
Modified Version) provided that you clearly document how it differs
|
||||
from the Standard Version, including, but not limited to, documenting
|
||||
any non-standard features, executables, or modules, and provided that
|
||||
you do at least ONE of the following:
|
||||
|
||||
(a) make the Modified Version available to the Copyright Holder
|
||||
of the Standard Version, under the Original License, so that the
|
||||
Copyright Holder may include your modifications in the Standard
|
||||
Version.
|
||||
|
||||
(b) ensure that installation of your Modified Version does not
|
||||
prevent the user installing or running the Standard Version. In
|
||||
addition, the Modified Version must bear a name that is different
|
||||
from the name of the Standard Version.
|
||||
|
||||
(c) allow anyone who receives a copy of the Modified Version to
|
||||
make the Source form of the Modified Version available to others
|
||||
under
|
||||
|
||||
(i) the Original License or
|
||||
|
||||
(ii) a license that permits the licensee to freely copy,
|
||||
modify and redistribute the Modified Version using the same
|
||||
licensing terms that apply to the copy that the licensee
|
||||
received, and requires that the Source form of the Modified
|
||||
Version, and of any works derived from it, be made freely
|
||||
available in that license fees are prohibited but Distributor
|
||||
Fees are allowed.
|
||||
|
||||
|
||||
Distribution of Compiled Forms of the Standard Version
|
||||
or Modified Versions without the Source
|
||||
|
||||
(5) You may Distribute Compiled forms of the Standard Version without
|
||||
the Source, provided that you include complete instructions on how to
|
||||
get the Source of the Standard Version. Such instructions must be
|
||||
valid at the time of your distribution. If these instructions, at any
|
||||
time while you are carrying out such distribution, become invalid, you
|
||||
must provide new instructions on demand or cease further distribution.
|
||||
If you provide valid instructions or cease distribution within thirty
|
||||
days after you become aware that the instructions are invalid, then
|
||||
you do not forfeit any of your rights under this license.
|
||||
|
||||
(6) You may Distribute a Modified Version in Compiled form without
|
||||
the Source, provided that you comply with Section 4 with respect to
|
||||
the Source of the Modified Version.
|
||||
|
||||
|
||||
Aggregating or Linking the Package
|
||||
|
||||
(7) You may aggregate the Package (either the Standard Version or
|
||||
Modified Version) with other packages and Distribute the resulting
|
||||
aggregation provided that you do not charge a licensing fee for the
|
||||
Package. Distributor Fees are permitted, and licensing fees for other
|
||||
components in the aggregation are permitted. The terms of this license
|
||||
apply to the use and Distribution of the Standard or Modified Versions
|
||||
as included in the aggregation.
|
||||
|
||||
(8) You are permitted to link Modified and Standard Versions with
|
||||
other works, to embed the Package in a larger work of your own, or to
|
||||
build stand-alone binary or bytecode versions of applications that
|
||||
include the Package, and Distribute the result without restriction,
|
||||
provided the result does not expose a direct interface to the Package.
|
||||
|
||||
|
||||
Items That are Not Considered Part of a Modified Version
|
||||
|
||||
(9) Works (including, but not limited to, modules and scripts) that
|
||||
merely extend or make use of the Package, do not, by themselves, cause
|
||||
the Package to be a Modified Version. In addition, such works are not
|
||||
considered parts of the Package itself, and are not subject to the
|
||||
terms of this license.
|
||||
|
||||
|
||||
General Provisions
|
||||
|
||||
(10) Any use, modification, and distribution of the Standard or
|
||||
Modified Versions is governed by this Artistic License. By using,
|
||||
modifying or distributing the Package, you accept this license. Do not
|
||||
use, modify, or distribute the Package, if you do not accept this
|
||||
license.
|
||||
|
||||
(11) If your Modified Version has been derived from a Modified
|
||||
Version made by someone other than you, you are nevertheless required
|
||||
to ensure that your Modified Version complies with the requirements of
|
||||
this license.
|
||||
|
||||
(12) This license does not grant you the right to use any trademark,
|
||||
service mark, tradename, or logo of the Copyright Holder.
|
||||
|
||||
(13) This license includes the non-exclusive, worldwide,
|
||||
free-of-charge patent license to make, have made, use, offer to sell,
|
||||
sell, import and otherwise transfer the Package with respect to any
|
||||
patent claims licensable by the Copyright Holder that are necessarily
|
||||
infringed by the Package. If you institute patent litigation
|
||||
(including a cross-claim or counterclaim) against any party alleging
|
||||
that the Package constitutes direct or contributory patent
|
||||
infringement, then this Artistic License to you shall terminate on the
|
||||
date that such litigation is filed.
|
||||
|
||||
(14) Disclaimer of Warranty:
|
||||
THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS
|
||||
IS' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
|
||||
NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL
|
||||
LAW. UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL
|
||||
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THE PACKAGE, EVEN IF
|
||||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
|
||||
--------
|
||||
|
||||
|
||||
"Node.js" and "node" trademark Joyent, Inc. npm is not officially
|
||||
part of the Node.js project, and is neither owned by nor
|
||||
officially affiliated with Joyent, Inc.
|
||||
|
||||
Packages published in the npm registry are not part of npm
|
||||
itself, are the sole property of their respective maintainers,
|
||||
and are not covered by this license.
|
||||
Packages published in the npm registry (other than the Software and
|
||||
its included dependencies) are not part of npm itself, are the sole
|
||||
property of their respective maintainers, and are not covered by
|
||||
this license.
|
||||
|
||||
"npm Logo" created by Mathias Pettersson and Brian Hammond,
|
||||
used with permission.
|
||||
|
||||
"Gubblebum Blocky" font
|
||||
Copyright (c) 2007 by Tjarda Koster, http://jelloween.deviantart.com
|
||||
Copyright (c) by Tjarda Koster, http://jelloween.deviantart.com
|
||||
included for use in the npm website and documentation,
|
||||
used with permission.
|
||||
|
||||
This program uses "node-uuid", Copyright (c) 2010 Robert Kieffer,
|
||||
according to the terms of the MIT license.
|
||||
|
||||
This program uses "request", Copyright (c) 2011 Mikeal Rogers,
|
||||
according to the terms of the Apache license.
|
||||
|
||||
This program uses "mkdirp", Copyright (c) 2010 James Halliday,
|
||||
according to the terms of the MIT/X11 license.
|
||||
This program uses several Node modules contained in the node_modules/
|
||||
subdirectory, according to the terms of their respective licenses.
|
||||
"""
|
||||
|
||||
- tools/doc/node_modules/marked. Marked is a Markdown parser. Marked's
|
||||
@@ -431,6 +601,34 @@ maintained libraries. The externally maintained libraries used by Node are:
|
||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
"""
|
||||
|
||||
- src/ngx-queue.h. ngx-queue.h is taken from the nginx source tree. nginx's
|
||||
license follows:
|
||||
"""
|
||||
Copyright (C) 2002-2012 Igor Sysoev
|
||||
Copyright (C) 2011,2012 Nginx, Inc.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGE.
|
||||
"""
|
||||
|
||||
- wrk is located at tools/wrk. wrk's license follows:
|
||||
"""
|
||||
|
||||
|
||||
74
Makefile
74
Makefile
@@ -5,7 +5,6 @@ PYTHON ?= python
|
||||
NINJA ?= ninja
|
||||
DESTDIR ?=
|
||||
SIGN ?=
|
||||
PREFIX ?= /usr/local
|
||||
|
||||
NODE ?= ./node
|
||||
|
||||
@@ -47,19 +46,19 @@ endif
|
||||
out/Makefile: common.gypi deps/uv/uv.gyp deps/http_parser/http_parser.gyp deps/zlib/zlib.gyp deps/v8/build/common.gypi deps/v8/tools/gyp/v8.gyp node.gyp config.gypi
|
||||
ifeq ($(USE_NINJA),1)
|
||||
touch out/Makefile
|
||||
$(PYTHON) tools/gyp_node -f ninja
|
||||
$(PYTHON) tools/gyp_node.py -f ninja
|
||||
else
|
||||
$(PYTHON) tools/gyp_node -f make
|
||||
$(PYTHON) tools/gyp_node.py -f make
|
||||
endif
|
||||
|
||||
config.gypi: configure
|
||||
$(PYTHON) ./configure
|
||||
|
||||
install: all
|
||||
$(PYTHON) tools/install.py $@ '$(DESTDIR)' '$(PREFIX)'
|
||||
$(PYTHON) tools/install.py $@ $(DESTDIR)
|
||||
|
||||
uninstall:
|
||||
$(PYTHON) tools/install.py $@ '$(DESTDIR)' '$(PREFIX)'
|
||||
$(PYTHON) tools/install.py $@ $(DESTDIR)
|
||||
|
||||
clean:
|
||||
-rm -rf out/Makefile node node_g out/$(BUILDTYPE)/node blog.html email.md
|
||||
@@ -83,16 +82,16 @@ test-http1: all
|
||||
test-valgrind: all
|
||||
$(PYTHON) tools/test.py --mode=release --valgrind simple message
|
||||
|
||||
test/gc/node_modules/weak/build:
|
||||
test/gc/node_modules/weak/build/Release/weakref.node:
|
||||
@if [ ! -f node ]; then make all; fi
|
||||
./node deps/npm/node_modules/node-gyp/bin/node-gyp rebuild \
|
||||
--directory="$(shell pwd)/test/gc/node_modules/weak" \
|
||||
--nodedir="$(shell pwd)"
|
||||
|
||||
test-gc: all test/gc/node_modules/weak/build
|
||||
test-gc: all test/gc/node_modules/weak/build/Release/weakref.node
|
||||
$(PYTHON) tools/test.py --mode=release gc
|
||||
|
||||
test-all: all test/gc/node_modules/weak/build
|
||||
test-all: all test/gc/node_modules/weak/build/Release/weakref.node
|
||||
$(PYTHON) tools/test.py --mode=debug,release
|
||||
make test-npm
|
||||
|
||||
@@ -126,40 +125,29 @@ test-npm: node
|
||||
test-npm-publish: node
|
||||
npm_package_config_publishtest=true ./node deps/npm/test/run.js
|
||||
|
||||
test-timers:
|
||||
$(MAKE) --directory=tools faketime
|
||||
$(PYTHON) tools/test.py --mode=release timers
|
||||
|
||||
test-timers-clean:
|
||||
$(MAKE) --directory=tools clean
|
||||
|
||||
apidoc_sources = $(wildcard doc/api/*.markdown)
|
||||
apidocs = $(addprefix out/,$(apidoc_sources:.markdown=.html)) \
|
||||
$(addprefix out/,$(apidoc_sources:.markdown=.json))
|
||||
|
||||
apidoc_dirs = out/doc out/doc/api/ out/doc/api/assets out/doc/about out/doc/community out/doc/download out/doc/logos out/doc/images
|
||||
apidoc_dirs = out/doc out/doc/api/ out/doc/api/assets
|
||||
|
||||
apiassets = $(subst api_assets,api/assets,$(addprefix out/,$(wildcard doc/api_assets/*)))
|
||||
|
||||
doc_images = $(addprefix out/,$(wildcard doc/images/* doc/*.jpg doc/*.png))
|
||||
|
||||
website_files = \
|
||||
out/doc/index.html \
|
||||
out/doc/v0.4_announcement.html \
|
||||
out/doc/cla.html \
|
||||
out/doc/sh_main.js \
|
||||
out/doc/sh_javascript.min.js \
|
||||
out/doc/sh_vim-dark.css \
|
||||
out/doc/sh.css \
|
||||
out/doc/favicon.ico \
|
||||
out/doc/pipe.css \
|
||||
out/doc/about/index.html \
|
||||
out/doc/community/index.html \
|
||||
out/doc/download/index.html \
|
||||
out/doc/logos/index.html \
|
||||
out/doc/changelog.html \
|
||||
$(doc_images)
|
||||
out/doc/sh_javascript.min.js
|
||||
|
||||
doc: $(apidoc_dirs) $(website_files) $(apiassets) $(apidocs) tools/doc/ blog node
|
||||
doc: $(apidoc_dirs) $(website_files) $(apiassets) $(apidocs) tools/doc/ out/doc/changelog.html node
|
||||
|
||||
blogclean:
|
||||
rm -rf out/blog
|
||||
|
||||
blog: doc/blog out/Release/node tools/blog
|
||||
out/Release/node tools/blog/generate.js doc/blog/ out/blog/ doc/blog.html doc/rss.xml
|
||||
doc-branch: NODE_DOC_VERSION = v$(shell $(PYTHON) tools/getnodeversion.py | cut -f1,2 -d.)
|
||||
doc-branch: doc
|
||||
|
||||
$(apidoc_dirs):
|
||||
mkdir -p $@
|
||||
@@ -170,17 +158,14 @@ out/doc/api/assets/%: doc/api_assets/% out/doc/api/assets/
|
||||
out/doc/changelog.html: ChangeLog doc/changelog-head.html doc/changelog-foot.html tools/build-changelog.sh node
|
||||
bash tools/build-changelog.sh
|
||||
|
||||
out/doc/%.html: doc/%.html node
|
||||
cat $< | sed -e 's|__VERSION__|'$(VERSION)'|g' > $@
|
||||
|
||||
out/doc/%: doc/%
|
||||
cp -r $< $@
|
||||
|
||||
out/doc/api/%.json: doc/api/%.markdown node
|
||||
out/Release/node tools/doc/generate.js --format=json $< > $@
|
||||
NODE_DOC_VERSION=$(NODE_DOC_VERSION) out/Release/node tools/doc/generate.js --format=json $< > $@
|
||||
|
||||
out/doc/api/%.html: doc/api/%.markdown node
|
||||
out/Release/node tools/doc/generate.js --format=html --template=doc/template.html $< > $@
|
||||
NODE_DOC_VERSION=$(NODE_DOC_VERSION) out/Release/node tools/doc/generate.js --format=html --template=doc/template.html $< > $@
|
||||
|
||||
email.md: ChangeLog tools/email-footer.md
|
||||
bash tools/changelog-head.sh | sed 's|^\* #|* \\#|g' > $@
|
||||
@@ -189,9 +174,6 @@ email.md: ChangeLog tools/email-footer.md
|
||||
blog.html: email.md
|
||||
cat $< | ./node tools/doc/node_modules/.bin/marked > $@
|
||||
|
||||
blog-upload: blog
|
||||
rsync -r out/blog/ node@nodejs.org:~/web/nodejs.org/blog/
|
||||
|
||||
website-upload: doc
|
||||
rsync -r out/doc/ node@nodejs.org:~/web/nodejs.org/
|
||||
ssh node@nodejs.org '\
|
||||
@@ -202,6 +184,11 @@ website-upload: doc
|
||||
rm -f ~/web/nodejs.org/dist/node-latest.tar.gz &&\
|
||||
ln -s $(VERSION)/node-$(VERSION).tar.gz ~/web/nodejs.org/dist/node-latest.tar.gz'
|
||||
|
||||
doc-branch-upload: NODE_DOC_VERSION = v$(shell $(PYTHON) tools/getnodeversion.py | cut -f1,2 -d.)
|
||||
doc-branch-upload: doc-branch
|
||||
echo $(NODE_DOC_VERSION)
|
||||
rsync -r out/doc/api/ node@nodejs.org:~/web/nodejs.org/$(NODE_DOC_VERSION)
|
||||
|
||||
docopen: out/doc/api/all.html
|
||||
-google-chrome out/doc/api/all.html
|
||||
|
||||
@@ -210,6 +197,7 @@ docclean:
|
||||
|
||||
RAWVER=$(shell $(PYTHON) tools/getnodeversion.py)
|
||||
VERSION=v$(RAWVER)
|
||||
NODE_DOC_VERSION=$(VERSION)
|
||||
RELEASE=$(shell $(PYTHON) tools/getnodeisrelease.py)
|
||||
PLATFORM=$(shell uname | tr '[:upper:]' '[:lower:]')
|
||||
ifeq ($(findstring x86_64,$(shell uname -m)),x86_64)
|
||||
@@ -235,7 +223,7 @@ TARBALL=$(TARNAME).tar.gz
|
||||
BINARYNAME=$(TARNAME)-$(PLATFORM)-$(ARCH)
|
||||
BINARYTAR=$(BINARYNAME).tar.gz
|
||||
PKG=out/$(TARNAME).pkg
|
||||
packagemaker=/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker
|
||||
PACKAGEMAKER ?= /Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker
|
||||
|
||||
PKGSRC=nodejs-$(DESTCPU)-$(RAWVER).tgz
|
||||
ifdef NIGHTLY
|
||||
@@ -278,18 +266,18 @@ $(PKG): release-only
|
||||
rm -rf out/deps out/Release
|
||||
$(PYTHON) ./configure --without-snapshot --dest-cpu=x64 --tag=$(TAG)
|
||||
$(MAKE) install V=$(V) DESTDIR=$(PKGDIR)
|
||||
SIGN="$(SIGN)" PKGDIR="$(PKGDIR)" bash tools/osx-codesign.sh
|
||||
SIGN="$(APP_SIGN)" PKGDIR="$(PKGDIR)" bash tools/osx-codesign.sh
|
||||
lipo $(PKGDIR)/32/usr/local/bin/node \
|
||||
$(PKGDIR)/usr/local/bin/node \
|
||||
-output $(PKGDIR)/usr/local/bin/node-universal \
|
||||
-create
|
||||
mv $(PKGDIR)/usr/local/bin/node-universal $(PKGDIR)/usr/local/bin/node
|
||||
rm -rf $(PKGDIR)/32
|
||||
$(packagemaker) \
|
||||
$(PACKAGEMAKER) \
|
||||
--id "org.nodejs.Node" \
|
||||
--doc tools/osx-pkg.pmdoc \
|
||||
--out $(PKG)
|
||||
SIGN="$(SIGN)" PKG="$(PKG)" bash tools/osx-productsign.sh
|
||||
SIGN="$(INT_SIGN)" PKG="$(PKG)" bash tools/osx-productsign.sh
|
||||
|
||||
$(TARBALL): release-only node doc
|
||||
git archive --format=tar --prefix=$(TARNAME)/ HEAD | tar xf -
|
||||
|
||||
15
README.md
15
README.md
@@ -28,6 +28,19 @@ Windows:
|
||||
|
||||
vcbuild.bat
|
||||
|
||||
You can download pre-built binaries for various operating systems from
|
||||
[http://nodejs.org/download/](http://nodejs.org/download/). The Windows
|
||||
and OS X installers will prompt you for the location to install to.
|
||||
The tarballs are self-contained; you can extract them to a local directory
|
||||
with:
|
||||
|
||||
tar xzf /path/to/node-<version>-<platform>-<arch>.tar.gz
|
||||
|
||||
Or system-wide with:
|
||||
|
||||
cd /usr/local && tar --strip-components 1 -xzf \
|
||||
/path/to/node-<version>-<platform>-<arch>.tar.gz
|
||||
|
||||
### To run the tests:
|
||||
|
||||
Unix/Macintosh:
|
||||
@@ -50,7 +63,7 @@ Resources for Newcomers
|
||||
---
|
||||
- [The Wiki](https://github.com/joyent/node/wiki)
|
||||
- [nodejs.org](http://nodejs.org/)
|
||||
- [how to install node.js and npm (node package manager)](http://joyeur.com/2010/12/10/installing-node-and-npm/)
|
||||
- [how to install node.js and npm (node package manager)](http://www.joyent.com/blog/installing-node-and-npm/)
|
||||
- [list of modules](https://github.com/joyent/node/wiki/modules)
|
||||
- [searching the npm registry](http://npmjs.org/)
|
||||
- [list of companies and projects using node](https://github.com/joyent/node/wiki/Projects,-Applications,-and-Companies-Using-Node)
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
export TOOLCHAIN=$PWD/android-toolchain
|
||||
mkdir -p $TOOLCHAIN
|
||||
$1/build/tools/make-standalone-toolchain.sh \
|
||||
--toolchain=arm-linux-androideabi-4.7 \
|
||||
--arch=arm \
|
||||
--install-dir=$TOOLCHAIN \
|
||||
--platform=android-9
|
||||
export PATH=$TOOLCHAIN/bin:$PATH
|
||||
export AR=arm-linux-androideabi-ar
|
||||
export CC=arm-linux-androideabi-gcc
|
||||
export CXX=arm-linux-androideabi-g++
|
||||
export LINK=arm-linux-androideabi-g++
|
||||
|
||||
./configure \
|
||||
--without-snapshot \
|
||||
--dest-cpu=arm \
|
||||
--dest-os=android
|
||||
@@ -20,9 +20,12 @@ function main(conf) {
|
||||
var fn = 'read' + conf.type;
|
||||
|
||||
buff.writeDoubleLE(0, 0, noAssert);
|
||||
var testFunction = new Function('buff', [
|
||||
"for (var i = 0; i !== " + len + "; i++) {",
|
||||
" buff." + fn + "(0, " + JSON.stringify(noAssert) + ");",
|
||||
"}"
|
||||
].join("\n"));
|
||||
bench.start();
|
||||
for (var i = 0; i < len; i++) {
|
||||
buff[fn](0, noAssert);
|
||||
}
|
||||
testFunction(buff);
|
||||
bench.end(len / 1e6);
|
||||
}
|
||||
|
||||
@@ -15,9 +15,9 @@ var bench = common.createBenchmark(main, {
|
||||
const INT8 = 0x7f;
|
||||
const INT16 = 0x7fff;
|
||||
const INT32 = 0x7fffffff;
|
||||
const UINT8 = INT8 * 2;
|
||||
const UINT16 = INT16 * 2;
|
||||
const UINT32 = INT32 * 2;
|
||||
const UINT8 = (INT8 * 2) + 1;
|
||||
const UINT16 = (INT16 * 2) + 1;
|
||||
const UINT32 = INT32;
|
||||
|
||||
var mod = {
|
||||
writeInt8: INT8,
|
||||
@@ -47,17 +47,23 @@ function main(conf) {
|
||||
|
||||
function benchInt(buff, fn, len, noAssert) {
|
||||
var m = mod[fn];
|
||||
var testFunction = new Function('buff', [
|
||||
"for (var i = 0; i !== " + len + "; i++) {",
|
||||
" buff." + fn + "(i & " + m + ", 0, " + JSON.stringify(noAssert) + ");",
|
||||
"}"
|
||||
].join("\n"));
|
||||
bench.start();
|
||||
for (var i = 0; i < len; i++) {
|
||||
buff[fn](i % m, 0, noAssert);
|
||||
}
|
||||
testFunction(buff);
|
||||
bench.end(len / 1e6);
|
||||
}
|
||||
|
||||
function benchFloat(buff, fn, len, noAssert) {
|
||||
var testFunction = new Function('buff', [
|
||||
"for (var i = 0; i !== " + len + "; i++) {",
|
||||
" buff." + fn + "(i, 0, " + JSON.stringify(noAssert) + ");",
|
||||
"}"
|
||||
].join("\n"));
|
||||
bench.start();
|
||||
for (var i = 0; i < len; i++) {
|
||||
buff[fn](i * 0.1, 0, noAssert);
|
||||
}
|
||||
testFunction(buff);
|
||||
bench.end(len / 1e6);
|
||||
}
|
||||
|
||||
@@ -18,28 +18,29 @@ if (module === require.main) {
|
||||
var spawn = require('child_process').spawn;
|
||||
|
||||
runBenchmarks();
|
||||
}
|
||||
|
||||
function runBenchmarks() {
|
||||
var test = tests.shift();
|
||||
if (!test)
|
||||
return;
|
||||
function runBenchmarks() {
|
||||
var test = tests.shift();
|
||||
if (!test)
|
||||
return;
|
||||
|
||||
if (test.match(/^[\._]/))
|
||||
return process.nextTick(runBenchmarks);
|
||||
if (test.match(/^[\._]/))
|
||||
return process.nextTick(runBenchmarks);
|
||||
|
||||
console.error(type + '/' + test);
|
||||
test = path.resolve(dir, test);
|
||||
console.error(type + '/' + test);
|
||||
test = path.resolve(dir, test);
|
||||
|
||||
var child = spawn(process.execPath, [ test ], { stdio: 'inherit' });
|
||||
child.on('close', function(code) {
|
||||
if (code)
|
||||
process.exit(code);
|
||||
else {
|
||||
console.log('');
|
||||
runBenchmarks();
|
||||
}
|
||||
});
|
||||
}
|
||||
var a = (process.execArgv || []).concat(test);
|
||||
var child = spawn(process.execPath, a, { stdio: 'inherit' });
|
||||
child.on('close', function(code) {
|
||||
if (code)
|
||||
process.exit(code);
|
||||
else {
|
||||
console.log('');
|
||||
runBenchmarks();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
exports.createBenchmark = function(fn, options) {
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
// When calling .end(buffer) right away, this triggers a "hot path"
|
||||
// optimization in http.js, to avoid an extra write call.
|
||||
//
|
||||
// However, the overhead of copying a large buffer is higher than
|
||||
// the overhead of an extra write() call, so the hot path was not
|
||||
// always as hot as it could be.
|
||||
//
|
||||
// Verify that our assumptions are valid.
|
||||
|
||||
var common = require('../common.js');
|
||||
var PORT = common.PORT;
|
||||
|
||||
var bench = common.createBenchmark(main, {
|
||||
num: [1, 4, 8, 16],
|
||||
size: [1, 64, 256],
|
||||
c: [100]
|
||||
});
|
||||
|
||||
function main(conf) {
|
||||
http = require('http');
|
||||
var chunk = new Buffer(conf.size);
|
||||
chunk.fill('8');
|
||||
|
||||
var args = ['-r', 5000, '-t', 8, '-c', conf.c];
|
||||
|
||||
var server = http.createServer(function(req, res) {
|
||||
function send(left) {
|
||||
if (left === 0) return res.end();
|
||||
res.write(chunk);
|
||||
setTimeout(function() {
|
||||
send(left - 1);
|
||||
}, 0);
|
||||
}
|
||||
send(conf.num);
|
||||
});
|
||||
|
||||
server.listen(common.PORT, function() {
|
||||
bench.http('/', args, function() {
|
||||
server.close();
|
||||
});
|
||||
});
|
||||
}
|
||||
51
common.gypi
51
common.gypi
@@ -1,12 +1,13 @@
|
||||
{
|
||||
'variables': {
|
||||
'visibility%': 'hidden', # V8's visibility setting
|
||||
'target_arch%': 'ia32', # set v8's target architecture
|
||||
'host_arch%': 'ia32', # set v8's host architecture
|
||||
'want_separate_host_toolset': 0, # V8 should not build target and host
|
||||
'library%': 'static_library', # allow override to 'shared_library' for DLL/.so builds
|
||||
'component%': 'static_library', # NB. these names match with what V8 expects
|
||||
'msvs_multi_core_compile': '0', # we do enable multicore compiles, but not using the V8 way
|
||||
'werror': '', # Turn off -Werror in V8 build.
|
||||
'visibility%': 'hidden', # V8's visibility setting
|
||||
'target_arch%': 'ia32', # set v8's target architecture
|
||||
'host_arch%': 'ia32', # set v8's host architecture
|
||||
'want_separate_host_toolset%': 0, # V8 should not build target and host
|
||||
'library%': 'static_library', # allow override to 'shared_library' for DLL/.so builds
|
||||
'component%': 'static_library', # NB. these names match with what V8 expects
|
||||
'msvs_multi_core_compile': '0', # we do enable multicore compiles, but not using the V8 way
|
||||
'gcc_version%': 'unknown',
|
||||
'clang%': 0,
|
||||
'python%': 'python',
|
||||
@@ -17,11 +18,16 @@
|
||||
|
||||
# Enable V8's post-mortem debugging only on unix flavors.
|
||||
'conditions': [
|
||||
['OS == "win"', {
|
||||
'v8_postmortem_support': 'false'
|
||||
}, {
|
||||
['OS != "win"', {
|
||||
'v8_postmortem_support': 'true'
|
||||
}]
|
||||
}],
|
||||
['GENERATOR == "ninja" or OS== "mac"', {
|
||||
'OBJ_DIR': '<(PRODUCT_DIR)/obj',
|
||||
'V8_BASE': '<(PRODUCT_DIR)/libv8_base.a',
|
||||
}, {
|
||||
'OBJ_DIR': '<(PRODUCT_DIR)/obj.target',
|
||||
'V8_BASE': '<(PRODUCT_DIR)/obj.target/deps/v8/tools/gyp/libv8_base.a',
|
||||
}],
|
||||
],
|
||||
},
|
||||
|
||||
@@ -81,10 +87,12 @@
|
||||
],
|
||||
}],
|
||||
['OS=="solaris"', {
|
||||
'cflags': [ '-fno-omit-frame-pointer' ],
|
||||
# pull in V8's postmortem metadata
|
||||
'ldflags': [ '-Wl,-z,allextract' ]
|
||||
}],
|
||||
['OS!="mac" and OS!="win"', {
|
||||
'cflags': [ '-fno-omit-frame-pointer' ],
|
||||
}],
|
||||
],
|
||||
'msvs_settings': {
|
||||
'VCCLCompilerTool': {
|
||||
@@ -161,14 +169,10 @@
|
||||
'BUILDING_UV_SHARED=1',
|
||||
],
|
||||
}],
|
||||
[ 'OS in "linux freebsd openbsd solaris"', {
|
||||
'cflags': [ '-pthread', ],
|
||||
'ldflags': [ '-pthread' ],
|
||||
}],
|
||||
[ 'OS in "linux freebsd openbsd solaris android"', {
|
||||
'cflags': [ '-Wall', '-Wextra', '-Wno-unused-parameter', ],
|
||||
[ 'OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris"', {
|
||||
'cflags': [ '-Wall', '-Wextra', '-Wno-unused-parameter', '-pthread', ],
|
||||
'cflags_cc': [ '-fno-rtti', '-fno-exceptions' ],
|
||||
'ldflags': [ '-rdynamic' ],
|
||||
'ldflags': [ '-pthread', '-rdynamic' ],
|
||||
'target_conditions': [
|
||||
['_type=="static_library"', {
|
||||
'standalone_static_library': 1, # disable thin archive which needs binutils >= 2.19
|
||||
@@ -191,10 +195,6 @@
|
||||
}],
|
||||
],
|
||||
}],
|
||||
[ 'OS=="android"', {
|
||||
'defines': ['_GLIBCXX_USE_C99_MATH'],
|
||||
'libraries': [ '-llog' ],
|
||||
}],
|
||||
['OS=="mac"', {
|
||||
'defines': ['_DARWIN_USE_64_BIT_INODE=1'],
|
||||
'xcode_settings': {
|
||||
@@ -235,6 +235,11 @@
|
||||
}],
|
||||
['OS=="freebsd" and node_use_dtrace=="true"', {
|
||||
'libraries': [ '-lelf' ],
|
||||
}],
|
||||
['OS=="freebsd"', {
|
||||
'ldflags': [
|
||||
'-Wl,--export-dynamic',
|
||||
],
|
||||
}]
|
||||
],
|
||||
}
|
||||
|
||||
114
configure
vendored
114
configure
vendored
@@ -82,6 +82,11 @@ parser.add_option("--shared-openssl-libname",
|
||||
dest="shared_openssl_libname",
|
||||
help="Alternative lib name to link to (default: 'crypto,ssl')")
|
||||
|
||||
parser.add_option("--openssl-no-asm",
|
||||
action="store_true",
|
||||
dest="openssl_no_asm",
|
||||
help="Do not build optimized assembly for OpenSSL")
|
||||
|
||||
# deprecated
|
||||
parser.add_option("--openssl-use-sys",
|
||||
action="store_true",
|
||||
@@ -107,10 +112,15 @@ parser.add_option("--systemtap-includes",
|
||||
dest="systemtap_includes",
|
||||
help=optparse.SUPPRESS_HELP)
|
||||
|
||||
parser.add_option("--no-ssl2",
|
||||
parser.add_option("--without-ssl2",
|
||||
action="store_true",
|
||||
dest="no_ssl2",
|
||||
help="Disable OpenSSL v2")
|
||||
dest="ssl2",
|
||||
help="Disable SSL v2")
|
||||
|
||||
parser.add_option("--without-ssl3",
|
||||
action="store_true",
|
||||
dest="ssl3",
|
||||
help="Disable SSL v3")
|
||||
|
||||
parser.add_option("--shared-zlib",
|
||||
action="store_true",
|
||||
@@ -237,7 +247,7 @@ parser.add_option("--dest-os",
|
||||
action="store",
|
||||
dest="dest_os",
|
||||
help="Operating system to build for. Valid values are: "
|
||||
"win, mac, solaris, freebsd, openbsd, linux, android")
|
||||
"win, mac, solaris, freebsd, openbsd, linux")
|
||||
|
||||
parser.add_option("--no-ifaddrs",
|
||||
action="store_true",
|
||||
@@ -250,6 +260,12 @@ parser.add_option("--with-arm-float-abi",
|
||||
help="Specifies which floating-point ABI to use. Valid values are: "
|
||||
"soft, softfp, hard")
|
||||
|
||||
parser.add_option("--with-mips-float-abi",
|
||||
action="store",
|
||||
dest="mips_float_abi",
|
||||
help="Specifies which floating-point ABI to use. Valid values are: "
|
||||
"soft, hard")
|
||||
|
||||
parser.add_option("--ninja",
|
||||
action="store_true",
|
||||
dest="use_ninja",
|
||||
@@ -296,14 +312,11 @@ def pkg_config(pkg):
|
||||
return (libs, cflags)
|
||||
|
||||
|
||||
def cc_macros(cc=None):
|
||||
"""Checks predefined macros using the C compiler command."""
|
||||
|
||||
if cc is None:
|
||||
cc = CC
|
||||
def cc_macros():
|
||||
"""Checks predefined macros using the CC command."""
|
||||
|
||||
try:
|
||||
p = subprocess.Popen(shlex.split(cc) + ['-dM', '-E', '-'],
|
||||
p = subprocess.Popen(shlex.split(CC) + ['-dM', '-E', '-'],
|
||||
stdin=subprocess.PIPE,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE)
|
||||
@@ -345,7 +358,7 @@ def is_arm_neon():
|
||||
return '__ARM_NEON__' in cc_macros()
|
||||
|
||||
|
||||
def is_arm_hard_float_abi():
|
||||
def arm_hard_float_abi():
|
||||
"""Check for hardfloat or softfloat eabi on ARM"""
|
||||
# GCC versions 4.6 and above define __ARM_PCS or __ARM_PCS_VFP to specify
|
||||
# the Floating Point ABI used (PCS stands for Procedure Call Standard).
|
||||
@@ -378,9 +391,7 @@ def is_arm_hard_float_abi():
|
||||
def host_arch_cc():
|
||||
"""Host architecture check using the CC command."""
|
||||
|
||||
# use 'cc', as CC may be set to a target arch compiler command
|
||||
# in case of cross-compilation
|
||||
k = cc_macros('cc')
|
||||
k = cc_macros()
|
||||
|
||||
matchup = {
|
||||
'__x86_64__' : 'x64',
|
||||
@@ -429,20 +440,34 @@ def compiler_version():
|
||||
|
||||
|
||||
def configure_arm(o):
|
||||
# V8 on ARM requires that armv7 is set. CPU Model detected by
|
||||
# the presence of __ARM_ARCH_7__ and the like defines in compiler
|
||||
if options.arm_float_abi:
|
||||
arm_float_abi = options.arm_float_abi
|
||||
hard_float = options.arm_float_abi == 'hard'
|
||||
else:
|
||||
arm_float_abi = 'hard' if is_arm_hard_float_abi() else 'default'
|
||||
o['variables']['armv7'] = int(is_arch_armv7())
|
||||
o['variables']['arm_fpu'] = 'vfpv3' # V8 3.18 no longer supports VFP2.
|
||||
hard_float = arm_hard_float_abi()
|
||||
|
||||
armv7 = is_arch_armv7()
|
||||
# CHECKME VFPv3 implies ARMv7+ but is the reverse true as well?
|
||||
fpu = 'vfpv3' if armv7 else 'vfpv2'
|
||||
|
||||
o['variables']['armv7'] = int(armv7)
|
||||
o['variables']['arm_fpu'] = fpu
|
||||
o['variables']['arm_neon'] = int(is_arm_neon())
|
||||
o['variables']['arm_thumb'] = 0 # -marm
|
||||
o['variables']['arm_float_abi'] = arm_float_abi
|
||||
o['variables']['v8_use_arm_eabi_hardfloat'] = b(hard_float)
|
||||
|
||||
|
||||
def configure_mips(o):
|
||||
if options.mips_float_abi:
|
||||
if options.mips_float_abi in ('soft', 'hard'):
|
||||
o['variables']['v8_use_mips_abi_hardfloat'] = b(
|
||||
options.mips_float_abi == 'hard')
|
||||
else:
|
||||
raise Exception(
|
||||
'Invalid mips-float-abi value. Valid values are: soft, hard')
|
||||
|
||||
|
||||
def configure_node(o):
|
||||
if options.dest_os == 'android':
|
||||
o['variables']['OS'] = "android"
|
||||
o['variables']['v8_enable_gdbjit'] = 1 if options.gdb else 0
|
||||
o['variables']['v8_no_strict_aliasing'] = 1 # work around compiler bugs
|
||||
o['variables']['node_prefix'] = os.path.expanduser(options.prefix or '')
|
||||
@@ -456,8 +481,15 @@ def configure_node(o):
|
||||
o['variables']['host_arch'] = host_arch
|
||||
o['variables']['target_arch'] = target_arch
|
||||
|
||||
if target_arch != host_arch and not options.without_snapshot:
|
||||
o['variables']['want_separate_host_toolset'] = 1
|
||||
else:
|
||||
o['variables']['want_separate_host_toolset'] = 0
|
||||
|
||||
if target_arch == 'arm':
|
||||
configure_arm(o)
|
||||
elif target_arch in ('mips', 'mipsel'):
|
||||
configure_mips(o)
|
||||
|
||||
cc_version, is_clang = compiler_version()
|
||||
o['variables']['clang'] = 1 if is_clang else 0
|
||||
@@ -474,8 +506,8 @@ def configure_node(o):
|
||||
# SunOS, and we haven't implemented it.)
|
||||
if flavor in ('solaris', 'mac'):
|
||||
o['variables']['node_use_dtrace'] = b(not options.without_dtrace)
|
||||
o['variables']['uv_use_dtrace'] = o['variables']['node_use_dtrace']
|
||||
o['variables']['uv_parent_path'] = '/deps/uv/'
|
||||
elif flavor == 'freebsd':
|
||||
o['variables']['node_use_dtrace'] = b(options.with_dtrace)
|
||||
elif flavor == 'linux':
|
||||
o['variables']['node_use_dtrace'] = 'false'
|
||||
o['variables']['node_use_systemtap'] = b(options.with_dtrace)
|
||||
@@ -587,13 +619,18 @@ def configure_v8(o):
|
||||
def configure_openssl(o):
|
||||
o['variables']['node_use_openssl'] = b(not options.without_ssl)
|
||||
o['variables']['node_shared_openssl'] = b(options.shared_openssl)
|
||||
o['variables']['openssl_no_asm'] = (
|
||||
1 if options.openssl_no_asm else 0)
|
||||
|
||||
if options.without_ssl:
|
||||
return
|
||||
|
||||
if options.no_ssl2:
|
||||
if options.ssl2:
|
||||
o['defines'] += ['OPENSSL_NO_SSL2=1']
|
||||
|
||||
if options.ssl3:
|
||||
o['defines'] += ['OPENSSL_NO_SSL3=1']
|
||||
|
||||
if options.shared_openssl:
|
||||
(libs, cflags) = pkg_config('openssl') or ('-lssl -lcrypto', '')
|
||||
|
||||
@@ -650,7 +687,6 @@ configure_v8(output)
|
||||
configure_openssl(output)
|
||||
configure_winsdk(output)
|
||||
|
||||
|
||||
# variables should be a root level element,
|
||||
# move everything else to target_defaults
|
||||
variables = output['variables']
|
||||
@@ -676,22 +712,22 @@ config = {
|
||||
'USE_XCODE': str(int(options.use_xcode or 0)),
|
||||
'PYTHON': sys.executable,
|
||||
}
|
||||
|
||||
if options.prefix:
|
||||
config['PREFIX'] = options.prefix
|
||||
|
||||
config = '\n'.join(map('='.join, config.iteritems())) + '\n'
|
||||
|
||||
write('config.mk',
|
||||
'# Do not edit. Generated by the configure script.\n' + config)
|
||||
|
||||
if options.use_ninja:
|
||||
gyp_args = ['-f', 'ninja-' + flavor]
|
||||
elif options.use_xcode:
|
||||
gyp_args = ['-f', 'xcode']
|
||||
elif flavor == 'win':
|
||||
gyp_args = ['-f', 'msvs', '-G', 'msvs_version=auto']
|
||||
else:
|
||||
gyp_args = ['-f', 'make-' + flavor]
|
||||
gyp_args = [sys.executable, 'tools/gyp_node.py', '--no-parallel']
|
||||
|
||||
subprocess.call([sys.executable, 'tools/gyp_node'] + gyp_args)
|
||||
if options.use_ninja:
|
||||
gyp_args += ['-f', 'ninja-' + flavor]
|
||||
elif options.use_xcode:
|
||||
gyp_args += ['-f', 'xcode']
|
||||
elif flavor == 'win':
|
||||
gyp_args += ['-f', 'msvs', '-G', 'msvs_version=auto']
|
||||
else:
|
||||
gyp_args += ['-f', 'make-' + flavor]
|
||||
|
||||
gyp_args += args
|
||||
|
||||
sys.exit(subprocess.call(gyp_args))
|
||||
|
||||
5
deps/cares/.gitignore
vendored
5
deps/cares/.gitignore
vendored
@@ -4,6 +4,7 @@
|
||||
|
||||
/cares.Makefile
|
||||
/cares.target.mk
|
||||
/Makefile
|
||||
|
||||
/*.opensdf
|
||||
/*.sdf
|
||||
@@ -12,7 +13,3 @@
|
||||
/*.vcxproj
|
||||
/*.vcxproj.filters
|
||||
/*.vcxproj.user
|
||||
|
||||
*.so
|
||||
*.[oa]
|
||||
.buildstamp
|
||||
|
||||
53
deps/cares/Makefile
vendored
53
deps/cares/Makefile
vendored
@@ -1,53 +0,0 @@
|
||||
# Copyright Joyent, Inc. and other Node contributors. All rights reserved.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
SRCDIR ?= $(CURDIR)
|
||||
|
||||
ifeq (,$(builddir_name))
|
||||
|
||||
VPATH := $(SRCDIR)
|
||||
include $(SRCDIR)/build.mk
|
||||
|
||||
else # Out of tree build.
|
||||
|
||||
# Drop all built-in rules.
|
||||
.SUFFIXES:
|
||||
|
||||
.PHONY: $(builddir_name)
|
||||
$(builddir_name): $(builddir_name)/.buildstamp
|
||||
$(MAKE) -C $@ -f $(CURDIR)/Makefile $(MAKECMDGOALS) \
|
||||
SRCDIR=$(CURDIR) builddir_name=
|
||||
|
||||
$(builddir_name)/.buildstamp:
|
||||
mkdir -p $(dir $@)
|
||||
touch $@
|
||||
|
||||
# Add no-op rules for Makefiles to stop make from trying to rebuild them.
|
||||
Makefile:: ;
|
||||
%.mk:: ;
|
||||
|
||||
# Turn everything else into a no-op rule that depends on the build directory.
|
||||
%:: $(builddir_name) ;
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
$(RM) -fr $(builddir_name)
|
||||
|
||||
endif
|
||||
143
deps/cares/build.mk
vendored
143
deps/cares/build.mk
vendored
@@ -1,143 +0,0 @@
|
||||
# Copyright Joyent, Inc. and other Node contributors. All rights reserved.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
OS ?= $(shell sh -c 'uname -s | tr "[A-Z]" "[a-z]"')
|
||||
|
||||
OBJS= \
|
||||
src/ares_cancel.o \
|
||||
src/ares__close_sockets.o \
|
||||
src/ares_create_query.o \
|
||||
src/ares_data.o \
|
||||
src/ares_destroy.o \
|
||||
src/ares_expand_name.o \
|
||||
src/ares_expand_string.o \
|
||||
src/ares_fds.o \
|
||||
src/ares_free_hostent.o \
|
||||
src/ares_free_string.o \
|
||||
src/ares_gethostbyaddr.o \
|
||||
src/ares_gethostbyname.o \
|
||||
src/ares__get_hostent.o \
|
||||
src/ares_getnameinfo.o \
|
||||
src/ares_getopt.o \
|
||||
src/ares_getsock.o \
|
||||
src/ares_init.o \
|
||||
src/ares_library_init.o \
|
||||
src/ares_llist.o \
|
||||
src/ares_mkquery.o \
|
||||
src/ares_nowarn.o \
|
||||
src/ares_options.o \
|
||||
src/ares_parse_aaaa_reply.o \
|
||||
src/ares_parse_a_reply.o \
|
||||
src/ares_parse_mx_reply.o \
|
||||
src/ares_parse_naptr_reply.o \
|
||||
src/ares_parse_ns_reply.o \
|
||||
src/ares_parse_ptr_reply.o \
|
||||
src/ares_parse_soa_reply.o \
|
||||
src/ares_parse_srv_reply.o \
|
||||
src/ares_parse_txt_reply.o \
|
||||
src/ares_process.o \
|
||||
src/ares_query.o \
|
||||
src/ares__read_line.o \
|
||||
src/ares_search.o \
|
||||
src/ares_send.o \
|
||||
src/ares_strcasecmp.o \
|
||||
src/ares_strdup.o \
|
||||
src/ares_strerror.o \
|
||||
src/ares_timeout.o \
|
||||
src/ares__timeval.o \
|
||||
src/ares_version.o \
|
||||
src/ares_writev.o \
|
||||
src/bitncmp.o \
|
||||
src/inet_net_pton.o \
|
||||
src/inet_ntop.o \
|
||||
|
||||
CFLAGS += -I. -I$(SRCDIR)/include -DHAVE_CONFIG_H
|
||||
|
||||
ARES_CONFIG_OS = $(OS)
|
||||
SOEXT = so
|
||||
|
||||
# if on windows
|
||||
ifneq (,$(findstring mingw,$(OS)))
|
||||
ARES_CONFIG_OS = win32
|
||||
OBJS += src/windows_port.o
|
||||
OBJS += src/ares_getenv.o
|
||||
OBJS += src/ares_platform.o
|
||||
|
||||
LDFLAGS += -lws2_32.lib -liphlpapi.lib
|
||||
else # else a posix system
|
||||
CFLAGS += -g --std=gnu89 -pedantic
|
||||
CFLAGS += -Wall -Wextra -Wno-unused-parameter
|
||||
CFLAGS += -D_LARGEFILE_SOURCE
|
||||
CFLAGS += -D_FILE_OFFSET_BITS=64
|
||||
endif
|
||||
|
||||
ifneq (,$(findstring cygwin,$(OS)))
|
||||
ARES_CONFIG_OS = cygwin
|
||||
CFLAGS += -D_GNU_SOURCE
|
||||
endif
|
||||
|
||||
ifeq (dragonflybsd,$(OS))
|
||||
ARES_CONFIG_OS = freebsd
|
||||
endif
|
||||
|
||||
ifeq (darwin,$(OS))
|
||||
CFLAGS += -D_DARWIN_USE_64_BIT_INODE=1
|
||||
LDFLAGS += -dynamiclib -install_name "@rpath/libcares.dylib"
|
||||
SOEXT = dylib
|
||||
endif
|
||||
|
||||
ifeq (linux,$(OS))
|
||||
CFLAGS += -D_GNU_SOURCE
|
||||
endif
|
||||
|
||||
ifeq (sunos,$(OS))
|
||||
LDFLAGS += -lsocket -lnsl
|
||||
CFLAGS += -D__EXTENSIONS__ -D_XOPEN_SOURCE=500
|
||||
endif
|
||||
|
||||
CFLAGS += -I$(SRCDIR)/config/$(ARES_CONFIG_OS)
|
||||
|
||||
ifneq (,$(findstring libcares.$(SOEXT),$(MAKECMDGOALS)))
|
||||
CFLAGS += -DCARES_BUILDING_LIBRARY
|
||||
else
|
||||
CFLAGS += -DCARES_STATICLIB
|
||||
endif
|
||||
|
||||
all: libcares.a
|
||||
|
||||
src/.buildstamp:
|
||||
mkdir -p $(dir $@)
|
||||
touch $@
|
||||
|
||||
libcares.a: $(OBJS)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
libcares.$(SOEXT): override CFLAGS += -fPIC
|
||||
libcares.$(SOEXT): $(OBJS:%.o=%.pic.o)
|
||||
$(CC) -shared -o $@ $^ $(LDFLAGS)
|
||||
|
||||
src/%.o src/%.pic.o: src/%.c include/ares.h include/ares_version.h \
|
||||
include/nameser.h src/.buildstamp \
|
||||
$(SRCDIR)/config/$(ARES_CONFIG_OS)/ares_config.h
|
||||
$(CC) $(CFLAGS) -c $< -o $@
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
$(RM) -f libcares.a libcares.$(SOEXT) src/*.o src/.buildstamp
|
||||
4
deps/cares/cares.gyp
vendored
4
deps/cares/cares.gyp
vendored
@@ -34,7 +34,6 @@
|
||||
'include/nameser.h',
|
||||
'src/ares_cancel.c',
|
||||
'src/ares__close_sockets.c',
|
||||
'src/ares_create_query.c',
|
||||
'src/ares_data.c',
|
||||
'src/ares_data.h',
|
||||
'src/ares_destroy.c',
|
||||
@@ -93,8 +92,9 @@
|
||||
'src/bitncmp.c',
|
||||
'src/bitncmp.h',
|
||||
'src/inet_net_pton.c',
|
||||
'src/inet_net_pton.h',
|
||||
'src/inet_ntop.c',
|
||||
'src/ares_inet_net_pton.h',
|
||||
'src/inet_ntop.h',
|
||||
'src/setup_once.h',
|
||||
'src/windows_port.c'
|
||||
],
|
||||
|
||||
40
deps/cares/include/ares.h
vendored
40
deps/cares/include/ares.h
vendored
@@ -1,6 +1,6 @@
|
||||
|
||||
/* Copyright 1998 by the Massachusetts Institute of Technology.
|
||||
* Copyright (C) 2007-2013 by Daniel Stenberg
|
||||
/* Copyright 1998, 2009 by the Massachusetts Institute of Technology.
|
||||
* Copyright (C) 2007-2011 by Daniel Stenberg
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software and its documentation for any purpose and without
|
||||
@@ -123,18 +123,22 @@ extern "C" {
|
||||
** c-ares external API function linkage decorations.
|
||||
*/
|
||||
|
||||
#ifdef CARES_STATICLIB
|
||||
# define CARES_EXTERN
|
||||
#elif defined(WIN32) || defined(_WIN32) || defined(__SYMBIAN32__)
|
||||
#if !defined(CARES_STATICLIB) && \
|
||||
(defined(WIN32) || defined(_WIN32) || defined(__SYMBIAN32__))
|
||||
/* __declspec function decoration for Win32 and Symbian DLL's */
|
||||
# if defined(CARES_BUILDING_LIBRARY)
|
||||
# define CARES_EXTERN __declspec(dllexport)
|
||||
# else
|
||||
# define CARES_EXTERN __declspec(dllimport)
|
||||
# endif
|
||||
#elif defined(CARES_BUILDING_LIBRARY) && defined(CARES_SYMBOL_HIDING)
|
||||
# define CARES_EXTERN CARES_SYMBOL_SCOPE_EXTERN
|
||||
#else
|
||||
# define CARES_EXTERN
|
||||
/* visibility function decoration for other cases */
|
||||
# if !defined(CARES_SYMBOL_HIDING) || \
|
||||
defined(WIN32) || defined(_WIN32) || defined(__SYMBIAN32__)
|
||||
# define CARES_EXTERN
|
||||
# else
|
||||
# define CARES_EXTERN CARES_SYMBOL_SCOPE_EXTERN
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
@@ -187,7 +191,6 @@ extern "C" {
|
||||
#define ARES_FLAG_NOSEARCH (1 << 5)
|
||||
#define ARES_FLAG_NOALIASES (1 << 6)
|
||||
#define ARES_FLAG_NOCHECKRESP (1 << 7)
|
||||
#define ARES_FLAG_EDNS (1 << 8)
|
||||
|
||||
/* Option mask values */
|
||||
#define ARES_OPT_FLAGS (1 << 0)
|
||||
@@ -205,7 +208,6 @@ extern "C" {
|
||||
#define ARES_OPT_SOCK_RCVBUF (1 << 12)
|
||||
#define ARES_OPT_TIMEOUTMS (1 << 13)
|
||||
#define ARES_OPT_ROTATE (1 << 14)
|
||||
#define ARES_OPT_EDNSPSZ (1 << 15)
|
||||
|
||||
/* Nameinfo flag values */
|
||||
#define ARES_NI_NOFQDN (1 << 0)
|
||||
@@ -311,7 +313,6 @@ struct ares_options {
|
||||
void *sock_state_cb_data;
|
||||
struct apattern *sortlist;
|
||||
int nsort;
|
||||
int ednspsz;
|
||||
};
|
||||
|
||||
struct hostent;
|
||||
@@ -450,15 +451,6 @@ CARES_EXTERN void ares_process_fd(ares_channel channel,
|
||||
ares_socket_t read_fd,
|
||||
ares_socket_t write_fd);
|
||||
|
||||
CARES_EXTERN int ares_create_query(const char *name,
|
||||
int dnsclass,
|
||||
int type,
|
||||
unsigned short id,
|
||||
int rd,
|
||||
unsigned char **buf,
|
||||
int *buflen,
|
||||
int max_udp_size);
|
||||
|
||||
CARES_EXTERN int ares_mkquery(const char *name,
|
||||
int dnsclass,
|
||||
int type,
|
||||
@@ -597,6 +589,8 @@ CARES_EXTERN void ares_free_string(void *str);
|
||||
|
||||
CARES_EXTERN void ares_free_hostent(struct hostent *host);
|
||||
|
||||
CARES_EXTERN void ares_free_soa(struct ares_soa_reply *soa);
|
||||
|
||||
CARES_EXTERN void ares_free_data(void *dataptr);
|
||||
|
||||
CARES_EXTERN const char *ares_strerror(int code);
|
||||
@@ -621,12 +615,6 @@ CARES_EXTERN int ares_set_servers_csv(ares_channel channel,
|
||||
CARES_EXTERN int ares_get_servers(ares_channel channel,
|
||||
struct ares_addr_node **servers);
|
||||
|
||||
CARES_EXTERN const char *ares_inet_ntop(int af, const void *src, char *dst,
|
||||
ares_socklen_t size);
|
||||
|
||||
CARES_EXTERN int ares_inet_pton(int af, const char *src, void *dst);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
6
deps/cares/include/ares_version.h
vendored
6
deps/cares/include/ares_version.h
vendored
@@ -3,15 +3,15 @@
|
||||
#define ARES__VERSION_H
|
||||
|
||||
/* This is the global package copyright */
|
||||
#define ARES_COPYRIGHT "2004 - 2013 Daniel Stenberg, <daniel@haxx.se>."
|
||||
#define ARES_COPYRIGHT "2004 - 2012 Daniel Stenberg, <daniel@haxx.se>."
|
||||
|
||||
#define ARES_VERSION_MAJOR 1
|
||||
#define ARES_VERSION_MINOR 10
|
||||
#define ARES_VERSION_MINOR 9
|
||||
#define ARES_VERSION_PATCH 0
|
||||
#define ARES_VERSION ((ARES_VERSION_MAJOR<<16)|\
|
||||
(ARES_VERSION_MINOR<<8)|\
|
||||
(ARES_VERSION_PATCH))
|
||||
#define ARES_VERSION_STR "1.10.0-DEV"
|
||||
#define ARES_VERSION_STR "1.9.0-DEV"
|
||||
|
||||
#if (ARES_VERSION >= 0x010700)
|
||||
# define CARES_HAVE_ARES_LIBRARY_INIT 1
|
||||
|
||||
8
deps/cares/include/nameser.h
vendored
8
deps/cares/include/nameser.h
vendored
@@ -186,19 +186,11 @@ typedef enum __ns_rcode {
|
||||
#define T_SRV ns_t_srv
|
||||
#define T_ATMA ns_t_atma
|
||||
#define T_NAPTR ns_t_naptr
|
||||
#define T_KX ns_t_kx
|
||||
#define T_CERT ns_t_cert
|
||||
#define T_A6 ns_t_a6
|
||||
#define T_DNAME ns_t_dname
|
||||
#define T_SINK ns_t_sink
|
||||
#define T_OPT ns_t_opt
|
||||
#define T_APL ns_t_apl
|
||||
#define T_DS ns_t_ds
|
||||
#define T_SSHFP ns_t_sshfp
|
||||
#define T_RRSIG ns_t_rrsig
|
||||
#define T_NSEC ns_t_nsec
|
||||
#define T_DNSKEY ns_t_dnskey
|
||||
#define T_TKEY ns_t_tkey
|
||||
#define T_TSIG ns_t_tsig
|
||||
#define T_IXFR ns_t_ixfr
|
||||
#define T_AXFR ns_t_axfr
|
||||
|
||||
21
deps/cares/src/AUTHORS
vendored
21
deps/cares/src/AUTHORS
vendored
@@ -1,24 +1,15 @@
|
||||
c-ares is based on ares, and these are the people that have worked on it since
|
||||
the fork was made:
|
||||
|
||||
Albert Chin
|
||||
Alexander Lazic
|
||||
Alexey Simak
|
||||
Andreas Rieke
|
||||
Andrew C. Morrow
|
||||
Ashish Sharma
|
||||
Ben Greear
|
||||
Ben Noordhuis
|
||||
BogDan Vatra
|
||||
Brad House
|
||||
Brad Spencer
|
||||
Bram Matthys
|
||||
Dan Fandrich
|
||||
Daniel Johnson
|
||||
Daniel Stenberg
|
||||
David Stuart
|
||||
Denis Bilenko
|
||||
Dima Tisnek
|
||||
Dirk Manske
|
||||
Dominick Meglio
|
||||
Doug Goldstein
|
||||
@@ -27,31 +18,19 @@ Eino Tuominen
|
||||
Erik Kline
|
||||
George Neill
|
||||
Gisle Vanem
|
||||
Guenter Knauf
|
||||
Guilherme Balena Versiani
|
||||
Gunter Knauf
|
||||
Henrik Stoerner
|
||||
Jakub Hrozek
|
||||
James Bursa
|
||||
Jérémy Lal
|
||||
Marko Kreen
|
||||
Michael Wallner
|
||||
Mike Crowe
|
||||
Nick Alcock
|
||||
Nick Mathewson
|
||||
Patrik Thunstrom
|
||||
Peter Pentchev
|
||||
Phil Blundell
|
||||
Poul Thomas Lomholt
|
||||
Ravi Pratap
|
||||
Robin Cornelius
|
||||
Sebastian at basti79.de
|
||||
Shmulik Regev
|
||||
Stefan Bühler
|
||||
Steinar H. Gunderson
|
||||
Tofu Linden
|
||||
Tom Hughes
|
||||
Tor Arntsen
|
||||
Vlad Dinulescu
|
||||
William Ahern
|
||||
Yang Tse
|
||||
|
||||
7
deps/cares/src/CHANGES
vendored
Normal file
7
deps/cares/src/CHANGES
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
This file no longer holds the changelog. Now you can generate it yourself
|
||||
like this:
|
||||
|
||||
$ git log --pretty=fuller --no-color --date=short --decorate=full -1000 |
|
||||
./git2changes.pl
|
||||
|
||||
The older, manually edited, changelog is found in git named CHANGES.0
|
||||
2
deps/cares/src/README
vendored
2
deps/cares/src/README
vendored
@@ -24,6 +24,8 @@ You'll find all c-ares details and news here:
|
||||
|
||||
NOTES FOR C-ARES HACKERS
|
||||
|
||||
The following notes apply to c-ares version 1.7.0 and later.
|
||||
|
||||
* The distributed ares_build.h file is only intended to be used on systems
|
||||
which can not run the also distributed configure script.
|
||||
|
||||
|
||||
33
deps/cares/src/RELEASE-NOTES
vendored
33
deps/cares/src/RELEASE-NOTES
vendored
@@ -1,35 +1,16 @@
|
||||
c-ares version 1.10.0
|
||||
c-ares version 1.9.0
|
||||
|
||||
Changes:
|
||||
Changed:
|
||||
|
||||
o Added ares_create_query(), to be used instead of ares_mkquery()
|
||||
o ares_inet_ntop() and ares_inet_pton() are now recognized c-ares functions
|
||||
o Added ares_parse_soa_reply
|
||||
|
||||
Bug fixes:
|
||||
Fixed:
|
||||
|
||||
o include the ares_parse_soa_reply.* files in the tarball
|
||||
o read_udp_packets: bail out loop on bad sockets
|
||||
o get_DNS_AdaptersAddresses: fix IPv6 parsing
|
||||
o adig: perror() doesn't work for socket errors on windows
|
||||
o ares_parse_aaaa_reply: fix memory leak
|
||||
o setup_once.h: HP-UX <sys/socket.h> issue workaround
|
||||
o configure: several fixes
|
||||
o config-dos.h: define strerror() to strerror_s_() for High-C
|
||||
o config-dos.h: define HAVE_CLOSE_S for MSDOS/Watt-32
|
||||
o ares_build.h.dist: enhance non-configure GCC ABI detection logic
|
||||
o ares.h: stricter CARES_EXTERN linkage decorations logic
|
||||
o ares_cancel(): cancel requests safely
|
||||
o protocol parsing: check input data stricter
|
||||
o library init: be recursive, reference count inits/cleanups
|
||||
o ares_parse_txt_reply: return a ares_txt_reply node for each sub-string
|
||||
o ares_set_servers_csv: fixed IPv6 address parsing
|
||||
o build: fix build on msvc11
|
||||
o libcares.pc generation for static MingW* cross builds
|
||||
o ares_dup: UDP and TCP port byte order in saved options
|
||||
|
||||
Thanks go to these friendly people for their efforts and contributions:
|
||||
|
||||
Eugeny Gladkih, Yang Tse, Gisle Vanem, Guenter Knauf, Horatiu Popescu,
|
||||
Alexander Klauer, Patrick Valsecchi, Paul Saab, Keith Shaw,
|
||||
Alex Loukissas
|
||||
|
||||
Yang Tse, Nick Alcock, Marko Kreen
|
||||
|
||||
Have fun!
|
||||
|
||||
5
deps/cares/src/ares__close_sockets.c
vendored
5
deps/cares/src/ares__close_sockets.c
vendored
@@ -16,6 +16,11 @@
|
||||
|
||||
#include "ares_setup.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#ifdef HAVE_UNISTD_H
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
#include "ares.h"
|
||||
#include "ares_private.h"
|
||||
|
||||
|
||||
5
deps/cares/src/ares__get_hostent.c
vendored
5
deps/cares/src/ares__get_hostent.c
vendored
@@ -16,6 +16,9 @@
|
||||
|
||||
#include "ares_setup.h"
|
||||
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
# include <sys/socket.h>
|
||||
#endif
|
||||
#ifdef HAVE_NETINET_IN_H
|
||||
# include <netinet/in.h>
|
||||
#endif
|
||||
@@ -27,7 +30,7 @@
|
||||
#endif
|
||||
|
||||
#include "ares.h"
|
||||
#include "ares_inet_net_pton.h"
|
||||
#include "inet_net_pton.h"
|
||||
#include "ares_nowarn.h"
|
||||
#include "ares_private.h"
|
||||
|
||||
|
||||
4
deps/cares/src/ares__read_line.c
vendored
4
deps/cares/src/ares__read_line.c
vendored
@@ -15,7 +15,9 @@
|
||||
*/
|
||||
|
||||
#include "ares_setup.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "ares.h"
|
||||
#include "ares_nowarn.h"
|
||||
#include "ares_private.h"
|
||||
|
||||
44
deps/cares/src/ares_cancel.c
vendored
44
deps/cares/src/ares_cancel.c
vendored
@@ -14,7 +14,7 @@
|
||||
|
||||
#include "ares_setup.h"
|
||||
#include <assert.h>
|
||||
|
||||
#include <stdlib.h>
|
||||
#include "ares.h"
|
||||
#include "ares_private.h"
|
||||
|
||||
@@ -26,33 +26,33 @@
|
||||
void ares_cancel(ares_channel channel)
|
||||
{
|
||||
struct query *query;
|
||||
struct list_node list_head_copy;
|
||||
struct list_node* list_head;
|
||||
struct list_node* list_node;
|
||||
int i;
|
||||
|
||||
if (!ares__is_list_empty(&(channel->all_queries)))
|
||||
list_head = &(channel->all_queries);
|
||||
for (list_node = list_head->next; list_node != list_head; )
|
||||
{
|
||||
/* Swap list heads, so that only those queries which were present on entry
|
||||
* into this function are cancelled. New queries added by callbacks of
|
||||
* queries being cancelled will not be cancelled themselves.
|
||||
*/
|
||||
list_head = &(channel->all_queries);
|
||||
list_head_copy.prev = list_head->prev;
|
||||
list_head_copy.next = list_head->next;
|
||||
list_head_copy.prev->next = &list_head_copy;
|
||||
list_head_copy.next->prev = &list_head_copy;
|
||||
list_head->prev = list_head;
|
||||
list_head->next = list_head;
|
||||
for (list_node = list_head_copy.next; list_node != &list_head_copy; )
|
||||
{
|
||||
query = list_node->data;
|
||||
list_node = list_node->next; /* since we're deleting the query */
|
||||
query->callback(query->arg, ARES_ECANCELLED, 0, NULL, 0);
|
||||
ares__free_query(query);
|
||||
}
|
||||
query = list_node->data;
|
||||
list_node = list_node->next; /* since we're deleting the query */
|
||||
query->callback(query->arg, ARES_ECANCELLED, 0, NULL, 0);
|
||||
ares__free_query(query);
|
||||
}
|
||||
if (!(channel->flags & ARES_FLAG_STAYOPEN) && ares__is_list_empty(&(channel->all_queries)))
|
||||
#ifndef NDEBUG
|
||||
/* Freeing the query should remove it from all the lists in which it sits,
|
||||
* so all query lists should be empty now.
|
||||
*/
|
||||
assert(ares__is_list_empty(&(channel->all_queries)));
|
||||
for (i = 0; i < ARES_QID_TABLE_SIZE; i++)
|
||||
{
|
||||
assert(ares__is_list_empty(&(channel->queries_by_qid[i])));
|
||||
}
|
||||
for (i = 0; i < ARES_TIMEOUT_TABLE_SIZE; i++)
|
||||
{
|
||||
assert(ares__is_list_empty(&(channel->queries_by_timeout[i])));
|
||||
}
|
||||
#endif
|
||||
if (!(channel->flags & ARES_FLAG_STAYOPEN))
|
||||
{
|
||||
if (channel->servers)
|
||||
{
|
||||
|
||||
208
deps/cares/src/ares_create_query.c
vendored
208
deps/cares/src/ares_create_query.c
vendored
@@ -1,208 +0,0 @@
|
||||
|
||||
/* Copyright 1998 by the Massachusetts Institute of Technology.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software and its documentation for any purpose and without
|
||||
* fee is hereby granted, provided that the above copyright
|
||||
* notice appear in all copies and that both that copyright
|
||||
* notice and this permission notice appear in supporting
|
||||
* documentation, and that the name of M.I.T. not be used in
|
||||
* advertising or publicity pertaining to distribution of the
|
||||
* software without specific, written prior permission.
|
||||
* M.I.T. makes no representations about the suitability of
|
||||
* this software for any purpose. It is provided "as is"
|
||||
* without express or implied warranty.
|
||||
*/
|
||||
|
||||
#include "ares_setup.h"
|
||||
|
||||
#ifdef HAVE_NETINET_IN_H
|
||||
# include <netinet/in.h>
|
||||
#endif
|
||||
#ifdef HAVE_ARPA_NAMESER_H
|
||||
# include <arpa/nameser.h>
|
||||
#else
|
||||
# include "nameser.h"
|
||||
#endif
|
||||
#ifdef HAVE_ARPA_NAMESER_COMPAT_H
|
||||
# include <arpa/nameser_compat.h>
|
||||
#endif
|
||||
|
||||
#include "ares.h"
|
||||
#include "ares_dns.h"
|
||||
#include "ares_private.h"
|
||||
|
||||
#ifndef T_OPT
|
||||
# define T_OPT 41 /* EDNS0 option (meta-RR) */
|
||||
#endif
|
||||
|
||||
/* Header format, from RFC 1035:
|
||||
* 1 1 1 1 1 1
|
||||
* 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
|
||||
* +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
||||
* | ID |
|
||||
* +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
||||
* |QR| Opcode |AA|TC|RD|RA| Z | RCODE |
|
||||
* +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
||||
* | QDCOUNT |
|
||||
* +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
||||
* | ANCOUNT |
|
||||
* +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
||||
* | NSCOUNT |
|
||||
* +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
||||
* | ARCOUNT |
|
||||
* +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
||||
*
|
||||
* AA, TC, RA, and RCODE are only set in responses. Brief description
|
||||
* of the remaining fields:
|
||||
* ID Identifier to match responses with queries
|
||||
* QR Query (0) or response (1)
|
||||
* Opcode For our purposes, always QUERY
|
||||
* RD Recursion desired
|
||||
* Z Reserved (zero)
|
||||
* QDCOUNT Number of queries
|
||||
* ANCOUNT Number of answers
|
||||
* NSCOUNT Number of name server records
|
||||
* ARCOUNT Number of additional records
|
||||
*
|
||||
* Question format, from RFC 1035:
|
||||
* 1 1 1 1 1 1
|
||||
* 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
|
||||
* +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
||||
* | |
|
||||
* / QNAME /
|
||||
* / /
|
||||
* +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
||||
* | QTYPE |
|
||||
* +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
||||
* | QCLASS |
|
||||
* +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
||||
*
|
||||
* The query name is encoded as a series of labels, each represented
|
||||
* as a one-byte length (maximum 63) followed by the text of the
|
||||
* label. The list is terminated by a label of length zero (which can
|
||||
* be thought of as the root domain).
|
||||
*/
|
||||
|
||||
int ares_create_query(const char *name, int dnsclass, int type,
|
||||
unsigned short id, int rd, unsigned char **buf,
|
||||
int *buflen, int max_udp_size)
|
||||
{
|
||||
int len;
|
||||
unsigned char *q;
|
||||
const char *p;
|
||||
|
||||
/* Set our results early, in case we bail out early with an error. */
|
||||
*buflen = 0;
|
||||
*buf = NULL;
|
||||
|
||||
/* Compute the length of the encoded name so we can check buflen.
|
||||
* Start counting at 1 for the zero-length label at the end. */
|
||||
len = 1;
|
||||
for (p = name; *p; p++)
|
||||
{
|
||||
if (*p == '\\' && *(p + 1) != 0)
|
||||
p++;
|
||||
len++;
|
||||
}
|
||||
/* If there are n periods in the name, there are n + 1 labels, and
|
||||
* thus n + 1 length fields, unless the name is empty or ends with a
|
||||
* period. So add 1 unless name is empty or ends with a period.
|
||||
*/
|
||||
if (*name && *(p - 1) != '.')
|
||||
len++;
|
||||
|
||||
/* Immediately reject names that are longer than the maximum of 255
|
||||
* bytes that's specified in RFC 1035 ("To simplify implementations,
|
||||
* the total length of a domain name (i.e., label octets and label
|
||||
* length octets) is restricted to 255 octets or less."). We aren't
|
||||
* doing this just to be a stickler about RFCs. For names that are
|
||||
* too long, 'dnscache' closes its TCP connection to us immediately
|
||||
* (when using TCP) and ignores the request when using UDP, and
|
||||
* BIND's named returns ServFail (TCP or UDP). Sending a request
|
||||
* that we know will cause 'dnscache' to close the TCP connection is
|
||||
* painful, since that makes any other outstanding requests on that
|
||||
* connection fail. And sending a UDP request that we know
|
||||
* 'dnscache' will ignore is bad because resources will be tied up
|
||||
* until we time-out the request.
|
||||
*/
|
||||
if (len > MAXCDNAME)
|
||||
return ARES_EBADNAME;
|
||||
|
||||
*buflen = len + HFIXEDSZ + QFIXEDSZ + (max_udp_size ? EDNSFIXEDSZ : 0);
|
||||
*buf = malloc(*buflen);
|
||||
if (!*buf)
|
||||
return ARES_ENOMEM;
|
||||
|
||||
/* Set up the header. */
|
||||
q = *buf;
|
||||
memset(q, 0, HFIXEDSZ);
|
||||
DNS_HEADER_SET_QID(q, id);
|
||||
DNS_HEADER_SET_OPCODE(q, QUERY);
|
||||
if (rd) {
|
||||
DNS_HEADER_SET_RD(q, 1);
|
||||
}
|
||||
else {
|
||||
DNS_HEADER_SET_RD(q, 0);
|
||||
}
|
||||
DNS_HEADER_SET_QDCOUNT(q, 1);
|
||||
|
||||
if (max_udp_size) {
|
||||
DNS_HEADER_SET_ARCOUNT(q, 1);
|
||||
}
|
||||
|
||||
/* A name of "." is a screw case for the loop below, so adjust it. */
|
||||
if (strcmp(name, ".") == 0)
|
||||
name++;
|
||||
|
||||
/* Start writing out the name after the header. */
|
||||
q += HFIXEDSZ;
|
||||
while (*name)
|
||||
{
|
||||
if (*name == '.')
|
||||
return ARES_EBADNAME;
|
||||
|
||||
/* Count the number of bytes in this label. */
|
||||
len = 0;
|
||||
for (p = name; *p && *p != '.'; p++)
|
||||
{
|
||||
if (*p == '\\' && *(p + 1) != 0)
|
||||
p++;
|
||||
len++;
|
||||
}
|
||||
if (len > MAXLABEL)
|
||||
return ARES_EBADNAME;
|
||||
|
||||
/* Encode the length and copy the data. */
|
||||
*q++ = (unsigned char)len;
|
||||
for (p = name; *p && *p != '.'; p++)
|
||||
{
|
||||
if (*p == '\\' && *(p + 1) != 0)
|
||||
p++;
|
||||
*q++ = *p;
|
||||
}
|
||||
|
||||
/* Go to the next label and repeat, unless we hit the end. */
|
||||
if (!*p)
|
||||
break;
|
||||
name = p + 1;
|
||||
}
|
||||
|
||||
/* Add the zero-length label at the end. */
|
||||
*q++ = 0;
|
||||
|
||||
/* Finish off the question with the type and class. */
|
||||
DNS_QUESTION_SET_TYPE(q, type);
|
||||
DNS_QUESTION_SET_CLASS(q, dnsclass);
|
||||
|
||||
if (max_udp_size)
|
||||
{
|
||||
q += QFIXEDSZ;
|
||||
memset(q, 0, EDNSFIXEDSZ);
|
||||
q++;
|
||||
DNS_RR_SET_TYPE(q, T_OPT);
|
||||
DNS_RR_SET_CLASS(q, max_udp_size);
|
||||
}
|
||||
|
||||
return ARES_SUCCESS;
|
||||
}
|
||||
32
deps/cares/src/ares_data.c
vendored
32
deps/cares/src/ares_data.c
vendored
@@ -1,5 +1,5 @@
|
||||
|
||||
/* Copyright (C) 2009-2013 by Daniel Stenberg
|
||||
/* Copyright (C) 2009-2012 by Daniel Stenberg
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software and its documentation for any purpose and without
|
||||
@@ -199,3 +199,33 @@ void *ares_malloc_data(ares_datatype type)
|
||||
|
||||
return &ptr->data;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
** ares_get_datatype() - c-ares internal helper function.
|
||||
**
|
||||
** This function returns the ares_datatype of the data stored in a
|
||||
** private ares_data struct when given the public API pointer.
|
||||
*/
|
||||
|
||||
ares_datatype ares_get_datatype(void * dataptr)
|
||||
{
|
||||
struct ares_data *ptr;
|
||||
|
||||
#ifdef __INTEL_COMPILER
|
||||
# pragma warning(push)
|
||||
# pragma warning(disable:1684)
|
||||
/* 1684: conversion from pointer to same-sized integral type */
|
||||
#endif
|
||||
|
||||
ptr = (void *)((char *)dataptr - offsetof(struct ares_data, data));
|
||||
|
||||
#ifdef __INTEL_COMPILER
|
||||
# pragma warning(pop)
|
||||
#endif
|
||||
|
||||
if (ptr->mark == ARES_DATATYPE_MARK)
|
||||
return ptr->type;
|
||||
|
||||
return ARES_DATATYPE_UNKNOWN;
|
||||
}
|
||||
|
||||
3
deps/cares/src/ares_data.h
vendored
3
deps/cares/src/ares_data.h
vendored
@@ -1,5 +1,5 @@
|
||||
|
||||
/* Copyright (C) 2009-2013 by Daniel Stenberg
|
||||
/* Copyright (C) 2009-2012 by Daniel Stenberg
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software and its documentation for any purpose and without
|
||||
@@ -66,3 +66,4 @@ struct ares_data {
|
||||
|
||||
void *ares_malloc_data(ares_datatype type);
|
||||
|
||||
ares_datatype ares_get_datatype(void * dataptr);
|
||||
|
||||
3
deps/cares/src/ares_destroy.c
vendored
3
deps/cares/src/ares_destroy.c
vendored
@@ -16,9 +16,8 @@
|
||||
*/
|
||||
|
||||
#include "ares_setup.h"
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
#include <stdlib.h>
|
||||
#include "ares.h"
|
||||
#include "ares_private.h"
|
||||
|
||||
|
||||
8
deps/cares/src/ares_dns.h
vendored
8
deps/cares/src/ares_dns.h
vendored
@@ -95,9 +95,9 @@
|
||||
#define DNS_RR_LEN(r) DNS__16BIT((r) + 8)
|
||||
|
||||
/* Macros for constructing the fixed part of a DNS resource record */
|
||||
#define DNS_RR_SET_TYPE(r, v) DNS__SET16BIT(r, v)
|
||||
#define DNS_RR_SET_CLASS(r, v) DNS__SET16BIT((r) + 2, v)
|
||||
#define DNS_RR_SET_TTL(r, v) DNS__SET32BIT((r) + 4, v)
|
||||
#define DNS_RR_SET_LEN(r, v) DNS__SET16BIT((r) + 8, v)
|
||||
#define DNS_RR_SET_TYPE(r) DNS__SET16BIT(r, v)
|
||||
#define DNS_RR_SET_CLASS(r) DNS__SET16BIT((r) + 2, v)
|
||||
#define DNS_RR_SET_TTL(r) DNS__SET32BIT((r) + 4, v)
|
||||
#define DNS_RR_SET_LEN(r) DNS__SET16BIT((r) + 8, v)
|
||||
|
||||
#endif /* HEADER_CARES_DNS_H */
|
||||
|
||||
6
deps/cares/src/ares_expand_name.c
vendored
6
deps/cares/src/ares_expand_name.c
vendored
@@ -16,6 +16,9 @@
|
||||
|
||||
#include "ares_setup.h"
|
||||
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
# include <sys/socket.h>
|
||||
#endif
|
||||
#ifdef HAVE_NETINET_IN_H
|
||||
# include <netinet/in.h>
|
||||
#endif
|
||||
@@ -28,6 +31,7 @@
|
||||
# include <arpa/nameser_compat.h>
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include "ares.h"
|
||||
#include "ares_nowarn.h"
|
||||
#include "ares_private.h" /* for the memdebug */
|
||||
@@ -143,7 +147,7 @@ static int name_length(const unsigned char *encoded, const unsigned char *abuf,
|
||||
int n = 0, offset, indir = 0;
|
||||
|
||||
/* Allow the caller to pass us abuf + alen and have us check for it. */
|
||||
if (encoded >= abuf + alen)
|
||||
if (encoded == abuf + alen)
|
||||
return -1;
|
||||
|
||||
while (*encoded)
|
||||
|
||||
5
deps/cares/src/ares_expand_string.c
vendored
5
deps/cares/src/ares_expand_string.c
vendored
@@ -16,6 +16,9 @@
|
||||
|
||||
#include "ares_setup.h"
|
||||
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
# include <sys/socket.h>
|
||||
#endif
|
||||
#ifdef HAVE_NETINET_IN_H
|
||||
# include <netinet/in.h>
|
||||
#endif
|
||||
@@ -25,6 +28,8 @@
|
||||
# include "nameser.h"
|
||||
#endif
|
||||
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include "ares.h"
|
||||
#include "ares_private.h" /* for the memdebug */
|
||||
|
||||
|
||||
4
deps/cares/src/ares_fds.c
vendored
4
deps/cares/src/ares_fds.c
vendored
@@ -16,6 +16,10 @@
|
||||
|
||||
#include "ares_setup.h"
|
||||
|
||||
#ifdef HAVE_SYS_TIME_H
|
||||
#include <sys/time.h>
|
||||
#endif
|
||||
|
||||
#include "ares.h"
|
||||
#include "ares_nowarn.h"
|
||||
#include "ares_private.h"
|
||||
|
||||
1
deps/cares/src/ares_free_hostent.c
vendored
1
deps/cares/src/ares_free_hostent.c
vendored
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
|
||||
#include "ares_setup.h"
|
||||
#include <stdlib.h>
|
||||
|
||||
#ifdef HAVE_NETDB_H
|
||||
#include <netdb.h>
|
||||
|
||||
2
deps/cares/src/ares_free_string.c
vendored
2
deps/cares/src/ares_free_string.c
vendored
@@ -15,7 +15,7 @@
|
||||
*/
|
||||
|
||||
#include "ares_setup.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include "ares.h"
|
||||
#include "ares_private.h"
|
||||
|
||||
|
||||
9
deps/cares/src/ares_gethostbyaddr.c
vendored
9
deps/cares/src/ares_gethostbyaddr.c
vendored
@@ -15,6 +15,9 @@
|
||||
*/
|
||||
#include "ares_setup.h"
|
||||
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
# include <sys/socket.h>
|
||||
#endif
|
||||
#ifdef HAVE_NETINET_IN_H
|
||||
# include <netinet/in.h>
|
||||
#endif
|
||||
@@ -33,8 +36,12 @@
|
||||
# include <arpa/nameser_compat.h>
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "ares.h"
|
||||
#include "ares_inet_net_pton.h"
|
||||
#include "inet_net_pton.h"
|
||||
#include "ares_platform.h"
|
||||
#include "ares_private.h"
|
||||
|
||||
|
||||
21
deps/cares/src/ares_gethostbyname.c
vendored
21
deps/cares/src/ares_gethostbyname.c
vendored
@@ -1,5 +1,5 @@
|
||||
|
||||
/* Copyright 1998, 2011, 2013 by the Massachusetts Institute of Technology.
|
||||
/* Copyright 1998, 2011 by the Massachusetts Institute of Technology.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software and its documentation for any purpose and without
|
||||
@@ -16,6 +16,9 @@
|
||||
|
||||
#include "ares_setup.h"
|
||||
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
# include <sys/socket.h>
|
||||
#endif
|
||||
#ifdef HAVE_NETINET_IN_H
|
||||
# include <netinet/in.h>
|
||||
#endif
|
||||
@@ -34,12 +37,16 @@
|
||||
# include <arpa/nameser_compat.h>
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
#ifdef HAVE_STRINGS_H
|
||||
#include <strings.h>
|
||||
#endif
|
||||
|
||||
#include "ares.h"
|
||||
#include "ares_inet_net_pton.h"
|
||||
#include "inet_net_pton.h"
|
||||
#include "bitncmp.h"
|
||||
#include "ares_platform.h"
|
||||
#include "ares_nowarn.h"
|
||||
@@ -460,8 +467,8 @@ static int get_address_index(const struct in_addr *addr,
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!ares__bitncmp(&addr->s_addr, &sortlist[i].addrV4.s_addr,
|
||||
sortlist[i].mask.bits))
|
||||
if (!ares_bitncmp(&addr->s_addr, &sortlist[i].addrV4.s_addr,
|
||||
sortlist[i].mask.bits))
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -508,8 +515,10 @@ static int get6_address_index(const struct ares_in6_addr *addr,
|
||||
{
|
||||
if (sortlist[i].family != AF_INET6)
|
||||
continue;
|
||||
if (!ares__bitncmp(addr, &sortlist[i].addrV6, sortlist[i].mask.bits))
|
||||
break;
|
||||
if (!ares_bitncmp(addr,
|
||||
&sortlist[i].addrV6,
|
||||
sortlist[i].mask.bits))
|
||||
break;
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
12
deps/cares/src/ares_getnameinfo.c
vendored
12
deps/cares/src/ares_getnameinfo.c
vendored
@@ -22,6 +22,9 @@
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
# include <sys/socket.h>
|
||||
#endif
|
||||
#ifdef HAVE_NETINET_IN_H
|
||||
# include <netinet/in.h>
|
||||
#endif
|
||||
@@ -44,8 +47,17 @@
|
||||
#include <net/if.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_UNISTD_H
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "ares.h"
|
||||
#include "ares_ipv6.h"
|
||||
#include "inet_ntop.h"
|
||||
#include "ares_nowarn.h"
|
||||
#include "ares_private.h"
|
||||
|
||||
|
||||
4
deps/cares/src/ares_getsock.c
vendored
4
deps/cares/src/ares_getsock.c
vendored
@@ -14,6 +14,10 @@
|
||||
|
||||
#include "ares_setup.h"
|
||||
|
||||
#ifdef HAVE_SYS_TIME_H
|
||||
#include <sys/time.h>
|
||||
#endif
|
||||
|
||||
#include "ares.h"
|
||||
#include "ares_private.h"
|
||||
|
||||
|
||||
25
deps/cares/src/ares_inet_net_pton.h
vendored
25
deps/cares/src/ares_inet_net_pton.h
vendored
@@ -1,25 +0,0 @@
|
||||
#ifndef HEADER_CARES_INET_NET_PTON_H
|
||||
#define HEADER_CARES_INET_NET_PTON_H
|
||||
|
||||
/* Copyright (C) 2005-2013 by Daniel Stenberg et al
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software and its documentation for any purpose and without
|
||||
* fee is hereby granted, provided that the above copyright
|
||||
* notice appear in all copies and that both that copyright
|
||||
* notice and this permission notice appear in supporting
|
||||
* documentation, and that the name of M.I.T. not be used in
|
||||
* advertising or publicity pertaining to distribution of the
|
||||
* software without specific, written prior permission.
|
||||
* M.I.T. makes no representations about the suitability of
|
||||
* this software for any purpose. It is provided "as is"
|
||||
* without express or implied warranty.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_INET_NET_PTON
|
||||
#define ares_inet_net_pton(w,x,y,z) inet_net_pton(w,x,y,z)
|
||||
#else
|
||||
int ares_inet_net_pton(int af, const char *src, void *dst, size_t size);
|
||||
#endif
|
||||
|
||||
#endif /* HEADER_CARES_INET_NET_PTON_H */
|
||||
39
deps/cares/src/ares_init.c
vendored
39
deps/cares/src/ares_init.c
vendored
@@ -1,6 +1,6 @@
|
||||
|
||||
/* Copyright 1998 by the Massachusetts Institute of Technology.
|
||||
* Copyright (C) 2007-2013 by Daniel Stenberg
|
||||
* Copyright (C) 2007-2012 by Daniel Stenberg
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software and its documentation for any purpose and without
|
||||
@@ -21,6 +21,14 @@
|
||||
#include <sys/param.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_SYS_TIME_H
|
||||
#include <sys/time.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
#include <sys/socket.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_NETINET_IN_H
|
||||
#include <netinet/in.h>
|
||||
#endif
|
||||
@@ -42,6 +50,16 @@
|
||||
# include <arpa/nameser_compat.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_UNISTD_H
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
#include <time.h>
|
||||
|
||||
#if defined(ANDROID) || defined(__ANDROID__)
|
||||
#include <sys/system_properties.h>
|
||||
/* From the Bionic sources */
|
||||
@@ -50,7 +68,8 @@
|
||||
#endif
|
||||
|
||||
#include "ares.h"
|
||||
#include "ares_inet_net_pton.h"
|
||||
#include "inet_ntop.h"
|
||||
#include "inet_net_pton.h"
|
||||
#include "ares_library_init.h"
|
||||
#include "ares_nowarn.h"
|
||||
#include "ares_platform.h"
|
||||
@@ -144,7 +163,6 @@ int ares_init_options(ares_channel *channelptr, struct ares_options *options,
|
||||
channel->rotate = -1;
|
||||
channel->udp_port = -1;
|
||||
channel->tcp_port = -1;
|
||||
channel->ednspsz = -1;
|
||||
channel->socket_send_buffer_size = -1;
|
||||
channel->socket_receive_buffer_size = -1;
|
||||
channel->nservers = -1;
|
||||
@@ -435,9 +453,6 @@ static int init_by_options(ares_channel channel,
|
||||
&& channel->socket_receive_buffer_size == -1)
|
||||
channel->socket_receive_buffer_size = options->socket_receive_buffer_size;
|
||||
|
||||
if ((optmask & ARES_OPT_EDNSPSZ) && channel->ednspsz == -1)
|
||||
channel->ednspsz = options->ednspsz;
|
||||
|
||||
/* Copy the IPv4 servers, if given. */
|
||||
if ((optmask & ARES_OPT_SERVERS) && channel->nservers == -1)
|
||||
{
|
||||
@@ -1005,7 +1020,7 @@ static int get_DNS_AdaptersAddresses(char **outptr)
|
||||
if (memcmp(&namesrvr.sa6->sin6_addr, &ares_in6addr_any,
|
||||
sizeof(namesrvr.sa6->sin6_addr)) == 0)
|
||||
continue;
|
||||
if (! ares_inet_ntop(AF_INET6, &namesrvr.sa6->sin6_addr,
|
||||
if (! ares_inet_ntop(AF_INET, &namesrvr.sa6->sin6_addr,
|
||||
txtaddr, sizeof(txtaddr)))
|
||||
continue;
|
||||
}
|
||||
@@ -1348,9 +1363,6 @@ static int init_by_defaults(ares_channel channel)
|
||||
if (channel->tcp_port == -1)
|
||||
channel->tcp_port = htons(NAMESERVER_PORT);
|
||||
|
||||
if (channel->ednspsz == -1)
|
||||
channel->ednspsz = EDNSPACKETSZ;
|
||||
|
||||
if (channel->nservers == -1) {
|
||||
/* If nobody specified servers, try a local named. */
|
||||
channel->servers = malloc(sizeof(struct server_state));
|
||||
@@ -1948,6 +1960,13 @@ static int init_id_key(rc4_key* key,int key_data_len)
|
||||
return ARES_SUCCESS;
|
||||
}
|
||||
|
||||
unsigned short ares__generate_new_id(rc4_key* key)
|
||||
{
|
||||
unsigned short r=0;
|
||||
ares__rc4(key, (unsigned char *)&r, sizeof(r));
|
||||
return r;
|
||||
}
|
||||
|
||||
void ares_set_local_ip4(ares_channel channel, unsigned int local_ip)
|
||||
{
|
||||
channel->local_ip4 = local_ip;
|
||||
|
||||
7
deps/cares/src/ares_library_init.c
vendored
7
deps/cares/src/ares_library_init.c
vendored
@@ -101,10 +101,7 @@ int ares_library_init(int flags)
|
||||
int res;
|
||||
|
||||
if (ares_initialized)
|
||||
{
|
||||
ares_initialized++;
|
||||
return ARES_SUCCESS;
|
||||
}
|
||||
return ARES_SUCCESS;
|
||||
ares_initialized++;
|
||||
|
||||
if (flags & ARES_LIB_INIT_WIN32)
|
||||
@@ -125,8 +122,6 @@ void ares_library_cleanup(void)
|
||||
if (!ares_initialized)
|
||||
return;
|
||||
ares_initialized--;
|
||||
if (ares_initialized)
|
||||
return;
|
||||
|
||||
if (ares_init_flags & ARES_LIB_INIT_WIN32)
|
||||
ares_win32_cleanup();
|
||||
|
||||
23
deps/cares/src/ares_llist.c
vendored
23
deps/cares/src/ares_llist.c
vendored
@@ -61,3 +61,26 @@ void ares__remove_from_list(struct list_node* node) {
|
||||
}
|
||||
}
|
||||
|
||||
/* Swap the contents of two lists */
|
||||
void ares__swap_lists(struct list_node* head_a,
|
||||
struct list_node* head_b) {
|
||||
int is_a_empty = ares__is_list_empty(head_a);
|
||||
int is_b_empty = ares__is_list_empty(head_b);
|
||||
struct list_node old_a = *head_a;
|
||||
struct list_node old_b = *head_b;
|
||||
|
||||
if (is_a_empty) {
|
||||
ares__init_list_head(head_b);
|
||||
} else {
|
||||
*head_b = old_a;
|
||||
old_a.next->prev = head_b;
|
||||
old_a.prev->next = head_b;
|
||||
}
|
||||
if (is_b_empty) {
|
||||
ares__init_list_head(head_a);
|
||||
} else {
|
||||
*head_a = old_b;
|
||||
old_b.next->prev = head_a;
|
||||
old_b.prev->next = head_a;
|
||||
}
|
||||
}
|
||||
|
||||
3
deps/cares/src/ares_llist.h
vendored
3
deps/cares/src/ares_llist.h
vendored
@@ -36,4 +36,7 @@ void ares__insert_in_list(struct list_node* new_node,
|
||||
|
||||
void ares__remove_from_list(struct list_node* node);
|
||||
|
||||
void ares__swap_lists(struct list_node* head_a,
|
||||
struct list_node* head_b);
|
||||
|
||||
#endif /* __ARES_LLIST_H */
|
||||
|
||||
173
deps/cares/src/ares_mkquery.c
vendored
173
deps/cares/src/ares_mkquery.c
vendored
@@ -15,10 +15,181 @@
|
||||
*/
|
||||
|
||||
#include "ares_setup.h"
|
||||
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
# include <sys/socket.h>
|
||||
#endif
|
||||
#ifdef HAVE_NETINET_IN_H
|
||||
# include <netinet/in.h>
|
||||
#endif
|
||||
#ifdef HAVE_ARPA_NAMESER_H
|
||||
# include <arpa/nameser.h>
|
||||
#else
|
||||
# include "nameser.h"
|
||||
#endif
|
||||
#ifdef HAVE_ARPA_NAMESER_COMPAT_H
|
||||
# include <arpa/nameser_compat.h>
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "ares.h"
|
||||
#include "ares_dns.h"
|
||||
#include "ares_private.h"
|
||||
|
||||
/* Header format, from RFC 1035:
|
||||
* 1 1 1 1 1 1
|
||||
* 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
|
||||
* +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
||||
* | ID |
|
||||
* +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
||||
* |QR| Opcode |AA|TC|RD|RA| Z | RCODE |
|
||||
* +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
||||
* | QDCOUNT |
|
||||
* +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
||||
* | ANCOUNT |
|
||||
* +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
||||
* | NSCOUNT |
|
||||
* +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
||||
* | ARCOUNT |
|
||||
* +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
||||
*
|
||||
* AA, TC, RA, and RCODE are only set in responses. Brief description
|
||||
* of the remaining fields:
|
||||
* ID Identifier to match responses with queries
|
||||
* QR Query (0) or response (1)
|
||||
* Opcode For our purposes, always QUERY
|
||||
* RD Recursion desired
|
||||
* Z Reserved (zero)
|
||||
* QDCOUNT Number of queries
|
||||
* ANCOUNT Number of answers
|
||||
* NSCOUNT Number of name server records
|
||||
* ARCOUNT Number of additional records
|
||||
*
|
||||
* Question format, from RFC 1035:
|
||||
* 1 1 1 1 1 1
|
||||
* 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
|
||||
* +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
||||
* | |
|
||||
* / QNAME /
|
||||
* / /
|
||||
* +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
||||
* | QTYPE |
|
||||
* +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
||||
* | QCLASS |
|
||||
* +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|
||||
*
|
||||
* The query name is encoded as a series of labels, each represented
|
||||
* as a one-byte length (maximum 63) followed by the text of the
|
||||
* label. The list is terminated by a label of length zero (which can
|
||||
* be thought of as the root domain).
|
||||
*/
|
||||
|
||||
int ares_mkquery(const char *name, int dnsclass, int type, unsigned short id,
|
||||
int rd, unsigned char **buf, int *buflen)
|
||||
{
|
||||
return ares_create_query(name, dnsclass, type, id, rd, buf, buflen, 0);
|
||||
int len;
|
||||
unsigned char *q;
|
||||
const char *p;
|
||||
|
||||
/* Set our results early, in case we bail out early with an error. */
|
||||
*buflen = 0;
|
||||
*buf = NULL;
|
||||
|
||||
/* Compute the length of the encoded name so we can check buflen.
|
||||
* Start counting at 1 for the zero-length label at the end. */
|
||||
len = 1;
|
||||
for (p = name; *p; p++)
|
||||
{
|
||||
if (*p == '\\' && *(p + 1) != 0)
|
||||
p++;
|
||||
len++;
|
||||
}
|
||||
/* If there are n periods in the name, there are n + 1 labels, and
|
||||
* thus n + 1 length fields, unless the name is empty or ends with a
|
||||
* period. So add 1 unless name is empty or ends with a period.
|
||||
*/
|
||||
if (*name && *(p - 1) != '.')
|
||||
len++;
|
||||
|
||||
/* Immediately reject names that are longer than the maximum of 255
|
||||
* bytes that's specified in RFC 1035 ("To simplify implementations,
|
||||
* the total length of a domain name (i.e., label octets and label
|
||||
* length octets) is restricted to 255 octets or less."). We aren't
|
||||
* doing this just to be a stickler about RFCs. For names that are
|
||||
* too long, 'dnscache' closes its TCP connection to us immediately
|
||||
* (when using TCP) and ignores the request when using UDP, and
|
||||
* BIND's named returns ServFail (TCP or UDP). Sending a request
|
||||
* that we know will cause 'dnscache' to close the TCP connection is
|
||||
* painful, since that makes any other outstanding requests on that
|
||||
* connection fail. And sending a UDP request that we know
|
||||
* 'dnscache' will ignore is bad because resources will be tied up
|
||||
* until we time-out the request.
|
||||
*/
|
||||
if (len > MAXCDNAME)
|
||||
return ARES_EBADNAME;
|
||||
|
||||
*buflen = len + HFIXEDSZ + QFIXEDSZ;
|
||||
*buf = malloc(*buflen);
|
||||
if (!*buf)
|
||||
return ARES_ENOMEM;
|
||||
|
||||
/* Set up the header. */
|
||||
q = *buf;
|
||||
memset(q, 0, HFIXEDSZ);
|
||||
DNS_HEADER_SET_QID(q, id);
|
||||
DNS_HEADER_SET_OPCODE(q, QUERY);
|
||||
if (rd) {
|
||||
DNS_HEADER_SET_RD(q, 1);
|
||||
}
|
||||
else {
|
||||
DNS_HEADER_SET_RD(q, 0);
|
||||
}
|
||||
DNS_HEADER_SET_QDCOUNT(q, 1);
|
||||
|
||||
/* A name of "." is a screw case for the loop below, so adjust it. */
|
||||
if (strcmp(name, ".") == 0)
|
||||
name++;
|
||||
|
||||
/* Start writing out the name after the header. */
|
||||
q += HFIXEDSZ;
|
||||
while (*name)
|
||||
{
|
||||
if (*name == '.')
|
||||
return ARES_EBADNAME;
|
||||
|
||||
/* Count the number of bytes in this label. */
|
||||
len = 0;
|
||||
for (p = name; *p && *p != '.'; p++)
|
||||
{
|
||||
if (*p == '\\' && *(p + 1) != 0)
|
||||
p++;
|
||||
len++;
|
||||
}
|
||||
if (len > MAXLABEL)
|
||||
return ARES_EBADNAME;
|
||||
|
||||
/* Encode the length and copy the data. */
|
||||
*q++ = (unsigned char)len;
|
||||
for (p = name; *p && *p != '.'; p++)
|
||||
{
|
||||
if (*p == '\\' && *(p + 1) != 0)
|
||||
p++;
|
||||
*q++ = *p;
|
||||
}
|
||||
|
||||
/* Go to the next label and repeat, unless we hit the end. */
|
||||
if (!*p)
|
||||
break;
|
||||
name = p + 1;
|
||||
}
|
||||
|
||||
/* Add the zero-length label at the end. */
|
||||
*q++ = 0;
|
||||
|
||||
/* Finish off the question with the type and class. */
|
||||
DNS_QUESTION_SET_TYPE(q, type);
|
||||
DNS_QUESTION_SET_CLASS(q, dnsclass);
|
||||
|
||||
return ARES_SUCCESS;
|
||||
}
|
||||
|
||||
3
deps/cares/src/ares_nowarn.c
vendored
3
deps/cares/src/ares_nowarn.c
vendored
@@ -23,6 +23,9 @@
|
||||
|
||||
#if defined(__INTEL_COMPILER) && defined(__unix__)
|
||||
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
# include <sys/socket.h>
|
||||
#endif
|
||||
#ifdef HAVE_NETINET_IN_H
|
||||
# include <netinet/in.h>
|
||||
#endif
|
||||
|
||||
64
deps/cares/src/ares_options.c
vendored
64
deps/cares/src/ares_options.c
vendored
@@ -1,6 +1,6 @@
|
||||
|
||||
/* Copyright 1998 by the Massachusetts Institute of Technology.
|
||||
* Copyright (C) 2008-2013 by Daniel Stenberg
|
||||
* Copyright (C) 2008-2011 by Daniel Stenberg
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software and its documentation for any purpose and without
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
#include "ares.h"
|
||||
#include "ares_data.h"
|
||||
#include "ares_inet_net_pton.h"
|
||||
#include "inet_net_pton.h"
|
||||
#include "ares_private.h"
|
||||
|
||||
|
||||
@@ -132,7 +132,6 @@ int ares_set_servers(ares_channel channel,
|
||||
}
|
||||
|
||||
/* Incomming string format: host[:port][,host[:port]]... */
|
||||
/* IPv6 addresses with ports require square brackets [fe80::1%lo0]:53 */
|
||||
int ares_set_servers_csv(ares_channel channel,
|
||||
const char* _csv)
|
||||
{
|
||||
@@ -140,7 +139,6 @@ int ares_set_servers_csv(ares_channel channel,
|
||||
char* csv = NULL;
|
||||
char* ptr;
|
||||
char* start_host;
|
||||
int cc = 0;
|
||||
int rv = ARES_SUCCESS;
|
||||
struct ares_addr_node *servers = NULL;
|
||||
struct ares_addr_node *last = NULL;
|
||||
@@ -166,53 +164,28 @@ int ares_set_servers_csv(ares_channel channel,
|
||||
|
||||
start_host = csv;
|
||||
for (ptr = csv; *ptr; ptr++) {
|
||||
if (*ptr == ':') {
|
||||
/* count colons to determine if we have an IPv6 number or IPv4 with
|
||||
port */
|
||||
cc++;
|
||||
}
|
||||
else if (*ptr == '[') {
|
||||
/* move start_host if an open square bracket is found wrapping an IPv6
|
||||
address */
|
||||
start_host = ptr + 1;
|
||||
}
|
||||
else if (*ptr == ',') {
|
||||
if (*ptr == ',') {
|
||||
char* pp = ptr - 1;
|
||||
char* p = ptr;
|
||||
struct in_addr in4;
|
||||
struct ares_in6_addr in6;
|
||||
struct ares_addr_node *s = NULL;
|
||||
|
||||
*ptr = 0; /* null terminate host:port string */
|
||||
/* Got an entry..see if the port was specified. */
|
||||
if (cc > 0) {
|
||||
while (pp > start_host) {
|
||||
/* a single close square bracket followed by a colon, ']:' indicates
|
||||
an IPv6 address with port */
|
||||
if ((*pp == ']') && (*p == ':'))
|
||||
break; /* found port */
|
||||
/* a single colon, ':' indicates an IPv4 address with port */
|
||||
if ((*pp == ':') && (cc == 1))
|
||||
break; /* found port */
|
||||
if (!(ISDIGIT(*pp) || (*pp == ':'))) {
|
||||
/* Found end of digits before we found :, so wasn't a port */
|
||||
/* must allow ':' for IPv6 case of ']:' indicates we found a port */
|
||||
pp = p = ptr;
|
||||
break;
|
||||
}
|
||||
pp--;
|
||||
p--;
|
||||
}
|
||||
if ((pp != start_host) && ((pp + 1) < ptr)) {
|
||||
/* Found it. Parse over the port number */
|
||||
/* when an IPv6 address is wrapped with square brackets the port
|
||||
starts at pp + 2 */
|
||||
if (*pp == ']')
|
||||
p++; /* move p before ':' */
|
||||
/* p will point to the start of the port */
|
||||
(void)strtol(p, NULL, 10);
|
||||
*pp = 0; /* null terminate host */
|
||||
/* Got an entry..see if port was specified. */
|
||||
while (pp > start_host) {
|
||||
if (*pp == ':')
|
||||
break; /* yes */
|
||||
if (!ISDIGIT(*pp)) {
|
||||
/* Found end of digits before we found :, so wasn't a port */
|
||||
pp = ptr;
|
||||
break;
|
||||
}
|
||||
pp--;
|
||||
}
|
||||
if ((pp != start_host) && ((pp + 1) < ptr)) {
|
||||
/* Found it. Parse over the port number */
|
||||
(void)strtol(pp + 1, NULL, 10);
|
||||
*pp = 0; /* null terminate host */
|
||||
}
|
||||
/* resolve host, try ipv4 first, rslt is in network byte order */
|
||||
rv = ares_inet_pton(AF_INET, start_host, &in4);
|
||||
@@ -248,8 +221,6 @@ int ares_set_servers_csv(ares_channel channel,
|
||||
s->next = NULL;
|
||||
if (last) {
|
||||
last->next = s;
|
||||
/* need to move last to maintain the linked list */
|
||||
last = last->next;
|
||||
}
|
||||
else {
|
||||
servers = s;
|
||||
@@ -259,7 +230,6 @@ int ares_set_servers_csv(ares_channel channel,
|
||||
|
||||
/* Set up for next one */
|
||||
start_host = ptr + 1;
|
||||
cc = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
11
deps/cares/src/ares_parse_a_reply.c
vendored
11
deps/cares/src/ares_parse_a_reply.c
vendored
@@ -16,6 +16,9 @@
|
||||
|
||||
#include "ares_setup.h"
|
||||
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
# include <sys/socket.h>
|
||||
#endif
|
||||
#ifdef HAVE_NETINET_IN_H
|
||||
# include <netinet/in.h>
|
||||
#endif
|
||||
@@ -38,6 +41,8 @@
|
||||
# include <strings.h>
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#ifdef HAVE_LIMITS_H
|
||||
# include <limits.h>
|
||||
#endif
|
||||
@@ -136,12 +141,6 @@ int ares_parse_a_reply(const unsigned char *abuf, int alen,
|
||||
rr_len = DNS_RR_LEN(aptr);
|
||||
rr_ttl = DNS_RR_TTL(aptr);
|
||||
aptr += RRFIXEDSZ;
|
||||
if (aptr + rr_len > abuf + alen)
|
||||
{
|
||||
free(rr_name);
|
||||
status = ARES_EBADRESP;
|
||||
break;
|
||||
}
|
||||
|
||||
if (rr_class == C_IN && rr_type == T_A
|
||||
&& rr_len == sizeof(struct in_addr)
|
||||
|
||||
15
deps/cares/src/ares_parse_aaaa_reply.c
vendored
15
deps/cares/src/ares_parse_aaaa_reply.c
vendored
@@ -17,6 +17,9 @@
|
||||
|
||||
#include "ares_setup.h"
|
||||
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
# include <sys/socket.h>
|
||||
#endif
|
||||
#ifdef HAVE_NETINET_IN_H
|
||||
# include <netinet/in.h>
|
||||
#endif
|
||||
@@ -39,13 +42,15 @@
|
||||
# include <strings.h>
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#ifdef HAVE_LIMITS_H
|
||||
# include <limits.h>
|
||||
#endif
|
||||
|
||||
#include "ares.h"
|
||||
#include "ares_dns.h"
|
||||
#include "ares_inet_net_pton.h"
|
||||
#include "inet_net_pton.h"
|
||||
#include "ares_private.h"
|
||||
|
||||
int ares_parse_aaaa_reply(const unsigned char *abuf, int alen,
|
||||
@@ -136,12 +141,6 @@ int ares_parse_aaaa_reply(const unsigned char *abuf, int alen,
|
||||
rr_len = DNS_RR_LEN(aptr);
|
||||
rr_ttl = DNS_RR_TTL(aptr);
|
||||
aptr += RRFIXEDSZ;
|
||||
if (aptr + rr_len > abuf + alen)
|
||||
{
|
||||
free(rr_name);
|
||||
status = ARES_EBADRESP;
|
||||
break;
|
||||
}
|
||||
|
||||
if (rr_class == C_IN && rr_type == T_AAAA
|
||||
&& rr_len == sizeof(struct ares_in6_addr)
|
||||
@@ -242,8 +241,6 @@ int ares_parse_aaaa_reply(const unsigned char *abuf, int alen,
|
||||
for (i = 0; i < naddrs; i++)
|
||||
hostent->h_addr_list[i] = (char *) &addrs[i];
|
||||
hostent->h_addr_list[naddrs] = NULL;
|
||||
if (!naddrs && addrs)
|
||||
free(addrs);
|
||||
*host = hostent;
|
||||
return ARES_SUCCESS;
|
||||
}
|
||||
|
||||
10
deps/cares/src/ares_parse_mx_reply.c
vendored
10
deps/cares/src/ares_parse_mx_reply.c
vendored
@@ -17,6 +17,9 @@
|
||||
|
||||
#include "ares_setup.h"
|
||||
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
# include <sys/socket.h>
|
||||
#endif
|
||||
#ifdef HAVE_NETINET_IN_H
|
||||
# include <netinet/in.h>
|
||||
#endif
|
||||
@@ -35,6 +38,8 @@
|
||||
# include <arpa/nameser_compat.h>
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "ares.h"
|
||||
#include "ares_dns.h"
|
||||
#include "ares_data.h"
|
||||
@@ -100,11 +105,6 @@ ares_parse_mx_reply (const unsigned char *abuf, int alen,
|
||||
rr_class = DNS_RR_CLASS (aptr);
|
||||
rr_len = DNS_RR_LEN (aptr);
|
||||
aptr += RRFIXEDSZ;
|
||||
if (aptr + rr_len > abuf + alen)
|
||||
{
|
||||
status = ARES_EBADRESP;
|
||||
break;
|
||||
}
|
||||
|
||||
/* Check if we are really looking at a MX record */
|
||||
if (rr_class == C_IN && rr_type == T_MX)
|
||||
|
||||
10
deps/cares/src/ares_parse_naptr_reply.c
vendored
10
deps/cares/src/ares_parse_naptr_reply.c
vendored
@@ -17,6 +17,9 @@
|
||||
|
||||
#include "ares_setup.h"
|
||||
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
# include <sys/socket.h>
|
||||
#endif
|
||||
#ifdef HAVE_NETINET_IN_H
|
||||
# include <netinet/in.h>
|
||||
#endif
|
||||
@@ -35,6 +38,8 @@
|
||||
# include <arpa/nameser_compat.h>
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "ares.h"
|
||||
#include "ares_dns.h"
|
||||
#include "ares_data.h"
|
||||
@@ -105,11 +110,6 @@ ares_parse_naptr_reply (const unsigned char *abuf, int alen,
|
||||
rr_class = DNS_RR_CLASS (aptr);
|
||||
rr_len = DNS_RR_LEN (aptr);
|
||||
aptr += RRFIXEDSZ;
|
||||
if (aptr + rr_len > abuf + alen)
|
||||
{
|
||||
status = ARES_EBADRESP;
|
||||
break;
|
||||
}
|
||||
|
||||
/* Check if we are really looking at a NAPTR record */
|
||||
if (rr_class == C_IN && rr_type == T_NAPTR)
|
||||
|
||||
11
deps/cares/src/ares_parse_ns_reply.c
vendored
11
deps/cares/src/ares_parse_ns_reply.c
vendored
@@ -20,6 +20,9 @@
|
||||
|
||||
#include "ares_setup.h"
|
||||
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
# include <sys/socket.h>
|
||||
#endif
|
||||
#ifdef HAVE_NETINET_IN_H
|
||||
# include <netinet/in.h>
|
||||
#endif
|
||||
@@ -38,6 +41,8 @@
|
||||
# include <arpa/nameser_compat.h>
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "ares.h"
|
||||
#include "ares_dns.h"
|
||||
#include "ares_private.h"
|
||||
@@ -105,12 +110,6 @@ int ares_parse_ns_reply( const unsigned char* abuf, int alen,
|
||||
rr_class = DNS_RR_CLASS( aptr );
|
||||
rr_len = DNS_RR_LEN( aptr );
|
||||
aptr += RRFIXEDSZ;
|
||||
if (aptr + rr_len > abuf + alen)
|
||||
{
|
||||
free(rr_name);
|
||||
status = ARES_EBADRESP;
|
||||
break;
|
||||
}
|
||||
|
||||
if ( rr_class == C_IN && rr_type == T_NS )
|
||||
{
|
||||
|
||||
13
deps/cares/src/ares_parse_ptr_reply.c
vendored
13
deps/cares/src/ares_parse_ptr_reply.c
vendored
@@ -16,6 +16,9 @@
|
||||
|
||||
#include "ares_setup.h"
|
||||
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
# include <sys/socket.h>
|
||||
#endif
|
||||
#ifdef HAVE_NETINET_IN_H
|
||||
# include <netinet/in.h>
|
||||
#endif
|
||||
@@ -35,6 +38,8 @@
|
||||
# include <strings.h>
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "ares.h"
|
||||
#include "ares_dns.h"
|
||||
#include "ares_nowarn.h"
|
||||
@@ -103,12 +108,6 @@ int ares_parse_ptr_reply(const unsigned char *abuf, int alen, const void *addr,
|
||||
rr_class = DNS_RR_CLASS(aptr);
|
||||
rr_len = DNS_RR_LEN(aptr);
|
||||
aptr += RRFIXEDSZ;
|
||||
if (aptr + rr_len > abuf + alen)
|
||||
{
|
||||
free(rr_name);
|
||||
status = ARES_EBADRESP;
|
||||
break;
|
||||
}
|
||||
|
||||
if (rr_class == C_IN && rr_type == T_PTR
|
||||
&& strcasecmp(rr_name, ptrname) == 0)
|
||||
@@ -209,7 +208,7 @@ int ares_parse_ptr_reply(const unsigned char *abuf, int alen, const void *addr,
|
||||
status = ARES_ENOMEM;
|
||||
}
|
||||
for (i=0 ; i<aliascnt ; i++)
|
||||
if (aliases[i])
|
||||
if (aliases[i])
|
||||
free(aliases[i]);
|
||||
free(aliases);
|
||||
if (hostname)
|
||||
|
||||
5
deps/cares/src/ares_parse_soa_reply.c
vendored
5
deps/cares/src/ares_parse_soa_reply.c
vendored
@@ -17,6 +17,9 @@
|
||||
|
||||
#include "ares_setup.h"
|
||||
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
# include <sys/socket.h>
|
||||
#endif
|
||||
#ifdef HAVE_NETINET_IN_H
|
||||
# include <netinet/in.h>
|
||||
#endif
|
||||
@@ -35,6 +38,8 @@
|
||||
# include <arpa/nameser_compat.h>
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "ares.h"
|
||||
#include "ares_dns.h"
|
||||
#include "ares_data.h"
|
||||
|
||||
10
deps/cares/src/ares_parse_srv_reply.c
vendored
10
deps/cares/src/ares_parse_srv_reply.c
vendored
@@ -17,6 +17,9 @@
|
||||
|
||||
#include "ares_setup.h"
|
||||
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
# include <sys/socket.h>
|
||||
#endif
|
||||
#ifdef HAVE_NETINET_IN_H
|
||||
# include <netinet/in.h>
|
||||
#endif
|
||||
@@ -35,6 +38,8 @@
|
||||
# include <arpa/nameser_compat.h>
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "ares.h"
|
||||
#include "ares_dns.h"
|
||||
#include "ares_data.h"
|
||||
@@ -105,11 +110,6 @@ ares_parse_srv_reply (const unsigned char *abuf, int alen,
|
||||
rr_class = DNS_RR_CLASS (aptr);
|
||||
rr_len = DNS_RR_LEN (aptr);
|
||||
aptr += RRFIXEDSZ;
|
||||
if (aptr + rr_len > abuf + alen)
|
||||
{
|
||||
status = ARES_EBADRESP;
|
||||
break;
|
||||
}
|
||||
|
||||
/* Check if we are really looking at a SRV record */
|
||||
if (rr_class == C_IN && rr_type == T_SRV)
|
||||
|
||||
87
deps/cares/src/ares_parse_txt_reply.c
vendored
87
deps/cares/src/ares_parse_txt_reply.c
vendored
@@ -17,6 +17,9 @@
|
||||
|
||||
#include "ares_setup.h"
|
||||
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
# include <sys/socket.h>
|
||||
#endif
|
||||
#ifdef HAVE_NETINET_IN_H
|
||||
# include <netinet/in.h>
|
||||
#endif
|
||||
@@ -39,6 +42,9 @@
|
||||
# include <strings.h>
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "ares.h"
|
||||
#include "ares_dns.h"
|
||||
#include "ares_data.h"
|
||||
@@ -48,7 +54,7 @@ int
|
||||
ares_parse_txt_reply (const unsigned char *abuf, int alen,
|
||||
struct ares_txt_reply **txt_out)
|
||||
{
|
||||
size_t substr_len;
|
||||
size_t substr_len, str_len;
|
||||
unsigned int qdcount, ancount, i;
|
||||
const unsigned char *aptr;
|
||||
const unsigned char *strptr;
|
||||
@@ -106,15 +112,27 @@ ares_parse_txt_reply (const unsigned char *abuf, int alen,
|
||||
rr_class = DNS_RR_CLASS (aptr);
|
||||
rr_len = DNS_RR_LEN (aptr);
|
||||
aptr += RRFIXEDSZ;
|
||||
if (aptr + rr_len > abuf + alen)
|
||||
{
|
||||
status = ARES_EBADRESP;
|
||||
break;
|
||||
}
|
||||
|
||||
/* Check if we are really looking at a TXT record */
|
||||
if (rr_class == C_IN && rr_type == T_TXT)
|
||||
{
|
||||
/* Allocate storage for this TXT answer appending it to the list */
|
||||
txt_curr = ares_malloc_data(ARES_DATATYPE_TXT_REPLY);
|
||||
if (!txt_curr)
|
||||
{
|
||||
status = ARES_ENOMEM;
|
||||
break;
|
||||
}
|
||||
if (txt_last)
|
||||
{
|
||||
txt_last->next = txt_curr;
|
||||
}
|
||||
else
|
||||
{
|
||||
txt_head = txt_curr;
|
||||
}
|
||||
txt_last = txt_curr;
|
||||
|
||||
/*
|
||||
* There may be multiple substrings in a single TXT record. Each
|
||||
* substring may be up to 255 characters in length, with a
|
||||
@@ -123,49 +141,36 @@ ares_parse_txt_reply (const unsigned char *abuf, int alen,
|
||||
* substrings contained therein.
|
||||
*/
|
||||
|
||||
/* Compute total length to allow a single memory allocation */
|
||||
strptr = aptr;
|
||||
while (strptr < (aptr + rr_len))
|
||||
{
|
||||
substr_len = (unsigned char)*strptr;
|
||||
if (strptr + substr_len + 1 > aptr + rr_len)
|
||||
{
|
||||
status = ARES_EBADRESP;
|
||||
break;
|
||||
}
|
||||
txt_curr->length += substr_len;
|
||||
strptr += substr_len + 1;
|
||||
}
|
||||
|
||||
++strptr;
|
||||
|
||||
/* Allocate storage for this TXT answer appending it to the list */
|
||||
txt_curr = ares_malloc_data(ARES_DATATYPE_TXT_REPLY);
|
||||
if (!txt_curr)
|
||||
{
|
||||
status = ARES_ENOMEM;
|
||||
break;
|
||||
}
|
||||
if (txt_last)
|
||||
{
|
||||
txt_last->next = txt_curr;
|
||||
}
|
||||
else
|
||||
{
|
||||
txt_head = txt_curr;
|
||||
}
|
||||
txt_last = txt_curr;
|
||||
|
||||
txt_curr->length = substr_len;
|
||||
txt_curr->txt = malloc (substr_len + 1/* Including null byte */);
|
||||
if (txt_curr->txt == NULL)
|
||||
{
|
||||
status = ARES_ENOMEM;
|
||||
break;
|
||||
}
|
||||
memcpy ((char *) txt_curr->txt, strptr, substr_len);
|
||||
|
||||
/* Make sure we NULL-terminate */
|
||||
txt_curr->txt[substr_len] = 0;
|
||||
/* Including null byte */
|
||||
txt_curr->txt = malloc (txt_curr->length + 1);
|
||||
if (txt_curr->txt == NULL)
|
||||
{
|
||||
status = ARES_ENOMEM;
|
||||
break;
|
||||
}
|
||||
|
||||
/* Step through the list of substrings, concatenating them */
|
||||
str_len = 0;
|
||||
strptr = aptr;
|
||||
while (strptr < (aptr + rr_len))
|
||||
{
|
||||
substr_len = (unsigned char)*strptr;
|
||||
strptr++;
|
||||
memcpy ((char *) txt_curr->txt + str_len, strptr, substr_len);
|
||||
str_len += substr_len;
|
||||
strptr += substr_len;
|
||||
}
|
||||
/* Make sure we NULL-terminate */
|
||||
*((char *) txt_curr->txt + txt_curr->length) = '\0';
|
||||
}
|
||||
|
||||
/* Don't lose memory in the next iteration */
|
||||
|
||||
17
deps/cares/src/ares_private.h
vendored
17
deps/cares/src/ares_private.h
vendored
@@ -26,6 +26,9 @@
|
||||
#define WIN32
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifdef HAVE_NETINET_IN_H
|
||||
#include <netinet/in.h>
|
||||
#endif
|
||||
@@ -37,6 +40,10 @@
|
||||
#define HAVE_WRITEV 1
|
||||
#endif
|
||||
|
||||
#ifdef NETWARE
|
||||
#include <time.h>
|
||||
#endif
|
||||
|
||||
#define DEFAULT_TIMEOUT 5000 /* milliseconds */
|
||||
#define DEFAULT_TRIES 4
|
||||
#ifndef INADDR_NONE
|
||||
@@ -106,13 +113,6 @@
|
||||
# define writev(s,ptr,cnt) ares_writev(s,ptr,cnt)
|
||||
#endif
|
||||
|
||||
/********* EDNS defines section ******/
|
||||
#define EDNSPACKETSZ 1280 /* Reasonable UDP payload size, as suggested
|
||||
in RFC2671 */
|
||||
#define MAXENDSSZ 4096 /* Maximum (local) limit for edns packet size */
|
||||
#define EDNSFIXEDSZ 11 /* Size of EDNS header */
|
||||
/********* EDNS defines section ******/
|
||||
|
||||
struct ares_addr {
|
||||
int family;
|
||||
union {
|
||||
@@ -260,7 +260,6 @@ struct ares_channeldata {
|
||||
struct apattern *sortlist;
|
||||
int nsort;
|
||||
char *lookups;
|
||||
int ednspsz;
|
||||
|
||||
/* For binding to local devices and/or IP addresses. Leave
|
||||
* them null/zero for no binding.
|
||||
@@ -318,6 +317,7 @@ long ares__timeoffset(struct timeval *now,
|
||||
struct timeval *check);
|
||||
/* returns ARES_SUCCESS if library has been initialized */
|
||||
int ares_library_initialized(void);
|
||||
void ares__rc4(rc4_key* key,unsigned char *buffer_ptr, int buffer_len);
|
||||
void ares__send_query(ares_channel channel, struct query *query,
|
||||
struct timeval *now);
|
||||
void ares__close_sockets(ares_channel channel, struct server_state *server);
|
||||
@@ -349,7 +349,6 @@ long ares__tvdiff(struct timeval t1, struct timeval t2);
|
||||
libcurl lowlevel code from within library is ugly and only works when
|
||||
c-ares is built and linked with a similarly curldebug-enabled libcurl,
|
||||
but we do this anyway for convenience. */
|
||||
#define HEADER_CURL_SETUP_ONCE_H
|
||||
#include "../lib/memdebug.h"
|
||||
#endif
|
||||
|
||||
|
||||
242
deps/cares/src/ares_process.c
vendored
242
deps/cares/src/ares_process.c
vendored
@@ -1,6 +1,6 @@
|
||||
|
||||
/* Copyright 1998 by the Massachusetts Institute of Technology.
|
||||
* Copyright (C) 2004-2013 by Daniel Stenberg
|
||||
* Copyright (C) 2004-2012 by Daniel Stenberg
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software and its documentation for any purpose and without
|
||||
@@ -17,6 +17,9 @@
|
||||
|
||||
#include "ares_setup.h"
|
||||
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
# include <sys/socket.h>
|
||||
#endif
|
||||
#ifdef HAVE_SYS_UIO_H
|
||||
# include <sys/uio.h>
|
||||
#endif
|
||||
@@ -38,9 +41,16 @@
|
||||
# include <arpa/nameser_compat.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_SYS_TIME_H
|
||||
# include <sys/time.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_STRINGS_H
|
||||
# include <strings.h>
|
||||
#endif
|
||||
#ifdef HAVE_UNISTD_H
|
||||
# include <unistd.h>
|
||||
#endif
|
||||
#ifdef HAVE_SYS_IOCTL_H
|
||||
# include <sys/ioctl.h>
|
||||
#endif
|
||||
@@ -49,7 +59,10 @@
|
||||
#endif
|
||||
|
||||
#include <assert.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <fcntl.h>
|
||||
#include <time.h>
|
||||
|
||||
#include "ares.h"
|
||||
#include "ares_dns.h"
|
||||
@@ -255,7 +268,7 @@ static void write_tcp_data(ares_channel channel,
|
||||
if (wcount < 0)
|
||||
{
|
||||
if (!try_again(SOCKERRNO))
|
||||
handle_error(channel, i, now);
|
||||
handle_error(channel, i, now);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -271,7 +284,7 @@ static void write_tcp_data(ares_channel channel,
|
||||
if (scount < 0)
|
||||
{
|
||||
if (!try_again(SOCKERRNO))
|
||||
handle_error(channel, i, now);
|
||||
handle_error(channel, i, now);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -343,11 +356,11 @@ static void read_tcp_data(ares_channel channel, fd_set *read_fds,
|
||||
}
|
||||
|
||||
if(read_fds)
|
||||
/* If there's an error and we close this socket, then open another
|
||||
* with the same fd to talk to another server, then we don't want to
|
||||
* think that it was the new socket that was ready. This is not
|
||||
* disastrous, but is likely to result in extra system calls and
|
||||
* confusion. */
|
||||
/* If there's an error and we close this socket, then open
|
||||
* another with the same fd to talk to another server, then we
|
||||
* don't want to think that it was the new socket that was
|
||||
* ready. This is not disastrous, but is likely to result in
|
||||
* extra system calls and confusion. */
|
||||
FD_CLR(server->tcp_socket, read_fds);
|
||||
|
||||
if (server->tcp_lenbuf_pos != 2)
|
||||
@@ -361,7 +374,7 @@ static void read_tcp_data(ares_channel channel, fd_set *read_fds,
|
||||
if (count <= 0)
|
||||
{
|
||||
if (!(count == -1 && try_again(SOCKERRNO)))
|
||||
handle_error(channel, i, now);
|
||||
handle_error(channel, i, now);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -388,7 +401,7 @@ static void read_tcp_data(ares_channel channel, fd_set *read_fds,
|
||||
if (count <= 0)
|
||||
{
|
||||
if (!(count == -1 && try_again(SOCKERRNO)))
|
||||
handle_error(channel, i, now);
|
||||
handle_error(channel, i, now);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -417,7 +430,7 @@ static void read_udp_packets(ares_channel channel, fd_set *read_fds,
|
||||
struct server_state *server;
|
||||
int i;
|
||||
ssize_t count;
|
||||
unsigned char buf[MAXENDSSZ + 1];
|
||||
unsigned char buf[PACKETSZ + 1];
|
||||
#ifdef HAVE_RECVFROM
|
||||
ares_socklen_t fromlen;
|
||||
union {
|
||||
@@ -459,31 +472,25 @@ static void read_udp_packets(ares_channel channel, fd_set *read_fds,
|
||||
/* To reduce event loop overhead, read and process as many
|
||||
* packets as we can. */
|
||||
do {
|
||||
if (server->udp_socket == ARES_SOCKET_BAD)
|
||||
count = 0;
|
||||
|
||||
else {
|
||||
#ifdef HAVE_RECVFROM
|
||||
if (server->addr.family == AF_INET)
|
||||
fromlen = sizeof(from.sa4);
|
||||
else
|
||||
fromlen = sizeof(from.sa6);
|
||||
count = (ssize_t)recvfrom(server->udp_socket, (void *)buf,
|
||||
sizeof(buf), 0, &from.sa, &fromlen);
|
||||
if (server->addr.family == AF_INET)
|
||||
fromlen = sizeof(from.sa4);
|
||||
else
|
||||
fromlen = sizeof(from.sa6);
|
||||
count = (ssize_t)recvfrom(server->udp_socket, (void *)buf, sizeof(buf),
|
||||
0, &from.sa, &fromlen);
|
||||
#else
|
||||
count = sread(server->udp_socket, buf, sizeof(buf));
|
||||
count = sread(server->udp_socket, buf, sizeof(buf));
|
||||
#endif
|
||||
}
|
||||
|
||||
if (count == -1 && try_again(SOCKERRNO))
|
||||
continue;
|
||||
else if (count <= 0)
|
||||
handle_error(channel, i, now);
|
||||
#ifdef HAVE_RECVFROM
|
||||
else if (!same_address(&from.sa, &server->addr))
|
||||
/* The address the response comes from does not match the address we
|
||||
* sent the request to. Someone may be attempting to perform a cache
|
||||
* poisoning attack. */
|
||||
/* The address the response comes from does not match
|
||||
* the address we sent the request to. Someone may be
|
||||
* attempting to perform a cache poisoning attack. */
|
||||
break;
|
||||
#endif
|
||||
else
|
||||
@@ -500,10 +507,11 @@ static void process_timeouts(ares_channel channel, struct timeval *now)
|
||||
struct list_node* list_head;
|
||||
struct list_node* list_node;
|
||||
|
||||
/* Process all the timeouts that have fired since the last time we processed
|
||||
* timeouts. If things are going well, then we'll have hundreds/thousands of
|
||||
* queries that fall into future buckets, and only a handful of requests
|
||||
* that fall into the "now" bucket, so this should be quite quick.
|
||||
/* Process all the timeouts that have fired since the last time we
|
||||
* processed timeouts. If things are going well, then we'll have
|
||||
* hundreds/thousands of queries that fall into future buckets, and
|
||||
* only a handful of requests that fall into the "now" bucket, so
|
||||
* this should be quite quick.
|
||||
*/
|
||||
for (t = channel->last_timeout_processed; t <= now->tv_sec; t++)
|
||||
{
|
||||
@@ -528,7 +536,7 @@ static void process_answer(ares_channel channel, unsigned char *abuf,
|
||||
int alen, int whichserver, int tcp,
|
||||
struct timeval *now)
|
||||
{
|
||||
int tc, rcode, packetsz;
|
||||
int tc, rcode;
|
||||
unsigned short id;
|
||||
struct query *query;
|
||||
struct list_node* list_head;
|
||||
@@ -545,10 +553,11 @@ static void process_answer(ares_channel channel, unsigned char *abuf,
|
||||
rcode = DNS_HEADER_RCODE(abuf);
|
||||
|
||||
/* Find the query corresponding to this packet. The queries are
|
||||
* hashed/bucketed by query id, so this lookup should be quick. Note that
|
||||
* both the query id and the questions must be the same; when the query id
|
||||
* wraps around we can have multiple outstanding queries with the same query
|
||||
* id, so we need to check both the id and question.
|
||||
* hashed/bucketed by query id, so this lookup should be quick.
|
||||
* Note that both the query id and the questions must be the same;
|
||||
* when the query id wraps around we can have multiple outstanding
|
||||
* queries with the same query id, so we need to check both the id and
|
||||
* question.
|
||||
*/
|
||||
query = NULL;
|
||||
list_head = &(channel->queries_by_qid[id % ARES_QID_TABLE_SIZE]);
|
||||
@@ -565,34 +574,11 @@ static void process_answer(ares_channel channel, unsigned char *abuf,
|
||||
if (!query)
|
||||
return;
|
||||
|
||||
packetsz = PACKETSZ;
|
||||
/* If we use EDNS and server answers with one of these RCODES, the protocol
|
||||
* extension is not understood by the responder. We must retry the query
|
||||
* without EDNS enabled.
|
||||
*/
|
||||
if (channel->flags & ARES_FLAG_EDNS)
|
||||
{
|
||||
packetsz = channel->ednspsz;
|
||||
if (rcode == NOTIMP || rcode == FORMERR || rcode == SERVFAIL)
|
||||
{
|
||||
int qlen = alen - EDNSFIXEDSZ;
|
||||
channel->flags ^= ARES_FLAG_EDNS;
|
||||
query->tcplen -= EDNSFIXEDSZ;
|
||||
query->qlen -= EDNSFIXEDSZ;
|
||||
query->tcpbuf[0] = (unsigned char)((qlen >> 8) & 0xff);
|
||||
query->tcpbuf[1] = (unsigned char)(qlen & 0xff);
|
||||
DNS_HEADER_SET_ARCOUNT(query->tcpbuf + 2, 0);
|
||||
query->tcpbuf = realloc(query->tcpbuf, query->tcplen);
|
||||
ares__send_query(channel, query, now);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* If we got a truncated UDP packet and are not ignoring truncation,
|
||||
* don't accept the packet, and switch the query to TCP if we hadn't
|
||||
* done so already.
|
||||
*/
|
||||
if ((tc || alen > packetsz) && !tcp && !(channel->flags & ARES_FLAG_IGNTC))
|
||||
if ((tc || alen > PACKETSZ) && !tcp && !(channel->flags & ARES_FLAG_IGNTC))
|
||||
{
|
||||
if (!query->using_tcp)
|
||||
{
|
||||
@@ -605,8 +591,8 @@ static void process_answer(ares_channel channel, unsigned char *abuf,
|
||||
/* Limit alen to PACKETSZ if we aren't using TCP (only relevant if we
|
||||
* are ignoring truncation.
|
||||
*/
|
||||
if (alen > packetsz && !tcp)
|
||||
alen = packetsz;
|
||||
if (alen > PACKETSZ && !tcp)
|
||||
alen = PACKETSZ;
|
||||
|
||||
/* If we aren't passing through all error packets, discard packets
|
||||
* with SERVFAIL, NOTIMP, or REFUSED response codes.
|
||||
@@ -640,31 +626,6 @@ static void process_broken_connections(ares_channel channel,
|
||||
}
|
||||
}
|
||||
|
||||
/* Swap the contents of two lists */
|
||||
static void swap_lists(struct list_node* head_a,
|
||||
struct list_node* head_b)
|
||||
{
|
||||
int is_a_empty = ares__is_list_empty(head_a);
|
||||
int is_b_empty = ares__is_list_empty(head_b);
|
||||
struct list_node old_a = *head_a;
|
||||
struct list_node old_b = *head_b;
|
||||
|
||||
if (is_a_empty) {
|
||||
ares__init_list_head(head_b);
|
||||
} else {
|
||||
*head_b = old_a;
|
||||
old_a.next->prev = head_b;
|
||||
old_a.prev->next = head_b;
|
||||
}
|
||||
if (is_b_empty) {
|
||||
ares__init_list_head(head_a);
|
||||
} else {
|
||||
*head_a = old_b;
|
||||
old_b.next->prev = head_a;
|
||||
old_b.prev->next = head_a;
|
||||
}
|
||||
}
|
||||
|
||||
static void handle_error(ares_channel channel, int whichserver,
|
||||
struct timeval *now)
|
||||
{
|
||||
@@ -678,14 +639,15 @@ static void handle_error(ares_channel channel, int whichserver,
|
||||
/* Reset communications with this server. */
|
||||
ares__close_sockets(channel, server);
|
||||
|
||||
/* Tell all queries talking to this server to move on and not try this
|
||||
* server again. We steal the current list of queries that were in-flight to
|
||||
* this server, since when we call next_server this can cause the queries to
|
||||
* be re-sent to this server, which will re-insert these queries in that
|
||||
* same server->queries_to_server list.
|
||||
/* Tell all queries talking to this server to move on and not try
|
||||
* this server again. We steal the current list of queries that were
|
||||
* in-flight to this server, since when we call next_server this can
|
||||
* cause the queries to be re-sent to this server, which will
|
||||
* re-insert these queries in that same server->queries_to_server
|
||||
* list.
|
||||
*/
|
||||
ares__init_list_head(&list_head);
|
||||
swap_lists(&list_head, &(server->queries_to_server));
|
||||
ares__swap_lists(&list_head, &(server->queries_to_server));
|
||||
for (list_node = list_head.next; list_node != &list_head; )
|
||||
{
|
||||
query = list_node->data;
|
||||
@@ -701,15 +663,14 @@ static void handle_error(ares_channel channel, int whichserver,
|
||||
}
|
||||
|
||||
static void skip_server(ares_channel channel, struct query *query,
|
||||
int whichserver)
|
||||
{
|
||||
/* The given server gave us problems with this query, so if we have the
|
||||
* luxury of using other servers, then let's skip the potentially broken
|
||||
* server and just use the others. If we only have one server and we need to
|
||||
* retry then we should just go ahead and re-use that server, since it's our
|
||||
* only hope; perhaps we just got unlucky, and retrying will work (eg, the
|
||||
* server timed out our TCP connection just as we were sending another
|
||||
* request).
|
||||
int whichserver) {
|
||||
/* The given server gave us problems with this query, so if we have
|
||||
* the luxury of using other servers, then let's skip the
|
||||
* potentially broken server and just use the others. If we only
|
||||
* have one server and we need to retry then we should just go ahead
|
||||
* and re-use that server, since it's our only hope; perhaps we
|
||||
* just got unlucky, and retrying will work (eg, the server timed
|
||||
* out our TCP connection just as we were sending another request).
|
||||
*/
|
||||
if (channel->nservers > 1)
|
||||
{
|
||||
@@ -732,10 +693,11 @@ static void next_server(ares_channel channel, struct query *query,
|
||||
query->server = (query->server + 1) % channel->nservers;
|
||||
server = &channel->servers[query->server];
|
||||
|
||||
/* We don't want to use this server if (1) we decided this connection is
|
||||
* broken, and thus about to be closed, (2) we've decided to skip this
|
||||
* server because of earlier errors we encountered, or (3) we already
|
||||
* sent this query over this exact connection.
|
||||
/* We don't want to use this server if (1) we decided this
|
||||
* connection is broken, and thus about to be closed, (2)
|
||||
* we've decided to skip this server because of earlier
|
||||
* errors we encountered, or (3) we already sent this query
|
||||
* over this exact connection.
|
||||
*/
|
||||
if (!server->is_broken &&
|
||||
!query->server_info[query->server].skip_server &&
|
||||
@@ -747,11 +709,11 @@ static void next_server(ares_channel channel, struct query *query,
|
||||
return;
|
||||
}
|
||||
|
||||
/* You might think that with TCP we only need one try. However, even
|
||||
* when using TCP, servers can time-out our connection just as we're
|
||||
* sending a request, or close our connection because they die, or never
|
||||
* send us a reply because they get wedged or tickle a bug that drops
|
||||
* our request.
|
||||
/* You might think that with TCP we only need one try. However,
|
||||
* even when using TCP, servers can time-out our connection just
|
||||
* as we're sending a request, or close our connection because
|
||||
* they die, or never send us a reply because they get wedged or
|
||||
* tickle a bug that drops our request.
|
||||
*/
|
||||
}
|
||||
|
||||
@@ -787,11 +749,11 @@ void ares__send_query(ares_channel channel, struct query *query,
|
||||
end_query(channel, query, ARES_ENOMEM, NULL, 0);
|
||||
return;
|
||||
}
|
||||
/* To make the common case fast, we avoid copies by using the query's
|
||||
* tcpbuf for as long as the query is alive. In the rare case where the
|
||||
* query ends while it's queued for transmission, then we give the
|
||||
* sendreq its own copy of the request packet and put it in
|
||||
* sendreq->data_storage.
|
||||
/* To make the common case fast, we avoid copies by using the
|
||||
* query's tcpbuf for as long as the query is alive. In the rare
|
||||
* case where the query ends while it's queued for transmission,
|
||||
* then we give the sendreq its own copy of the request packet
|
||||
* and put it in sendreq->data_storage.
|
||||
*/
|
||||
sendreq->data_storage = NULL;
|
||||
sendreq->data = query->tcpbuf;
|
||||
@@ -954,12 +916,10 @@ static int configure_socket(ares_socket_t s, int family, ares_channel channel)
|
||||
}
|
||||
}
|
||||
else if (family == AF_INET6) {
|
||||
if (memcmp(channel->local_ip6, &ares_in6addr_any,
|
||||
sizeof(channel->local_ip6)) != 0) {
|
||||
if (memcmp(channel->local_ip6, &ares_in6addr_any, sizeof(channel->local_ip6)) != 0) {
|
||||
memset(&local.sa6, 0, sizeof(local.sa6));
|
||||
local.sa6.sin6_family = AF_INET6;
|
||||
memcpy(&local.sa6.sin6_addr, channel->local_ip6,
|
||||
sizeof(channel->local_ip6));
|
||||
memcpy(&local.sa6.sin6_addr, channel->local_ip6, sizeof(channel->local_ip6));
|
||||
if (bind(s, &local.sa, sizeof(local.sa6)) < 0)
|
||||
return -1;
|
||||
}
|
||||
@@ -1262,17 +1222,19 @@ static void end_query (ares_channel channel, struct query *query, int status,
|
||||
assert(sendreq->data_storage == NULL);
|
||||
if (status == ARES_SUCCESS)
|
||||
{
|
||||
/* We got a reply for this query, but this queued sendreq
|
||||
* points into this soon-to-be-gone query's tcpbuf. Probably
|
||||
* this means we timed out and queued the query for
|
||||
* retransmission, then received a response before actually
|
||||
* retransmitting. This is perfectly fine, so we want to keep
|
||||
* the connection running smoothly if we can. But in the worst
|
||||
* case we may have sent only some prefix of the query, with
|
||||
* some suffix of the query left to send. Also, the buffer may
|
||||
* be queued on multiple queues. To prevent dangling pointers
|
||||
* to the query's tcpbuf and handle these cases, we just give
|
||||
* such sendreqs their own copy of the query packet.
|
||||
/* We got a reply for this query, but this queued
|
||||
* sendreq points into this soon-to-be-gone query's
|
||||
* tcpbuf. Probably this means we timed out and queued
|
||||
* the query for retransmission, then received a
|
||||
* response before actually retransmitting. This is
|
||||
* perfectly fine, so we want to keep the connection
|
||||
* running smoothly if we can. But in the worst case
|
||||
* we may have sent only some prefix of the query,
|
||||
* with some suffix of the query left to send. Also,
|
||||
* the buffer may be queued on multiple queues. To
|
||||
* prevent dangling pointers to the query's tcpbuf and
|
||||
* handle these cases, we just give such sendreqs
|
||||
* their own copy of the query packet.
|
||||
*/
|
||||
sendreq->data_storage = malloc(sendreq->len);
|
||||
if (sendreq->data_storage != NULL)
|
||||
@@ -1283,12 +1245,14 @@ static void end_query (ares_channel channel, struct query *query, int status,
|
||||
}
|
||||
if ((status != ARES_SUCCESS) || (sendreq->data_storage == NULL))
|
||||
{
|
||||
/* We encountered an error (probably a timeout, suggesting the
|
||||
* DNS server we're talking to is probably unreachable,
|
||||
* wedged, or severely overloaded) or we couldn't copy the
|
||||
* request, so mark the connection as broken. When we get to
|
||||
* process_broken_connections() we'll close the connection and
|
||||
* try to re-send requests to another server.
|
||||
/* We encountered an error (probably a timeout,
|
||||
* suggesting the DNS server we're talking to is
|
||||
* probably unreachable, wedged, or severely
|
||||
* overloaded) or we couldn't copy the request, so
|
||||
* mark the connection as broken. When we get to
|
||||
* process_broken_connections() we'll close the
|
||||
* connection and try to re-send requests to another
|
||||
* server.
|
||||
*/
|
||||
server->is_broken = 1;
|
||||
/* Just to be paranoid, zero out this sendreq... */
|
||||
@@ -1302,8 +1266,8 @@ static void end_query (ares_channel channel, struct query *query, int status,
|
||||
query->callback(query->arg, status, query->timeouts, abuf, alen);
|
||||
ares__free_query(query);
|
||||
|
||||
/* Simple cleanup policy: if no queries are remaining, close all network
|
||||
* sockets unless STAYOPEN is set.
|
||||
/* Simple cleanup policy: if no queries are remaining, close all
|
||||
* network sockets unless STAYOPEN is set.
|
||||
*/
|
||||
if (!(channel->flags & ARES_FLAG_STAYOPEN) &&
|
||||
ares__is_list_empty(&(channel->all_queries)))
|
||||
|
||||
17
deps/cares/src/ares_query.c
vendored
17
deps/cares/src/ares_query.c
vendored
@@ -16,6 +16,9 @@
|
||||
|
||||
#include "ares_setup.h"
|
||||
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
# include <sys/socket.h>
|
||||
#endif
|
||||
#ifdef HAVE_NETINET_IN_H
|
||||
# include <netinet/in.h>
|
||||
#endif
|
||||
@@ -28,6 +31,7 @@
|
||||
# include <arpa/nameser_compat.h>
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include "ares.h"
|
||||
#include "ares_dns.h"
|
||||
#include "ares_private.h"
|
||||
@@ -39,7 +43,7 @@ struct qquery {
|
||||
|
||||
static void qcallback(void *arg, int status, int timeouts, unsigned char *abuf, int alen);
|
||||
|
||||
static void rc4(rc4_key* key, unsigned char *buffer_ptr, int buffer_len)
|
||||
void ares__rc4(rc4_key* key, unsigned char *buffer_ptr, int buffer_len)
|
||||
{
|
||||
unsigned char x;
|
||||
unsigned char y;
|
||||
@@ -101,13 +105,6 @@ static unsigned short generate_unique_id(ares_channel channel)
|
||||
return (unsigned short)id;
|
||||
}
|
||||
|
||||
unsigned short ares__generate_new_id(rc4_key* key)
|
||||
{
|
||||
unsigned short r=0;
|
||||
rc4(key, (unsigned char *)&r, sizeof(r));
|
||||
return r;
|
||||
}
|
||||
|
||||
void ares_query(ares_channel channel, const char *name, int dnsclass,
|
||||
int type, ares_callback callback, void *arg)
|
||||
{
|
||||
@@ -117,8 +114,8 @@ void ares_query(ares_channel channel, const char *name, int dnsclass,
|
||||
|
||||
/* Compose the query. */
|
||||
rd = !(channel->flags & ARES_FLAG_NORECURSE);
|
||||
status = ares_create_query(name, dnsclass, type, channel->next_id, rd, &qbuf,
|
||||
&qlen, (channel->flags & ARES_FLAG_EDNS) ? channel->ednspsz : 0);
|
||||
status = ares_mkquery(name, dnsclass, type, channel->next_id, rd, &qbuf,
|
||||
&qlen);
|
||||
if (status != ARES_SUCCESS)
|
||||
{
|
||||
if (qbuf != NULL) free(qbuf);
|
||||
|
||||
5
deps/cares/src/ares_search.c
vendored
5
deps/cares/src/ares_search.c
vendored
@@ -16,6 +16,11 @@
|
||||
|
||||
#include "ares_setup.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#ifdef HAVE_STRINGS_H
|
||||
# include <strings.h>
|
||||
#endif
|
||||
|
||||
13
deps/cares/src/ares_send.c
vendored
13
deps/cares/src/ares_send.c
vendored
@@ -16,6 +16,9 @@
|
||||
|
||||
#include "ares_setup.h"
|
||||
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
# include <sys/socket.h>
|
||||
#endif
|
||||
#ifdef HAVE_NETINET_IN_H
|
||||
# include <netinet/in.h>
|
||||
#endif
|
||||
@@ -28,6 +31,9 @@
|
||||
# include <arpa/nameser_compat.h>
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
#include "ares.h"
|
||||
#include "ares_dns.h"
|
||||
#include "ares_private.h"
|
||||
@@ -36,7 +42,7 @@ void ares_send(ares_channel channel, const unsigned char *qbuf, int qlen,
|
||||
ares_callback callback, void *arg)
|
||||
{
|
||||
struct query *query;
|
||||
int i, packetsz;
|
||||
int i;
|
||||
struct timeval now;
|
||||
|
||||
/* Verify that the query is at least long enough to hold the header. */
|
||||
@@ -103,10 +109,7 @@ void ares_send(ares_channel channel, const unsigned char *qbuf, int qlen,
|
||||
query->server_info[i].skip_server = 0;
|
||||
query->server_info[i].tcp_connection_generation = 0;
|
||||
}
|
||||
|
||||
packetsz = (channel->flags & ARES_FLAG_EDNS) ? channel->ednspsz : PACKETSZ;
|
||||
query->using_tcp = (channel->flags & ARES_FLAG_USEVC) || qlen > packetsz;
|
||||
|
||||
query->using_tcp = (channel->flags & ARES_FLAG_USEVC) || qlen > PACKETSZ;
|
||||
query->error_status = ARES_ECONNREFUSED;
|
||||
query->timeouts = 0;
|
||||
|
||||
|
||||
12
deps/cares/src/ares_timeout.c
vendored
12
deps/cares/src/ares_timeout.c
vendored
@@ -16,10 +16,12 @@
|
||||
|
||||
#include "ares_setup.h"
|
||||
|
||||
#ifdef HAVE_LIMITS_H
|
||||
#include <limits.h>
|
||||
#ifdef HAVE_SYS_TIME_H
|
||||
#include <sys/time.h>
|
||||
#endif
|
||||
|
||||
#include <time.h>
|
||||
|
||||
#include "ares.h"
|
||||
#include "ares_private.h"
|
||||
|
||||
@@ -65,10 +67,8 @@ struct timeval *ares_timeout(ares_channel channel, struct timeval *maxtv,
|
||||
*/
|
||||
if (min_offset != -1)
|
||||
{
|
||||
int ioffset = (min_offset > (long)INT_MAX) ? INT_MAX : (int)min_offset;
|
||||
|
||||
nextstop.tv_sec = ioffset/1000;
|
||||
nextstop.tv_usec = (ioffset%1000)*1000;
|
||||
nextstop.tv_sec = min_offset/1000;
|
||||
nextstop.tv_usec = (min_offset%1000)*1000;
|
||||
|
||||
if (!maxtv || ares__timedout(maxtv, &nextstop))
|
||||
{
|
||||
|
||||
40
deps/cares/src/bitncmp.c
vendored
40
deps/cares/src/bitncmp.c
vendored
@@ -33,27 +33,27 @@
|
||||
* author:
|
||||
* Paul Vixie (ISC), June 1996
|
||||
*/
|
||||
int ares__bitncmp(const void *l, const void *r, int n)
|
||||
{
|
||||
unsigned int lb, rb;
|
||||
int x, b;
|
||||
int
|
||||
ares_bitncmp(const void *l, const void *r, int n) {
|
||||
unsigned int lb, rb;
|
||||
int x, b;
|
||||
|
||||
b = n / 8;
|
||||
x = memcmp(l, r, b);
|
||||
if (x || (n % 8) == 0)
|
||||
return (x);
|
||||
b = n / 8;
|
||||
x = memcmp(l, r, b);
|
||||
if (x || (n % 8) == 0)
|
||||
return (x);
|
||||
|
||||
lb = ((const unsigned char *)l)[b];
|
||||
rb = ((const unsigned char *)r)[b];
|
||||
for (b = n % 8; b > 0; b--) {
|
||||
if ((lb & 0x80) != (rb & 0x80)) {
|
||||
if (lb & 0x80)
|
||||
return (1);
|
||||
return (-1);
|
||||
}
|
||||
lb <<= 1;
|
||||
rb <<= 1;
|
||||
}
|
||||
return (0);
|
||||
lb = ((const unsigned char *)l)[b];
|
||||
rb = ((const unsigned char *)r)[b];
|
||||
for (b = n % 8; b > 0; b--) {
|
||||
if ((lb & 0x80) != (rb & 0x80)) {
|
||||
if (lb & 0x80)
|
||||
return (1);
|
||||
return (-1);
|
||||
}
|
||||
lb <<= 1;
|
||||
rb <<= 1;
|
||||
}
|
||||
return (0);
|
||||
}
|
||||
#endif
|
||||
|
||||
6
deps/cares/src/bitncmp.h
vendored
6
deps/cares/src/bitncmp.h
vendored
@@ -2,7 +2,7 @@
|
||||
#define __ARES_BITNCMP_H
|
||||
|
||||
|
||||
/* Copyright (C) 2005, 2013 by Dominick Meglio
|
||||
/* Copyright (C) 2005 by Dominick Meglio
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software and its documentation for any purpose and without
|
||||
@@ -18,9 +18,9 @@
|
||||
*/
|
||||
|
||||
#ifndef HAVE_BITNCMP
|
||||
int ares__bitncmp(const void *l, const void *r, int n);
|
||||
int ares_bitncmp(const void *l, const void *r, int n);
|
||||
#else
|
||||
#define ares__bitncmp(x,y,z) bitncmp(x,y,z)
|
||||
#define ares_bitncmp(x,y,z) bitncmp(x,y,z)
|
||||
#endif
|
||||
|
||||
#endif /* __ARES_BITNCMP_H */
|
||||
|
||||
35
deps/cares/src/get_ver.awk
vendored
Normal file
35
deps/cares/src/get_ver.awk
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
# ***************************************************************************
|
||||
# * Project: c-ares
|
||||
# *
|
||||
# ***************************************************************************
|
||||
# awk script which fetches c-ares version number and string from input
|
||||
# file and writes them to STDOUT. Here you can get an awk version for Win32:
|
||||
# http://www.gknw.net/development/prgtools/awk-20070501.zip
|
||||
#
|
||||
BEGIN {
|
||||
if (match (ARGV[1], /ares_version.h/)) {
|
||||
while ((getline < ARGV[1]) > 0) {
|
||||
if (match ($0, /^#define ARES_COPYRIGHT "[^"]+"$/)) {
|
||||
libcares_copyright_str = substr($0, 25, length($0)-25);
|
||||
}
|
||||
else if (match ($0, /^#define ARES_VERSION_STR "[^"]+"$/)) {
|
||||
libcares_ver_str = substr($3, 2, length($3)-2);
|
||||
}
|
||||
else if (match ($0, /^#define ARES_VERSION_MAJOR [0-9]+$/)) {
|
||||
libcares_ver_major = substr($3, 1, length($3));
|
||||
}
|
||||
else if (match ($0, /^#define ARES_VERSION_MINOR [0-9]+$/)) {
|
||||
libcares_ver_minor = substr($3, 1, length($3));
|
||||
}
|
||||
else if (match ($0, /^#define ARES_VERSION_PATCH [0-9]+$/)) {
|
||||
libcares_ver_patch = substr($3, 1, length($3));
|
||||
}
|
||||
}
|
||||
libcares_ver = libcares_ver_major "," libcares_ver_minor "," libcares_ver_patch;
|
||||
print "LIBCARES_VERSION = " libcares_ver "";
|
||||
print "LIBCARES_VERSION_STR = " libcares_ver_str "";
|
||||
print "LIBCARES_COPYRIGHT_STR = " libcares_copyright_str "";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
17
deps/cares/src/inet_net_pton.c
vendored
17
deps/cares/src/inet_net_pton.c
vendored
@@ -18,6 +18,9 @@
|
||||
|
||||
#include "ares_setup.h"
|
||||
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
# include <sys/socket.h>
|
||||
#endif
|
||||
#ifdef HAVE_NETINET_IN_H
|
||||
# include <netinet/in.h>
|
||||
#endif
|
||||
@@ -33,10 +36,15 @@
|
||||
# include <arpa/nameser_compat.h>
|
||||
#endif
|
||||
|
||||
#include <ctype.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "ares.h"
|
||||
#include "ares_ipv6.h"
|
||||
#include "ares_nowarn.h"
|
||||
#include "ares_inet_net_pton.h"
|
||||
#include "inet_net_pton.h"
|
||||
|
||||
|
||||
const struct ares_in6_addr ares_in6addr_any = { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } } };
|
||||
@@ -440,11 +448,4 @@ int ares_inet_pton(int af, const char *src, void *dst)
|
||||
return 0;
|
||||
return (result > -1 ? 1 : -1);
|
||||
}
|
||||
#else /* HAVE_INET_PTON */
|
||||
int ares_inet_pton(int af, const char *src, void *dst)
|
||||
{
|
||||
/* just relay this to the underlying function */
|
||||
return inet_pton(af, src, dst);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
31
deps/cares/src/inet_net_pton.h
vendored
Normal file
31
deps/cares/src/inet_net_pton.h
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
#ifndef HEADER_CARES_INET_NET_PTON_H
|
||||
#define HEADER_CARES_INET_NET_PTON_H
|
||||
|
||||
/* Copyright (C) 2005-2010 by Daniel Stenberg et al
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software and its documentation for any purpose and without
|
||||
* fee is hereby granted, provided that the above copyright
|
||||
* notice appear in all copies and that both that copyright
|
||||
* notice and this permission notice appear in supporting
|
||||
* documentation, and that the name of M.I.T. not be used in
|
||||
* advertising or publicity pertaining to distribution of the
|
||||
* software without specific, written prior permission.
|
||||
* M.I.T. makes no representations about the suitability of
|
||||
* this software for any purpose. It is provided "as is"
|
||||
* without express or implied warranty.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_INET_PTON
|
||||
#define ares_inet_pton(x,y,z) inet_pton(x,y,z)
|
||||
#else
|
||||
int ares_inet_pton(int af, const char *src, void *dst);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_INET_NET_PTON
|
||||
#define ares_inet_net_pton(w,x,y,z) inet_net_pton(w,x,y,z)
|
||||
#else
|
||||
int ares_inet_net_pton(int af, const char *src, void *dst, size_t size);
|
||||
#endif
|
||||
|
||||
#endif /* HEADER_CARES_INET_NET_PTON_H */
|
||||
28
deps/cares/src/inet_ntop.c
vendored
28
deps/cares/src/inet_ntop.c
vendored
@@ -17,6 +17,9 @@
|
||||
|
||||
#include "ares_setup.h"
|
||||
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
# include <sys/socket.h>
|
||||
#endif
|
||||
#ifdef HAVE_NETINET_IN_H
|
||||
# include <netinet/in.h>
|
||||
#endif
|
||||
@@ -32,8 +35,15 @@
|
||||
# include <arpa/nameser_compat.h>
|
||||
#endif
|
||||
|
||||
#include <ctype.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "ares.h"
|
||||
#include "ares_ipv6.h"
|
||||
#include "inet_ntop.h"
|
||||
|
||||
|
||||
#ifndef HAVE_INET_NTOP
|
||||
|
||||
@@ -59,13 +69,13 @@ static const char *inet_ntop6(const unsigned char *src, char *dst, size_t size);
|
||||
* Paul Vixie, 1996.
|
||||
*/
|
||||
const char *
|
||||
ares_inet_ntop(int af, const void *src, char *dst, ares_socklen_t size)
|
||||
ares_inet_ntop(int af, const void *src, char *dst, size_t size)
|
||||
{
|
||||
switch (af) {
|
||||
case AF_INET:
|
||||
return (inet_ntop4(src, dst, (size_t)size));
|
||||
return (inet_ntop4(src, dst, size));
|
||||
case AF_INET6:
|
||||
return (inet_ntop6(src, dst, (size_t)size));
|
||||
return (inet_ntop6(src, dst, size));
|
||||
default:
|
||||
SET_ERRNO(EAFNOSUPPORT);
|
||||
return (NULL);
|
||||
@@ -195,14 +205,4 @@ inet_ntop6(const unsigned char *src, char *dst, size_t size)
|
||||
strcpy(dst, tmp);
|
||||
return (dst);
|
||||
}
|
||||
|
||||
#else /* HAVE_INET_NTOP */
|
||||
|
||||
const char *
|
||||
ares_inet_ntop(int af, const void *src, char *dst, ares_socklen_t size)
|
||||
{
|
||||
/* just relay this to the underlying function */
|
||||
return inet_ntop(af, src, dst, size);
|
||||
}
|
||||
|
||||
#endif /* HAVE_INET_NTOP */
|
||||
#endif
|
||||
|
||||
26
deps/cares/src/inet_ntop.h
vendored
Normal file
26
deps/cares/src/inet_ntop.h
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
#ifndef __ARES_INET_NTOP_H
|
||||
#define __ARES_INET_NTOP_H
|
||||
|
||||
|
||||
/* Copyright (C) 2005 by Dominick Meglio
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software and its documentation for any purpose and without
|
||||
* fee is hereby granted, provided that the above copyright
|
||||
* notice appear in all copies and that both that copyright
|
||||
* notice and this permission notice appear in supporting
|
||||
* documentation, and that the name of M.I.T. not be used in
|
||||
* advertising or publicity pertaining to distribution of the
|
||||
* software without specific, written prior permission.
|
||||
* M.I.T. makes no representations about the suitability of
|
||||
* this software for any purpose. It is provided "as is"
|
||||
* without express or implied warranty.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_INET_NTOP
|
||||
#define ares_inet_ntop(w,x,y,z) inet_ntop(w,x,y,z)
|
||||
#else
|
||||
const char *ares_inet_ntop(int af, const void *src, char *dst, size_t size);
|
||||
#endif
|
||||
|
||||
#endif /* __ARES_INET_NTOP_H */
|
||||
44
deps/cares/src/setup_once.h
vendored
44
deps/cares/src/setup_once.h
vendored
@@ -2,7 +2,7 @@
|
||||
#define __SETUP_ONCE_H
|
||||
|
||||
|
||||
/* Copyright (C) 2004 - 2013 by Daniel Stenberg et al
|
||||
/* Copyright (C) 2004 - 2012 by Daniel Stenberg et al
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software and its
|
||||
* documentation for any purpose and without fee is hereby granted, provided
|
||||
@@ -76,34 +76,6 @@
|
||||
#include <stdbool.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_UNISTD_H
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
#ifdef __hpux
|
||||
# if !defined(_XOPEN_SOURCE_EXTENDED) || defined(_KERNEL)
|
||||
# ifdef _APP32_64BIT_OFF_T
|
||||
# define OLD_APP32_64BIT_OFF_T _APP32_64BIT_OFF_T
|
||||
# undef _APP32_64BIT_OFF_T
|
||||
# else
|
||||
# undef OLD_APP32_64BIT_OFF_T
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
#include <sys/socket.h>
|
||||
#endif
|
||||
|
||||
#ifdef __hpux
|
||||
# if !defined(_XOPEN_SOURCE_EXTENDED) || defined(_KERNEL)
|
||||
# ifdef OLD_APP32_64BIT_OFF_T
|
||||
# define _APP32_64BIT_OFF_T OLD_APP32_64BIT_OFF_T
|
||||
# undef OLD_APP32_64BIT_OFF_T
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Definition of timeval struct for platforms that don't have it.
|
||||
@@ -260,8 +232,6 @@ struct timeval {
|
||||
# define sclose(x) closesocket((x))
|
||||
#elif defined(HAVE_CLOSESOCKET_CAMEL)
|
||||
# define sclose(x) CloseSocket((x))
|
||||
#elif defined(HAVE_CLOSE_S)
|
||||
# define sclose(x) close_s((x))
|
||||
#else
|
||||
# define sclose(x) close((x))
|
||||
#endif
|
||||
@@ -289,18 +259,6 @@ struct timeval {
|
||||
#define TOLOWER(x) (tolower((int) ((unsigned char)x)))
|
||||
|
||||
|
||||
/*
|
||||
* 'bool' stuff compatible with HP-UX headers.
|
||||
*/
|
||||
|
||||
#if defined(__hpux) && !defined(HAVE_BOOL_T)
|
||||
typedef int bool;
|
||||
# define false 0
|
||||
# define true 1
|
||||
# define HAVE_BOOL_T
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* 'bool' exists on platforms with <stdbool.h>, i.e. C99 platforms.
|
||||
* On non-C99 platforms there's no bool, so define an enum for that.
|
||||
|
||||
21
deps/http_parser/http_parser.c
vendored
21
deps/http_parser/http_parser.c
vendored
@@ -936,6 +936,7 @@ size_t http_parser_execute (http_parser *parser,
|
||||
} else if (parser->index == 2 && ch == 'P') {
|
||||
parser->method = HTTP_COPY;
|
||||
} else {
|
||||
SET_ERRNO(HPE_INVALID_METHOD);
|
||||
goto error;
|
||||
}
|
||||
} else if (parser->method == HTTP_MKCOL) {
|
||||
@@ -948,12 +949,14 @@ size_t http_parser_execute (http_parser *parser,
|
||||
} else if (parser->index == 2 && ch == 'A') {
|
||||
parser->method = HTTP_MKACTIVITY;
|
||||
} else {
|
||||
SET_ERRNO(HPE_INVALID_METHOD);
|
||||
goto error;
|
||||
}
|
||||
} else if (parser->method == HTTP_SUBSCRIBE) {
|
||||
if (parser->index == 1 && ch == 'E') {
|
||||
parser->method = HTTP_SEARCH;
|
||||
} else {
|
||||
SET_ERRNO(HPE_INVALID_METHOD);
|
||||
goto error;
|
||||
}
|
||||
} else if (parser->index == 1 && parser->method == HTTP_POST) {
|
||||
@@ -964,13 +967,27 @@ size_t http_parser_execute (http_parser *parser,
|
||||
} else if (ch == 'A') {
|
||||
parser->method = HTTP_PATCH;
|
||||
} else {
|
||||
SET_ERRNO(HPE_INVALID_METHOD);
|
||||
goto error;
|
||||
}
|
||||
} else if (parser->index == 2) {
|
||||
if (parser->method == HTTP_PUT) {
|
||||
if (ch == 'R') parser->method = HTTP_PURGE;
|
||||
if (ch == 'R') {
|
||||
parser->method = HTTP_PURGE;
|
||||
} else {
|
||||
SET_ERRNO(HPE_INVALID_METHOD);
|
||||
goto error;
|
||||
}
|
||||
} else if (parser->method == HTTP_UNLOCK) {
|
||||
if (ch == 'S') parser->method = HTTP_UNSUBSCRIBE;
|
||||
if (ch == 'S') {
|
||||
parser->method = HTTP_UNSUBSCRIBE;
|
||||
} else {
|
||||
SET_ERRNO(HPE_INVALID_METHOD);
|
||||
goto error;
|
||||
}
|
||||
} else {
|
||||
SET_ERRNO(HPE_INVALID_METHOD);
|
||||
goto error;
|
||||
}
|
||||
} else if (parser->index == 4 && parser->method == HTTP_PROPFIND && ch == 'P') {
|
||||
parser->method = HTTP_PROPPATCH;
|
||||
|
||||
18
deps/http_parser/test.c
vendored
18
deps/http_parser/test.c
vendored
@@ -3117,14 +3117,8 @@ main (void)
|
||||
|
||||
/// REQUESTS
|
||||
|
||||
test_simple("hello world", HPE_INVALID_METHOD);
|
||||
test_simple("GET / HTP/1.1\r\n\r\n", HPE_INVALID_VERSION);
|
||||
|
||||
|
||||
test_simple("ASDF / HTTP/1.1\r\n\r\n", HPE_INVALID_METHOD);
|
||||
test_simple("PROPPATCHA / HTTP/1.1\r\n\r\n", HPE_INVALID_METHOD);
|
||||
test_simple("GETA / HTTP/1.1\r\n\r\n", HPE_INVALID_METHOD);
|
||||
|
||||
// Well-formed but incomplete
|
||||
test_simple("GET / HTTP/1.1\r\n"
|
||||
"Content-Type: text/plain\r\n"
|
||||
@@ -3167,13 +3161,23 @@ main (void)
|
||||
}
|
||||
|
||||
static const char *bad_methods[] = {
|
||||
"ASDF",
|
||||
"C******",
|
||||
"COLA",
|
||||
"GEM",
|
||||
"GETA",
|
||||
"M****",
|
||||
"MKCOLA",
|
||||
"PROPPATCHA",
|
||||
"PUN",
|
||||
"PX",
|
||||
"SA",
|
||||
"hello world",
|
||||
0 };
|
||||
for (this_method = bad_methods; *this_method; this_method++) {
|
||||
char buf[200];
|
||||
sprintf(buf, "%s / HTTP/1.1\r\n\r\n", *this_method);
|
||||
test_simple(buf, HPE_UNKNOWN);
|
||||
test_simple(buf, HPE_INVALID_METHOD);
|
||||
}
|
||||
|
||||
const char *dumbfuck2 =
|
||||
|
||||
2
deps/npm/.npmignore
vendored
2
deps/npm/.npmignore
vendored
@@ -7,9 +7,11 @@ npm-debug.log
|
||||
/test/packages/npm-test-depends-on-spark/which-spark.log
|
||||
/test/packages/test-package/random-data.txt
|
||||
/test/root
|
||||
node_modules/marked
|
||||
node_modules/ronn
|
||||
node_modules/tap
|
||||
node_modules/.bin
|
||||
node_modules/npm-registry-mock
|
||||
/npmrc
|
||||
/release/
|
||||
|
||||
|
||||
2
deps/npm/.npmrc
vendored
Normal file
2
deps/npm/.npmrc
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
save-prefix = ~
|
||||
proprietary-attribs = false
|
||||
7
deps/npm/.tern-project
vendored
7
deps/npm/.tern-project
vendored
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"libs": [
|
||||
],
|
||||
"plugins": {
|
||||
"node": {}
|
||||
}
|
||||
}
|
||||
5
deps/npm/.travis.yml
vendored
Normal file
5
deps/npm/.travis.yml
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
language: node_js
|
||||
script: "npm run-script tap"
|
||||
node_js:
|
||||
- "0.11"
|
||||
- "0.10"
|
||||
134
deps/npm/AUTHORS
vendored
134
deps/npm/AUTHORS
vendored
@@ -1,48 +1,48 @@
|
||||
# Authors sorted by whether or not they're me
|
||||
Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)
|
||||
Steve Steiner <ssteinerX@gmail.com> (http://websaucesoftware.com/blog/)
|
||||
Mikeal Rogers <mikeal.rogers@gmail.com> (http://www.mikealrogers.com/)
|
||||
Aaron Blohowiak <aaron.blohowiak@gmail.com> (http://aaronblohowiak.com/)
|
||||
Martyn Smith <martyn@dollyfish.net.nz> (http://dollyfish.net.nz/)
|
||||
Mathias Pettersson <mape@mape.me> (http://mape.me/)
|
||||
Brian Hammond <brian@fictorial.com> (http://fictorial.com/)
|
||||
Charlie Robbins <charlie.robbins@gmail.com> (http://www.charlierobbins.com/)
|
||||
Francisco Treacy <francisco.treacy@gmail.com> (http://franciscotreacy.com/)
|
||||
Cliffano Subagio <cliffano@gmail.com> (http://blog.cliffano.com/)
|
||||
Christian Eager <christian.eager@nokia.com> (http://perpenduum.com)
|
||||
Dav Glass <davglass@gmail.com> (http://blog.davglass.com)
|
||||
Isaac Z. Schlueter <i@izs.me>
|
||||
Steve Steiner <ssteinerX@gmail.com>
|
||||
Mikeal Rogers <mikeal.rogers@gmail.com>
|
||||
Aaron Blohowiak <aaron.blohowiak@gmail.com>
|
||||
Martyn Smith <martyn@dollyfish.net.nz>
|
||||
Mathias Pettersson <mape@mape.me>
|
||||
Brian Hammond <brian@fictorial.com>
|
||||
Charlie Robbins <charlie.robbins@gmail.com>
|
||||
Francisco Treacy <francisco.treacy@gmail.com>
|
||||
Cliffano Subagio <cliffano@gmail.com>
|
||||
Christian Eager <christian.eager@nokia.com>
|
||||
Dav Glass <davglass@gmail.com>
|
||||
Alex K. Wolfe <alexkwolfe@gmail.com>
|
||||
James Sanders <jimmyjazz14@gmail.com> (http://james-sanders.com/)
|
||||
Reid Burke <me@reidburke.com> (http://reidburke.com/)
|
||||
Arlo Breault <arlolra@gmail.com> (http://thoughtherder.com/)
|
||||
Timo Derstappen <teemow@gmail.com> (http://teemow.com)
|
||||
James Sanders <jimmyjazz14@gmail.com>
|
||||
Reid Burke <me@reidburke.com>
|
||||
Arlo Breault <arlolra@gmail.com>
|
||||
Timo Derstappen <teemow@gmail.com>
|
||||
Bradley Meck <bradley.meck@gmail.com>
|
||||
Bart Teeuwisse <bart.teeuwisse@thecodemill.biz> (http://thecodemill.biz/)
|
||||
Ben Noordhuis <info@bnoordhuis.nl> (http://bnoordhuis.nl/)
|
||||
Tor Valamo <tor.valamo@gmail.com> (http://www.magnimedia.no/)
|
||||
Whyme.Lyu <5longluna@gmail.com> (http://whyme.kuantu.com/)
|
||||
Bart Teeuwisse <bart.teeuwisse@thecodemill.biz>
|
||||
Ben Noordhuis <info@bnoordhuis.nl>
|
||||
Tor Valamo <tor.valamo@gmail.com>
|
||||
Whyme.Lyu <5longluna@gmail.com>
|
||||
Olivier Melcher <olivier.melcher@gmail.com>
|
||||
Tomaž Muraus <kami@k5-storitve.net> (http://www.tomaz-muraus.info)
|
||||
Evan Meagher <evan.meagher@gmail.com> (http://evanmeagher.net/)
|
||||
Orlando Vazquez <ovazquez@gmail.com> (http://2wycked.net/)
|
||||
Tomaž Muraus <kami@k5-storitve.net>
|
||||
Evan Meagher <evan.meagher@gmail.com>
|
||||
Orlando Vazquez <ovazquez@gmail.com>
|
||||
George Miroshnykov <gmiroshnykov@lohika.com>
|
||||
Geoff Flarity (http://ca.linkedin.com/pub/geoff-flarity/a/536/43a)
|
||||
Geoff Flarity <geoff.flarity@gmail.com>
|
||||
Pete Kruckenberg <pete@kruckenberg.com>
|
||||
Laurie Harper <laurie@holoweb.net> (http://laurie.holoweb.net/)
|
||||
Laurie Harper <laurie@holoweb.net>
|
||||
Chris Wong <chris@chriswongstudio.com>
|
||||
Max Goodman <c@chromacode.com> (http://chromacode.com/)
|
||||
Max Goodman <c@chromacode.com>
|
||||
Scott Bronson <brons_github@rinspin.com>
|
||||
Federico Romero <federomero@gmail.com>
|
||||
Visnu Pitiyanuvath <visnupx@gmail.com> (http://visnup.com)
|
||||
Irakli Gozalishvili <rfobic@gmail.com> (http://jeditoolkit.com/)
|
||||
Mark Cahill <mark@tiemonster.info> (http://www.tiemonster.info/)
|
||||
Visnu Pitiyanuvath <visnupx@gmail.com>
|
||||
Irakli Gozalishvili <rfobic@gmail.com>
|
||||
Mark Cahill <mark@tiemonster.info>
|
||||
Zearin <zearin@gonk.net>
|
||||
Iain Sproat <iainsproat@gmail.com>
|
||||
Trent Mick <trentm@gmail.com> (http://trentm.com/)
|
||||
Felix Geisendörfer <felix@debuggable.com> (http://www.debuggable.com/)
|
||||
Conny Brunnkvist <cbrunnkvist@gmail.com> (http://twitter.com/connyb)
|
||||
Will Elwood <w.elwood08@gmail.com> (https://github.com/welwood08)
|
||||
Oleg Efimov <efimovov@gmail.com> (http://sannis.ru)
|
||||
Trent Mick <trentm@gmail.com>
|
||||
Felix Geisendörfer <felix@debuggable.com>
|
||||
Conny Brunnkvist <cbrunnkvist@gmail.com>
|
||||
Will Elwood <w.elwood08@gmail.com>
|
||||
Oleg Efimov <efimovov@gmail.com>
|
||||
Martin Cooper <mfncooper@gmail.com>
|
||||
Jameson Little <t.jameson.little@gmail.com>
|
||||
cspotcode <cspotcode@gmail.com>
|
||||
@@ -90,3 +90,69 @@ Paul Miller <paul@paulmillr.com>
|
||||
seebees <seebees@gmail.com>
|
||||
Carl Lange <carl@flax.ie>
|
||||
Jan Lehnardt <jan@apache.org>
|
||||
Alexey Kreschuk <akrsch@gmail.com>
|
||||
Di Wu <dwu@palantir.com>
|
||||
Florian Margaine <florian@margaine.com>
|
||||
Forbes Lindesay <forbes@lindesay.co.uk>
|
||||
Ian Babrou <ibobrik@gmail.com>
|
||||
Jaakko Manninen <jaakko@rocketpack.fi>
|
||||
Johan Nordberg <its@johan-nordberg.com>
|
||||
Johan Sköld <johan@skold.cc>
|
||||
Larz Conwell <larz@larz-laptop.(none)>
|
||||
Luke Arduini <luke.arduini@gmail.com>
|
||||
Marcel Klehr <mklehr@gmx.net>
|
||||
Mathias Bynens <mathias@qiwi.be>
|
||||
Matt Lunn <matt@mattlunn.me.uk>
|
||||
Matt McClure <matt.mcclure@mapmyfitness.com>
|
||||
Nirk Niggler <nirk.niggler@gmail.com>
|
||||
Paolo Fragomeni <paolo@async.ly>
|
||||
Jake Verbaten (Raynos) <raynos2@gmail.com>
|
||||
Robert Kowalski <rok@kowalski.gd>
|
||||
Schabse Laks <Dev@SLaks.net>
|
||||
Stuart Knightley <stuart@stuartk.com>
|
||||
Stuart P. Bentley <stuart@testtrack4.com>
|
||||
Vaz Allen <vaz@tryptid.com>
|
||||
elisee <elisee@sparklin.org>
|
||||
Evan You <yyx990803@gmail.com>
|
||||
Wil Moore III <wil.moore@wilmoore.com>
|
||||
Dylan Greene <dylang@gmail.com>
|
||||
zeke <zeke@sikelianos.com>
|
||||
Andrew Horton <andrew.j.horton@gmail.com>
|
||||
Denis Gladkikh <outcoldman@gmail.com>
|
||||
Daniel Santiago <daniel.santiago@highlevelwebs.com>
|
||||
Alex Kocharin <alex@kocharin.ru>
|
||||
Evan Lucas <evanlucas@me.com>
|
||||
Steve Mason <stevem@brandwatch.com>
|
||||
Quinn Slack <qslack@qslack.com>
|
||||
Sébastien Santoro <dereckson@espace-win.org>
|
||||
CamilleM <camille.moulin@alterway.fr>
|
||||
Tom Huang <hzlhu.dargon@gmail.com>
|
||||
Sergey Belov <peimei@ya.ru>
|
||||
Younghoon Park <sola92@gmail.com>
|
||||
Yazhong Liu <yorkiefixer@gmail.com>
|
||||
Mikola Lysenko <mikolalysenko@gmail.com>
|
||||
Rafael de Oleza <rafa@spotify.com>
|
||||
Yeonghoon Park <sola92@gmail.com>
|
||||
Franck Cuny <franck.cuny@gmail.com>
|
||||
Alan Shaw <alan@freestyle-developments.co.uk>
|
||||
Alex Rodionov <p0deje@gmail.com>
|
||||
Alexej Yaroshevich <alex@qfox.ru>
|
||||
Elan Shanker <elan.shanker@gmail.com>
|
||||
François Frisch <francoisfrisch@gmail.com>
|
||||
Gabriel Falkenberg <gabriel.falkenberg@gmail.com>
|
||||
Jason Diamond <jason@diamond.name>
|
||||
Jess Martin <jessmartin@gmail.com>
|
||||
Jon Spencer <jon@jonspencer.ca>
|
||||
Matt Colyer <matt@colyer.name>
|
||||
Matt McClure <matt.mcclure@mapmyfitness.com>
|
||||
Maximilian Antoni <maximilian.antoni@juliusbaer.com>
|
||||
Nicholas Kinsey <pyro@feisty.io>
|
||||
Paulo Cesar <pauloc062@gmail.com>
|
||||
Quim Calpe <quim@kalpe.com>
|
||||
Robert Gieseke <robert.gieseke@gmail.com>
|
||||
Spain Train <michael.spainhower@opower.com>
|
||||
TJ Holowaychuk <tj@vision-media.ca>
|
||||
Thom Blake <tblake@brightroll.com>
|
||||
Trevor Burnham <tburnham@hubspot.com>
|
||||
bitspill <bitspill+github@bitspill.net>
|
||||
Neil Gentleman <ngentleman@gmail.com>
|
||||
|
||||
737
deps/npm/CHANGELOG.md
vendored
Normal file
737
deps/npm/CHANGELOG.md
vendored
Normal file
@@ -0,0 +1,737 @@
|
||||
### v1.4.28 (2014-09-12):
|
||||
|
||||
* [`f4540b6`](https://github.com/npm/npm/commit/f4540b6537a87e653d7495a9ddcf72949fdd4d14)
|
||||
[#6043](https://github.com/npm/npm/issues/6043) defer rollbacks until just
|
||||
before the CLI exits ([@isaacs](https://github.com/isaacs))
|
||||
* [`1eabfd5`](https://github.com/npm/npm/commit/1eabfd5c03f33c2bd28823714ff02059eeee3899)
|
||||
[#6043](https://github.com/npm/npm/issues/6043) `slide@1.1.6`: wait until all
|
||||
callbacks have finished before proceeding
|
||||
([@othiym23](https://github.com/othiym23))
|
||||
|
||||
### v1.4.27 (2014-09-04):
|
||||
|
||||
* [`4cf3c8f`](https://github.com/npm/npm/commit/4cf3c8fd78c9e2693a5f899f50c28f4823c88e2e)
|
||||
[#6007](https://github.com/npm/npm/issues/6007) `request@2.42.0`: properly set
|
||||
headers on proxy requests ([@isaacs](https://github.com/isaacs))
|
||||
* [`403cb52`](https://github.com/npm/npm/commit/403cb526be1472bb7545fa8e62d4976382cdbbe5)
|
||||
[#6055](https://github.com/npm/npm/issues/6055) `npmconf@1.1.8`: restore
|
||||
case-insensitivity of environmental config
|
||||
([@iarna](https://github.com/iarna))
|
||||
|
||||
### v1.4.26 (2014-08-28):
|
||||
|
||||
* [`eceea95`](https://github.com/npm/npm/commit/eceea95c804fa15b18e91c52c0beb08d42a3e77d)
|
||||
`github-url-from-git@1.4.0`: add support for git+https and git+ssh
|
||||
([@stefanbuck](https://github.com/stefanbuck))
|
||||
* [`e561758`](https://github.com/npm/npm/commit/e5617587e7d7ab686192391ce55357dbc7fed0a3)
|
||||
`columnify@1.2.1` ([@othiym23](https://github.com/othiym23))
|
||||
* [`0c4fab3`](https://github.com/npm/npm/commit/0c4fab372ee76eab01dda83b6749429a8564902e)
|
||||
`cmd-shim@2.0.0`: upgrade to graceful-fs 3
|
||||
([@ForbesLindesay](https://github.com/ForbesLindesay))
|
||||
* [`2d69e4d`](https://github.com/npm/npm/commit/2d69e4d95777671958b5e08d3b2f5844109d73e4)
|
||||
`github-url-from-username-repo@1.0.0`: accept slashes in branch names
|
||||
([@robertkowalski](https://github.com/robertkowalski))
|
||||
* [`81f9b2b`](https://github.com/npm/npm/commit/81f9b2bac9d34c223ea093281ba3c495f23f10d1)
|
||||
ensure lifecycle spawn errors caught properly
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`bfaab8c`](https://github.com/npm/npm/commit/bfaab8c6e0942382a96b250634ded22454c36b5a)
|
||||
`npm-registry-client@2.0.7`: properly encode % in passwords
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`91cfb58`](https://github.com/npm/npm/commit/91cfb58dda851377ec604782263519f01fd96ad8)
|
||||
doc: Fix 'npm help index' ([@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v1.4.25 (2014-08-21):
|
||||
|
||||
* [`64c0ec2`](https://github.com/npm/npm/commit/64c0ec241ef5d83761ca8de54acb3c41b079956e)
|
||||
`npm-registry-client@2.0.6`: Print the notification header returned by the
|
||||
registry, and make sure status codes are printed without gratuitous quotes
|
||||
around them.
|
||||
([@othiym23](https://github.com/othiym23))
|
||||
* [`a8ed12b`](https://github.com/npm/npm/commit/a8ed12b) `tar@1.0.1`:
|
||||
Add test for removing an extract target immediately after unpacking.
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`70fd11d`](https://github.com/npm/npm/commit/70fd11d)
|
||||
`lockfile@1.0.0`: Fix incorrect interaction between `wait`, `stale`,
|
||||
and `retries` options. Part 2 of race condition leading to `ENOENT`
|
||||
errors.
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`0072c4d`](https://github.com/npm/npm/commit/0072c4d)
|
||||
`fstream@1.0.2`: Fix a double-finish call which can result in excess
|
||||
FS operations after the `close` event. Part 2 of race condition
|
||||
leading to `ENOENT` errors.
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v1.4.24 (2014-08-14):
|
||||
|
||||
* [`9344bd9`](https://github.com/npm/npm/commit/9344bd9b2929b5c399a0e0e0b34d45bce7bc24bb)
|
||||
doc: add new changelog ([@othiym23](https://github.com/othiym23))
|
||||
* [`4be76fd`](https://github.com/npm/npm/commit/4be76fd65e895883c337a99f275ccc8c801adda3)
|
||||
doc: update version doc to include `pre-*` increment args
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`e4f2620`](https://github.com/npm/npm/commit/e4f262036080a282ad60e236a9aeebd39fde9fe4)
|
||||
build: add `make tag` to tag current release as `latest`
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`ec2596a`](https://github.com/npm/npm/commit/ec2596a7cb626772780b25b0a94a7e547a812bd5)
|
||||
build: publish with `--tag=v1.4-next` ([@isaacs](https://github.com/isaacs))
|
||||
* [`9ee55f8`](https://github.com/npm/npm/commit/9ee55f892b8b473032a43c59912c5684fd1b39e6)
|
||||
build: add script to output `v1.4-next` publish tag
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`aecb56f`](https://github.com/npm/npm/commit/aecb56f95a84687ea46920a0b98aaa587fee1568)
|
||||
build: remove outdated `docpublish` make target
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`b57a9b7`](https://github.com/npm/npm/commit/b57a9b7ccd13e6b38831ed63595c8ea5763da247)
|
||||
build: remove unpublish step from `make publish`
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`2c6acb9`](https://github.com/npm/npm/commit/2c6acb96c71c16106965d5cd829b67195dd673c7)
|
||||
install: rename `.gitignore` when unpacking foreign tarballs
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`22f3681`](https://github.com/npm/npm/commit/22f3681923e993a47fc1769ba735bfa3dd138082)
|
||||
cache: detect non-gzipped tar files more reliably
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v2.0.0-alpha-6 (2014-07-31):
|
||||
|
||||
* [`d987707`](https://github.com/npm/npm/commit/d987707) move fetch into
|
||||
npm-registry-client ([@othiym23](https://github.com/othiym23))
|
||||
* [`9b318e2`](https://github.com/npm/npm/commit/9b318e2) `read-installed@3.0.0`
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`9d73de7`](https://github.com/npm/npm/commit/9d73de7) remove unnecessary
|
||||
mkdirps ([@isaacs](https://github.com/isaacs))
|
||||
* [`ea547e2`](https://github.com/npm/npm/commit/ea547e2) Bump semver to version 3
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`33ccd13`](https://github.com/npm/npm/commit/33ccd13) Don't squash execute
|
||||
perms in `_git-remotes/` dir ([@adammeadows](https://github.com/adammeadows))
|
||||
* [`48fd233`](https://github.com/npm/npm/commit/48fd233) `npm-package-arg@2.0.1`
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v1.4.23 (2014-07-31):
|
||||
|
||||
* [`8dd11d1`](https://github.com/npm/npm/commit/8dd11d1) update several
|
||||
dependencies to avoid using `semver`s starting with 0.
|
||||
|
||||
### v1.4.22 (2014-07-31):
|
||||
|
||||
* [`d9a9e84`](https://github.com/npm/npm/commit/d9a9e84) `read-package-json@1.2.4`
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`86f0340`](https://github.com/npm/npm/commit/86f0340)
|
||||
`github-url-from-git@1.2.0` ([@isaacs](https://github.com/isaacs))
|
||||
* [`a94136a`](https://github.com/npm/npm/commit/a94136a) `fstream@0.1.29`
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`bb82d18`](https://github.com/npm/npm/commit/bb82d18) `glob@4.0.5`
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`5b6bcf4`](https://github.com/npm/npm/commit/5b6bcf4) `cmd-shim@1.1.2`
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`c2aa8b3`](https://github.com/npm/npm/commit/c2aa8b3) license: Cleaned up
|
||||
legalese with actual lawyer ([@isaacs](https://github.com/isaacs))
|
||||
* [`63fe0ee`](https://github.com/npm/npm/commit/63fe0ee) `init-package-json@1.0.0`
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v2.0.0-alpha-5 (2014-07-22):
|
||||
|
||||
This release bumps up to 2.0 because of this breaking change, which could
|
||||
potentially affect how your package's scripts are run:
|
||||
|
||||
* [`df4b0e7`](https://github.com/npm/npm/commit/df4b0e7fc1abd9a54f98db75ec9e4d03d37d125b)
|
||||
[#5518](https://github.com/npm/npm/issues/5518) BREAKING CHANGE: support
|
||||
passing arguments to `run` scripts ([@bcoe](https://github.com/bcoe))
|
||||
|
||||
Other changes:
|
||||
|
||||
* [`cd422c9`](https://github.com/npm/npm/commit/cd422c9de510766797c65720d70f085000f50543)
|
||||
[#5748](https://github.com/npm/npm/issues/5748) link binaries for scoped
|
||||
packages ([@othiym23](https://github.com/othiym23))
|
||||
* [`4c3c778`](https://github.com/npm/npm/commit/4c3c77839920e830991e0c229c3c6a855c914d67)
|
||||
[#5758](https://github.com/npm/npm/issues/5758) `npm link` includes scope
|
||||
when linking scoped package ([@fengmk2](https://github.com/fengmk2))
|
||||
* [`f9f58dd`](https://github.com/npm/npm/commit/f9f58dd0f5b715d4efa6619f13901916d8f99c47)
|
||||
[#5707](https://github.com/npm/npm/issues/5707) document generic pre- /
|
||||
post-commands ([@sudodoki](https://github.com/sudodoki))
|
||||
* [`ac7a480`](https://github.com/npm/npm/commit/ac7a4801d80361b41dce4a18f22bcdf75e396000)
|
||||
[#5406](https://github.com/npm/npm/issues/5406) `npm cache` displays usage
|
||||
when called without arguments
|
||||
([@michaelnisi](https://github.com/michaelnisi))
|
||||
* [`f4554e9`](https://github.com/npm/npm/commit/f4554e99d34f77a8a02884493748f7d49a9a9d8b)
|
||||
Test fixes for Windows ([@isaacs](https://github.com/isaacs))
|
||||
* update dependencies ([@othiym23](https://github.com/othiym23))
|
||||
|
||||
|
||||
### v1.5.0-alpha-4 (2014-07-18):
|
||||
|
||||
* fall back to `_auth` config as default auth when using default registry
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* support for 'init.version' for those who don't want to deal with semver 0.0.x
|
||||
oddities ([@rvagg](https://github.com/rvagg))
|
||||
* [`be06213`](https://github.com/npm/npm/commit/be06213415f2d51a50d2c792b4cd0d3412a9a7b1)
|
||||
remove residual support for `win` log level
|
||||
([@aterris](https://github.com/aterris))
|
||||
|
||||
### v1.5.0-alpha-3 (2014-07-17):
|
||||
|
||||
* [`a3a85dd`](https://github.com/npm/npm/commit/a3a85dd004c9245a71ad2f0213bd1a9a90d64cd6)
|
||||
`--save` scoped packages correctly ([@othiym23](https://github.com/othiym23))
|
||||
* [`18a3385`](https://github.com/npm/npm/commit/18a3385bcf8bfb8312239216afbffb7eec759150)
|
||||
`npm-registry-client@3.0.2` ([@othiym23](https://github.com/othiym23))
|
||||
* [`375988b`](https://github.com/npm/npm/commit/375988b9bf5aa5170f06a790d624d31b1eb32c6d)
|
||||
invalid package names are an early error for optional deps
|
||||
([@othiym23](https://github.com/othiym23))
|
||||
* consistently use `node-package-arg` instead of arbitrary package spec
|
||||
splitting ([@othiym23](https://github.com/othiym23))
|
||||
|
||||
### v1.4.21 (2014-07-14):
|
||||
|
||||
* [`88f51aa`](https://github.com/npm/npm/commit/88f51aa27eb9a958d1fa7ec50fee5cfdedd05110)
|
||||
fix handling for 301s in `npm-registry-client@2.0.3`
|
||||
([@Raynos](https://github.com/Raynos))
|
||||
|
||||
### v1.5.0-alpha-2 (2014-07-01):
|
||||
|
||||
* [`54cf625`](https://github.com/npm/npm/commit/54cf62534e3331e3f454e609e44f0b944e819283)
|
||||
fix handling for 301s in `npm-registry-client@3.0.1`
|
||||
([@Raynos](https://github.com/Raynos))
|
||||
* [`e410861`](https://github.com/npm/npm/commit/e410861c69a3799c1874614cb5b87af8124ff98d)
|
||||
don't crash if no username set on `whoami`
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`0353dde`](https://github.com/npm/npm/commit/0353ddeaca8171aa7dbdd8102b7e2eb581a86406)
|
||||
respect `--json` for output ([@isaacs](https://github.com/isaacs))
|
||||
* [`b3d112a`](https://github.com/npm/npm/commit/b3d112ae190b984cc1779b9e6de92218f22380c6)
|
||||
outdated: Don't show headings if there's nothing to output
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`bb4b90c`](https://github.com/npm/npm/commit/bb4b90c80dbf906a1cb26d85bc0625dc2758acc3)
|
||||
outdated: Default to `latest` rather than `*` for unspecified deps
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v1.4.20 (2014-07-02):
|
||||
|
||||
* [`0353dde`](https://github.com/npm/npm/commit/0353ddeaca8171aa7dbdd8102b7e2eb581a86406)
|
||||
respect `--json` for output ([@isaacs](https://github.com/isaacs))
|
||||
* [`b3d112a`](https://github.com/npm/npm/commit/b3d112ae190b984cc1779b9e6de92218f22380c6)
|
||||
outdated: Don't show headings if there's nothing to output
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* [`bb4b90c`](https://github.com/npm/npm/commit/bb4b90c80dbf906a1cb26d85bc0625dc2758acc3)
|
||||
outdated: Default to `latest` rather than `*` for unspecified deps
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v1.5.0-alpha-1 (2014-07-01):
|
||||
|
||||
* [`eef4884`](https://github.com/npm/npm/commit/eef4884d6487ee029813e60a5f9c54e67925d9fa)
|
||||
use the correct piece of the spec for GitHub shortcuts
|
||||
([@othiym23](https://github.com/othiym23))
|
||||
|
||||
### v1.5.0-alpha-0 (2014-07-01):
|
||||
|
||||
* [`7f55057`](https://github.com/npm/npm/commit/7f55057807cfdd9ceaf6331968e666424f48116c)
|
||||
install scoped packages ([#5239](https://github.com/npm/npm/issues/5239))
|
||||
([@othiym23](https://github.com/othiym23))
|
||||
* [`0df7e16`](https://github.com/npm/npm/commit/0df7e16c0232d8f4d036ebf4ec3563215517caac)
|
||||
publish scoped packages ([#5239](https://github.com/npm/npm/issues/5239))
|
||||
([@othiym23](https://github.com/othiym23))
|
||||
* [`0689ba2`](https://github.com/npm/npm/commit/0689ba249b92b4c6279a26804c96af6f92b3a501)
|
||||
support (and save) --scope=@s config
|
||||
([@othiym23](https://github.com/othiym23))
|
||||
* [`f34878f`](https://github.com/npm/npm/commit/f34878fc4cee29901e4daf7bace94be01e25cad7)
|
||||
scope credentials to registry ([@othiym23](https://github.com/othiym23))
|
||||
* [`0ac7ca2`](https://github.com/npm/npm/commit/0ac7ca233f7a69751fe4386af6c4daa3ee9fc0da)
|
||||
capture and store bearer tokens when sent by registry
|
||||
([@othiym23](https://github.com/othiym23))
|
||||
* [`63c3277`](https://github.com/npm/npm/commit/63c3277f089b2c4417e922826bdc313ac854cad6)
|
||||
only delete files that are created by npm
|
||||
([@othiym23](https://github.com/othiym23))
|
||||
* [`4f54043`](https://github.com/npm/npm/commit/4f540437091d1cbca3915cd20c2da83c2a88bb8e)
|
||||
`npm-package-arg@2.0.0` ([@othiym23](https://github.com/othiym23))
|
||||
* [`9e1460e`](https://github.com/npm/npm/commit/9e1460e6ac9433019758481ec031358f4af4cd44)
|
||||
`read-package-json@1.2.3` ([@othiym23](https://github.com/othiym23))
|
||||
* [`719d8ad`](https://github.com/npm/npm/commit/719d8adb9082401f905ff4207ede494661f8a554)
|
||||
`fs-vacuum@1.2.1` ([@othiym23](https://github.com/othiym23))
|
||||
* [`9ef8fe4`](https://github.com/npm/npm/commit/9ef8fe4d6ead3acb3e88c712000e2d3a9480ebec)
|
||||
`async-some@1.0.0` ([@othiym23](https://github.com/othiym23))
|
||||
* [`a964f65`](https://github.com/npm/npm/commit/a964f65ab662107b62a4ca58535ce817e8cca331)
|
||||
`npmconf@2.0.1` ([@othiym23](https://github.com/othiym23))
|
||||
* [`113765b`](https://github.com/npm/npm/commit/113765bfb7d3801917c1d9f124b8b3d942bec89a)
|
||||
`npm-registry-client@3.0.0` ([@othiym23](https://github.com/othiym23))
|
||||
|
||||
### v1.4.19 (2014-07-01):
|
||||
|
||||
* [`f687433`](https://github.com/npm/npm/commit/f687433) relative URLS for
|
||||
working non-root registry URLS ([@othiym23](https://github.com/othiym23))
|
||||
* [`bea190c`](https://github.com/npm/npm/commit/bea190c)
|
||||
[#5591](https://github.com/npm/npm/issues/5591) bump nopt and npmconf
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v1.4.18 (2014-06-29):
|
||||
|
||||
* Bump glob dependency from 4.0.2 to 4.0.3. It now uses graceful-fs when
|
||||
available, increasing resilience to [various filesystem
|
||||
errors](https://github.com/isaacs/node-graceful-fs#improvements-over-fs-module).
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v1.4.17 (2014-06-27):
|
||||
|
||||
* replace escape codes with ansicolors
|
||||
([@othiym23](https://github.com/othiym23))
|
||||
* Allow to build all the docs OOTB. ([@GeJ](https://github.com/GeJ))
|
||||
* Use core.longpaths on win32 git - fixes
|
||||
[#5525](https://github.com/npm/npm/issues/5525) (Bradley Meck)
|
||||
* `npmconf@1.1.2` ([@isaacs](https://github.com/isaacs))
|
||||
* Consolidate color sniffing in config/log loading process
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* add verbose log when project config file is ignored
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* npmconf: Float patch to remove 'scope' from config defs
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* doc: npm-explore can't handle a version
|
||||
([@robertkowalski](https://github.com/robertkowalski))
|
||||
* Add user-friendly errors for ENOSPC and EROFS.
|
||||
([@voodootikigod](https://github.com/voodootikigod))
|
||||
* bump tar and fstream deps ([@isaacs](https://github.com/isaacs))
|
||||
* Run the npm-registry-couchapp tests along with npm tests
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v1.2.8000 (2014-06-17):
|
||||
|
||||
* Same as v1.4.16, but with the spinner disabled, and a version number that
|
||||
starts with v1.2.
|
||||
|
||||
### v1.4.16 (2014-06-17):
|
||||
|
||||
* `npm-registry-client@2.0.2` ([@isaacs](https://github.com/isaacs))
|
||||
* `fstream@0.1.27` ([@isaacs](https://github.com/isaacs))
|
||||
* `sha@1.2.4` ([@isaacs](https://github.com/isaacs))
|
||||
* `rimraf@2.2.8` ([@isaacs](https://github.com/isaacs))
|
||||
* `npmlog@1.0.1` ([@isaacs](https://github.com/isaacs))
|
||||
* `npm-registry-client@2.0.1` ([@isaacs](https://github.com/isaacs))
|
||||
* removed redundant dependency ([@othiym23](https://github.com/othiym23))
|
||||
* `npmconf@1.0.5` ([@isaacs](https://github.com/isaacs))
|
||||
* Properly handle errors that can occur in the config-loading process
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v1.4.15 (2014-06-10):
|
||||
|
||||
* cache: atomic de-race-ified package.json writing
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* `fstream@0.1.26` ([@isaacs](https://github.com/isaacs))
|
||||
* `graceful-fs@3.0.2` ([@isaacs](https://github.com/isaacs))
|
||||
* `osenv@0.1.0` ([@isaacs](https://github.com/isaacs))
|
||||
* Only spin the spinner when we're fetching stuff
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* Update `osenv@0.1.0` which removes ~/tmp as possible tmp-folder
|
||||
([@robertkowalski](https://github.com/robertkowalski))
|
||||
* `ini@1.2.1` ([@isaacs](https://github.com/isaacs))
|
||||
* `graceful-fs@3` ([@isaacs](https://github.com/isaacs))
|
||||
* Update glob and things depending on glob
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* github-url-from-username-repo and read-package-json updates
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* `editor@0.1.0` ([@isaacs](https://github.com/isaacs))
|
||||
* `columnify@1.1.0` ([@isaacs](https://github.com/isaacs))
|
||||
* bump ansi and associated deps ([@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v1.4.14 (2014-06-05):
|
||||
|
||||
* char-spinner: update to not bork windows
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v1.4.13 (2014-05-23):
|
||||
|
||||
* Fix `npm install` on a tarball.
|
||||
([`ed3abf1`](https://github.com/npm/npm/commit/ed3abf1aa10000f0f687330e976d78d1955557f6),
|
||||
[#5330](https://github.com/npm/npm/issues/5330),
|
||||
[@othiym23](https://github.com/othiym23))
|
||||
* Fix an issue with the spinner on Node 0.8.
|
||||
([`9f00306`](https://github.com/npm/npm/commit/9f003067909440390198c0b8f92560d84da37762),
|
||||
[@isaacs](https://github.com/isaacs))
|
||||
* Re-add `npm.commands.cache.clean` and `npm.commands.cache.read` APIs, and
|
||||
document `npm.commands.cache.*` as npm-cache(3).
|
||||
([`e06799e`](https://github.com/npm/npm/commit/e06799e77e60c1fc51869619083a25e074d368b3),
|
||||
[@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v1.4.12 (2014-05-23):
|
||||
|
||||
* remove normalize-package-data from top level, de-^-ify inflight dep
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* Always sort saved bundleDependencies ([@isaacs](https://github.com/isaacs))
|
||||
* add inflight to bundledDependencies
|
||||
([@othiym23](https://github.com/othiym23))
|
||||
|
||||
### v1.4.11 (2014-05-22):
|
||||
|
||||
* fix `npm ls` labeling issue
|
||||
* `node-gyp@0.13.1`
|
||||
* default repository to https:// instead of git://
|
||||
* addLocalTarball: Remove extraneous unpack
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* Massive cache folder refactor ([@othiym23](https://github.com/othiym23) and
|
||||
[@isaacs](https://github.com/isaacs))
|
||||
* Busy Spinner, no http noise ([@isaacs](https://github.com/isaacs))
|
||||
* Per-project .npmrc file support ([@isaacs](https://github.com/isaacs))
|
||||
* `npmconf@1.0.0`, Refactor config/uid/prefix loading process
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* Allow once-disallowed characters in passwords
|
||||
([@isaacs](https://github.com/isaacs))
|
||||
* Send npm version as 'version' header ([@isaacs](https://github.com/isaacs))
|
||||
* fix cygwin encoding issue (Karsten Tinnefeld)
|
||||
* Allow non-github repositories with `npm repo`
|
||||
([@evanlucas](https://github.com/evanlucas))
|
||||
* Allow peer deps to be satisfied by grandparent
|
||||
* Stop optional deps moving into deps on `update --save`
|
||||
([@timoxley](https://github.com/timoxley))
|
||||
* Ensure only matching deps update with `update --save*`
|
||||
([@timoxley](https://github.com/timoxley))
|
||||
* Add support for `prerelease`, `preminor`, `prepatch` to `npm version`
|
||||
|
||||
### v1.4.10 (2014-05-05):
|
||||
|
||||
* Don't set referer if already set
|
||||
* fetch: Send referer and npm-session headers
|
||||
* `run-script`: Support `--parseable` and `--json`
|
||||
* list runnable scripts ([@evanlucas](https://github.com/evanlucas))
|
||||
* Use marked instead of ronn for html docs
|
||||
|
||||
### v1.4.9 (2014-05-01):
|
||||
|
||||
* Send referer header (with any potentially private stuff redacted)
|
||||
* Fix critical typo bug in previous npm release
|
||||
|
||||
### v1.4.8 (2014-05-01):
|
||||
|
||||
* Check SHA before using files from cache
|
||||
* adduser: allow change of the saved password
|
||||
* Make `npm install` respect `config.unicode`
|
||||
* Fix lifecycle to pass `Infinity` for config env value
|
||||
* Don't return 0 exit code on invalid command
|
||||
* cache: Handle 404s and other HTTP errors as errors
|
||||
* Resolve ~ in path configs to env.HOME
|
||||
* Include npm version in default user-agent conf
|
||||
* npm init: Use ISC as default license, use save-prefix for deps
|
||||
* Many test and doc fixes
|
||||
|
||||
### v1.4.7 (2014-04-15):
|
||||
|
||||
* Add `--save-prefix` option that can be used to override the default of `^`
|
||||
when using `npm install --save` and its counterparts.
|
||||
([`64eefdf`](https://github.com/npm/npm/commit/64eefdfe26bb27db8dc90e3ab5d27a5ef18a4470),
|
||||
[@thlorenz](https://github.com/thlorenz))
|
||||
* Allow `--silent` to silence the echoing of commands that occurs with `npm
|
||||
run`.
|
||||
([`c95cf08`](https://github.com/npm/npm/commit/c95cf086e5b97dbb48ff95a72517b203a8f29eab),
|
||||
[@Raynos](https://github.com/Raynos))
|
||||
* Some speed improvements to the cache, which should improve install times.
|
||||
([`cb94310`](https://github.com/npm/npm/commit/cb94310a6adb18cb7b881eacb8d67171eda8b744),
|
||||
[`3b0870f`](https://github.com/npm/npm/commit/3b0870fb2f40358b3051abdab6be4319d196b99d),
|
||||
[`120f5a9`](https://github.com/npm/npm/commit/120f5a93437bbbea9249801574a2f33e44e81c33),
|
||||
[@isaacs](https://github.com/isaacs))
|
||||
* Improve ability to retry registry requests when a subset of the registry
|
||||
servers are down.
|
||||
([`4a5257d`](https://github.com/npm/npm/commit/4a5257de3870ac3dafa39667379f19f6dcd6093e),
|
||||
https://github.com/npm/npm-registry-client/commit/7686d02cb0b844626d6a401e58c0755ef3bc8432,
|
||||
[@isaacs](https://github.com/isaacs))
|
||||
* Fix marking of peer dependencies as extraneous.
|
||||
([`779b164`](https://github.com/npm/npm/commit/779b1649764607b062c031c7e5c972151b4a1754),
|
||||
https://github.com/npm/read-installed/commit/6680ba6ef235b1ca3273a00b70869798ad662ddc,
|
||||
[@isaacs](https://github.com/isaacs))
|
||||
* Fix npm crashing when doing `npm shrinkwrap` in the presence of a
|
||||
`package.json` with no dependencies.
|
||||
([`a9d9fa5`](https://github.com/npm/npm/commit/a9d9fa5ad3b8c925a589422b7be28d2735f320b0),
|
||||
[@kislyuk](https://github.com/kislyuk))
|
||||
* Fix error when using `npm view` on packages that have no versions or have
|
||||
been unpublished.
|
||||
([`94df2f5`](https://github.com/npm/npm/commit/94df2f56d684b35d1df043660180fc321b743dc8),
|
||||
[@juliangruber](https://github.com/juliangruber);
|
||||
[`2241a09`](https://github.com/npm/npm/commit/2241a09c843669c70633c399ce698cec3add40b3),
|
||||
[@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v1.4.6 (2014-03-19):
|
||||
|
||||
* Fix extraneous package detection to work in more cases.
|
||||
([`f671286`](https://github.com/npm/npm/commit/f671286), npm/read-installed#20,
|
||||
[@LaurentVB](https://github.com/LaurentVB))
|
||||
|
||||
### v1.4.5 (2014-03-18):
|
||||
|
||||
* Sort dependencies in `package.json` when doing `npm install --save` and all
|
||||
its variants.
|
||||
([`6fd6ff7`](https://github.com/npm/npm/commit/6fd6ff7e536ea6acd33037b1878d4eca1f931985),
|
||||
[@domenic](https://github.com/domenic))
|
||||
* Add `--save-exact` option, usable alongside `--save` and its variants, which
|
||||
will write the exact version number into `package.json` instead of the
|
||||
appropriate semver-compatibility range.
|
||||
([`17f07df`](https://github.com/npm/npm/commit/17f07df8ad8e594304c2445bf7489cb53346f2c5),
|
||||
[@timoxley](https://github.com/timoxley))
|
||||
* Accept gzipped content from the registry to speed up downloads and save
|
||||
bandwidth.
|
||||
([`a3762de`](https://github.com/npm/npm/commit/a3762de843b842be8fa0ab57cdcd6b164f145942),
|
||||
npm/npm-registry-client#40, [@fengmk2](https://github.com/fengmk2))
|
||||
* Fix `npm ls`'s `--depth` and `--log` options.
|
||||
([`1d29b17`](https://github.com/npm/npm/commit/1d29b17f5193d52a5c4faa412a95313dcf41ed91),
|
||||
npm/read-installed#13, [@zertosh](https://github.com/zertosh))
|
||||
* Fix "Adding a cache directory to the cache will make the world implode" in
|
||||
certain cases.
|
||||
([`9a4b2c4`](https://github.com/npm/npm/commit/9a4b2c4667c2b1e0054e3d5611ab86acb1760834),
|
||||
domenic/path-is-inside#1, [@pmarques](https://github.com/pmarques))
|
||||
* Fix readmes not being uploaded in certain rare cases.
|
||||
([`527b72c`](https://github.com/npm/npm/commit/527b72cca6c55762b51e592c48a9f28cc7e2ff8b),
|
||||
[@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v1.4.4 (2014-02-20):
|
||||
|
||||
* Add `npm t` as an alias for `npm test` (which is itself an alias for `npm run
|
||||
test`, or even `npm run-script test`). We like making running your tests
|
||||
easy. ([`14e650b`](https://github.com/npm/npm/commit/14e650bce0bfebba10094c961ac104a61417a5de), [@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v1.4.3 (2014-02-16):
|
||||
|
||||
* Add back `npm prune --production`, which was removed in 1.3.24.
|
||||
([`acc4d02`](https://github.com/npm/npm/commit/acc4d023c57d07704b20a0955e4bf10ee91bdc83),
|
||||
[@davglass](https://github.com/davglass))
|
||||
* Default `npm install --save` and its counterparts to use the `^` version
|
||||
specifier, instead of `~`.
|
||||
([`0a3151c`](https://github.com/npm/npm/commit/0a3151c9cbeb50c1c65895685c2eabdc7e2608dc),
|
||||
[@mikolalysenko](https://github.com/mikolalysenko))
|
||||
* Make `npm shrinkwrap` output dependencies in a sorted order, so that diffs
|
||||
between shrinkwrap files should be saner now.
|
||||
([`059b2bf`](https://github.com/npm/npm/commit/059b2bfd06ae775205a37257dca80142596a0113),
|
||||
[@Raynos](https://github.com/Raynos))
|
||||
* Fix `npm dedupe` not correctly respecting dependency constraints.
|
||||
([`86028e9`](https://github.com/npm/npm/commit/86028e9fd8524d5e520ce01ba2ebab5a030103fc),
|
||||
[@rafeca](https://github.com/rafeca))
|
||||
* Fix `npm ls` giving spurious warnings when you used `"latest"` as a version
|
||||
specifier.
|
||||
(https://github.com/npm/read-installed/commit/d2956400e0386931c926e0f30c334840e0938f14,
|
||||
[@bajtos](https://github.com/bajtos))
|
||||
* Fixed a bug where using `npm link` on packages without a `name` value could
|
||||
cause npm to delete itself.
|
||||
([`401a642`](https://github.com/npm/npm/commit/401a64286aa6665a94d1d2f13604f7014c5fce87),
|
||||
[@isaacs](https://github.com/isaacs))
|
||||
* Fixed `npm install ./pkg@1.2.3` to actually install the directory at
|
||||
`pkg@1.2.3`; before it would try to find version `1.2.3` of the package
|
||||
`./pkg` in the npm registry.
|
||||
([`46d8768`](https://github.com/npm/npm/commit/46d876821d1dd94c050d5ebc86444bed12c56739),
|
||||
[@rlidwka](https://github.com/rlidwka); see also
|
||||
[`f851b79`](https://github.com/npm/npm/commit/f851b79a71d9a5f5125aa85877c94faaf91bea5f))
|
||||
* Fix `npm outdated` to respect the `color` configuration option.
|
||||
([`d4f6f3f`](https://github.com/npm/npm/commit/d4f6f3ff83bd14fb60d3ac6392cb8eb6b1c55ce1),
|
||||
[@timoxley](https://github.com/timoxley))
|
||||
* Fix `npm outdated --parseable`.
|
||||
([`9575a23`](https://github.com/npm/npm/commit/9575a23f955ce3e75b509c89504ef0bd707c8cf6),
|
||||
[@yhpark](https://github.com/yhpark))
|
||||
* Fix a lockfile-related errors when using certain Git URLs.
|
||||
([`164b97e`](https://github.com/npm/npm/commit/164b97e6089f64e686db7a9a24016f245effc37f),
|
||||
[@nigelzor](https://github.com/nigelzor))
|
||||
|
||||
### v1.4.2 (2014-02-13):
|
||||
|
||||
* Fixed an issue related to mid-publish GET requests made against the registry.
|
||||
(https://github.com/npm/npm-registry-client/commit/acbec48372bc1816c67c9e7cbf814cf50437ff93,
|
||||
[@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v1.4.1 (2014-02-13):
|
||||
|
||||
* Fix `npm shrinkwrap` forgetting to shrinkwrap dependencies that were also
|
||||
development dependencies.
|
||||
([`9c575c5`](https://github.com/npm/npm/commit/9c575c56efa9b0c8b0d4a17cb9c1de3833004bcd),
|
||||
[@diwu1989](https://github.com/diwu1989))
|
||||
* Fixed publishing of pre-existing packages with uppercase characters in their
|
||||
name.
|
||||
(https://github.com/npm/npm-registry-client/commit/9345d3b6c3d8510dd5c4418f27ee1fce59acebad,
|
||||
[@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v1.4.0 (2014-02-12):
|
||||
|
||||
* Remove `npm publish --force`. See
|
||||
https://github.com/npm/npmjs.org/issues/148.
|
||||
([@isaacs](https://github.com/isaacs),
|
||||
npm/npm-registry-client@2c8dba990de6a59af6545b75cc00a6dc12777c2a)
|
||||
* Other changes to the registry client related to saved configs and couch
|
||||
logins. ([@isaacs](https://github.com/isaacs);
|
||||
npm/npm-registry-client@25e2b019a1588155e5f87d035c27e79963b75951,
|
||||
npm/npm-registry-client@9e41e9101b68036e0f078398785f618575f3cdde,
|
||||
npm/npm-registry-client@2c8dba990de6a59af6545b75cc00a6dc12777c2a)
|
||||
* Show an error to the user when doing `npm update` and the `package.json`
|
||||
specifies a version that does not exist.
|
||||
([@evanlucas](https://github.com/evanlucas),
|
||||
[`027a33a`](https://github.com/npm/npm/commit/027a33a5c594124cc1d82ddec5aee2c18bc8dc32))
|
||||
* Fix some issues with cache ownership in certain installation configurations.
|
||||
([@outcoldman](https://github.com/outcoldman),
|
||||
[`a132690`](https://github.com/npm/npm/commit/a132690a2876cda5dcd1e4ca751f21dfcb11cb9e))
|
||||
* Fix issues where GitHub shorthand dependencies `user/repo` were not always
|
||||
treated the same as full Git URLs.
|
||||
([@robertkowalski](https://github.com/robertkowalski),
|
||||
https://github.com/meryn/normalize-package-data/commit/005d0b637aec1895117fcb4e3b49185eebf9e240)
|
||||
|
||||
### v1.3.26 (2014-02-02):
|
||||
|
||||
* Fixes and updates to publishing code
|
||||
([`735427a`](https://github.com/npm/npm/commit/735427a69ba4fe92aafa2d88f202aaa42920a9e2)
|
||||
and
|
||||
[`c0ac832`](https://github.com/npm/npm/commit/c0ac83224d49aa62e55577f8f27d53bbfd640dc5),
|
||||
[@isaacs](https://github.com/isaacs))
|
||||
* Fix `npm bugs` with no arguments.
|
||||
([`b99d465`](https://github.com/npm/npm/commit/b99d465221ac03bca30976cbf4d62ca80ab34091),
|
||||
[@Hoops](https://github.com/Hoops))
|
||||
|
||||
### v1.3.25 (2014-01-25):
|
||||
|
||||
* Remove gubblebum blocky font from documentation headers.
|
||||
([`6940c9a`](https://github.com/npm/npm/commit/6940c9a100160056dc6be8f54a7ad7fa8ceda7e2),
|
||||
[@isaacs](https://github.com/isaacs))
|
||||
|
||||
### v1.3.24 (2014-01-19):
|
||||
|
||||
* Make the search output prettier, with nice truncated columns, and a `--long`
|
||||
option to create wrapping columns.
|
||||
([`20439b2`](https://github.com/npm/npm/commit/20439b2) and
|
||||
[`3a6942d`](https://github.com/npm/npm/commit/3a6942d),
|
||||
[@timoxley](https://github.com/timoxley))
|
||||
* Support multiple packagenames in `npm docs`.
|
||||
([`823010b`](https://github.com/npm/npm/commit/823010b),
|
||||
[@timoxley](https://github.com/timoxley))
|
||||
* Fix the `npm adduser` bug regarding "Error: default value must be string or
|
||||
number" again. ([`b9b4248`](https://github.com/npm/npm/commit/b9b4248),
|
||||
[@isaacs](https://github.com/isaacs))
|
||||
* Fix `scripts` entries containing whitespaces on Windows.
|
||||
([`80282ed`](https://github.com/npm/npm/commit/80282ed),
|
||||
[@robertkowalski](https://github.com/robertkowalski))
|
||||
* Fix `npm update` for Git URLs that have credentials in them
|
||||
([`93fc364`](https://github.com/npm/npm/commit/93fc364),
|
||||
[@danielsantiago](https://github.com/danielsantiago))
|
||||
* Fix `npm install` overwriting `npm link`-ed dependencies when they are tagged
|
||||
Git dependencies. ([`af9bbd9`](https://github.com/npm/npm/commit/af9bbd9),
|
||||
[@evanlucas](https://github.com/evanlucas))
|
||||
* Remove `npm prune --production` since it buggily removed some dependencies
|
||||
that were necessary for production; see
|
||||
[#4509](https://github.com/npm/npm/issues/4509). Hopefully it can make its
|
||||
triumphant return, one day.
|
||||
([`1101b6a`](https://github.com/npm/npm/commit/1101b6a),
|
||||
[@isaacs](https://github.com/isaacs))
|
||||
|
||||
Dependency updates:
|
||||
* [`909cccf`](https://github.com/npm/npm/commit/909cccf) `read-package-json@1.1.6`
|
||||
* [`a3891b6`](https://github.com/npm/npm/commit/a3891b6) `rimraf@2.2.6`
|
||||
* [`ac6efbc`](https://github.com/npm/npm/commit/ac6efbc) `sha@1.2.3`
|
||||
* [`dd30038`](https://github.com/npm/npm/commit/dd30038) `node-gyp@0.12.2`
|
||||
* [`c8c3ebe`](https://github.com/npm/npm/commit/c8c3ebe) `npm-registry-client@0.3.3`
|
||||
* [`4315286`](https://github.com/npm/npm/commit/4315286) `npmconf@0.1.12`
|
||||
|
||||
### v1.3.23 (2014-01-03):
|
||||
|
||||
* Properly handle installations that contained a certain class of circular
|
||||
dependencies.
|
||||
([`5dc93e8`](https://github.com/npm/npm/commit/5dc93e8c82604c45b6067b1acf1c768e0bfce754),
|
||||
[@substack](https://github.com/substack))
|
||||
|
||||
### v1.3.22 (2013-12-25):
|
||||
|
||||
* Fix a critical bug in `npm adduser` that would manifest in the error message
|
||||
"Error: default value must be string or number."
|
||||
([`fba4bd2`](https://github.com/npm/npm/commit/fba4bd24bc2ab00ccfeda2043aa53af7d75ef7ce),
|
||||
[@isaacs](https://github.com/isaacs))
|
||||
* Allow `npm bugs` in the current directory to open the current package's bugs
|
||||
URL.
|
||||
([`d04cf64`](https://github.com/npm/npm/commit/d04cf6483932c693452f3f778c2fa90f6153a4af),
|
||||
[@evanlucas](https://github.com/evanlucas))
|
||||
* Several fixes to various error messages to include more useful or updated
|
||||
information.
|
||||
([`1e6f2a7`](https://github.com/npm/npm/commit/1e6f2a72ca058335f9f5e7ca22d01e1a8bb0f9f7),
|
||||
[`ff46366`](https://github.com/npm/npm/commit/ff46366bd40ff0ef33c7bac8400bc912c56201d1),
|
||||
[`8b4bb48`](https://github.com/npm/npm/commit/8b4bb4815d80a3612186dc5549d698e7b988eb03);
|
||||
[@rlidwka](https://github.com/rlidwka),
|
||||
[@evanlucas](https://github.com/evanlucas))
|
||||
|
||||
### v1.3.21 (2013-12-17):
|
||||
|
||||
* Fix a critical bug that prevented publishing due to incorrect hash
|
||||
calculation.
|
||||
([`4ca4a2c`](https://github.com/npm/npm-registry-client/commit/4ca4a2c6333144299428be6b572e2691aa59852e),
|
||||
[@dominictarr](https://github.com/dominictarr))
|
||||
|
||||
### v1.3.20 (2013-12-17):
|
||||
|
||||
* Fixes a critical bug in v1.3.19. Thankfully, due to that bug, no one could
|
||||
install npm v1.3.19 :)
|
||||
|
||||
### v1.3.19 (2013-12-16):
|
||||
|
||||
* Adds atomic PUTs for publishing packages, which should result in far fewer
|
||||
requests and less room for replication errors on the server-side.
|
||||
|
||||
### v1.3.18 (2013-12-16):
|
||||
|
||||
* Added an `--ignore-scripts` option, which will prevent `package.json` scripts
|
||||
from being run. Most notably, this will work on `npm install`, so e.g. `npm
|
||||
install --ignore-scripts` will not run preinstall and prepublish scripts.
|
||||
([`d7e67bf`](https://github.com/npm/npm/commit/d7e67bf0d94b085652ec1c87d595afa6f650a8f6),
|
||||
[@sqs](https://github.com/sqs))
|
||||
* Fixed a bug introduced in 1.3.16 that would manifest with certain cache
|
||||
configurations, by causing spurious errors saying "Adding a cache directory
|
||||
to the cache will make the world implode."
|
||||
([`966373f`](https://github.com/npm/npm/commit/966373fad8d741637f9744882bde9f6e94000865),
|
||||
[@domenic](https://github.com/domenic))
|
||||
* Re-fixed the multiple download of URL dependencies, whose fix was reverted in
|
||||
1.3.17.
|
||||
([`a362c3f`](https://github.com/npm/npm/commit/a362c3f1919987419ed8a37c8defa19d2e6697b0),
|
||||
[@spmason](https://github.com/spmason))
|
||||
|
||||
### v1.3.17 (2013-12-11):
|
||||
|
||||
* This release reverts
|
||||
[`644c2ff`](https://github.com/npm/npm/commit/644c2ff3e3d9c93764f7045762477f48864d64a7),
|
||||
which avoided re-downloading URL and shinkwrap dependencies when doing `npm
|
||||
install`. You can see the in-depth reasoning in
|
||||
[`d8c907e`](https://github.com/npm/npm/commit/d8c907edc2019b75cff0f53467e34e0ffd7e5fba);
|
||||
the problem was, that the patch changed the behavior of `npm install -f` to
|
||||
reinstall all dependencies.
|
||||
* A new version of the no-re-downloading fix has been submitted as
|
||||
[#4303](https://github.com/npm/npm/issues/4303) and will hopefully be
|
||||
included in the next release.
|
||||
|
||||
### v1.3.16 (2013-12-11):
|
||||
|
||||
* Git URL dependencies are now updated on `npm install`, fixing a two-year old
|
||||
bug
|
||||
([`5829ecf`](https://github.com/npm/npm/commit/5829ecf032b392d2133bd351f53d3c644961396b),
|
||||
[@robertkowalski](https://github.com/robertkowalski)). Additional progress on
|
||||
reducing the resulting Git-related I/O is tracked as
|
||||
[#4191](https://github.com/npm/npm/issues/4191), but for now, this will be a
|
||||
big improvement.
|
||||
* Added a `--json` mode to `npm outdated` to give a parseable output.
|
||||
([`0b6c9b7`](https://github.com/npm/npm/commit/0b6c9b7c8c5579f4d7d37a0c24d9b7a12ccbe5fe),
|
||||
[@yyx990803](https://github.com/yyx990803))
|
||||
* Made `npm outdated` much prettier and more useful. It now outputs a
|
||||
color-coded and easy-to-read table.
|
||||
([`fd3017f`](https://github.com/npm/npm/commit/fd3017fc3e9d42acf6394a5285122edb4dc16106),
|
||||
[@quimcalpe](https://github.com/quimcalpe))
|
||||
* Added the `--depth` option to `npm outdated`, so that e.g. you can do `npm
|
||||
outdated --depth=0` to show only top-level outdated dependencies.
|
||||
([`1d184ef`](https://github.com/npm/npm/commit/1d184ef3f4b4bc309d38e9128732e3e6fb46d49c),
|
||||
[@yyx990803](https://github.com/yyx990803))
|
||||
* Added a `--no-git-tag-version` option to `npm version`, for doing the usual
|
||||
job of `npm version` minus the Git tagging. This could be useful if you need
|
||||
to increase the version in other related files before actually adding the
|
||||
tag.
|
||||
([`59ca984`](https://github.com/npm/npm/commit/59ca9841ba4f4b2f11b8e72533f385c77ae9f8bd),
|
||||
[@evanlucas](https://github.com/evanlucas))
|
||||
* Made `npm repo` and `npm docs` work without any arguments, adding them to the
|
||||
list of npm commands that work on the package in the current directory when
|
||||
invoked without arguments.
|
||||
([`bf9048e`](https://github.com/npm/npm/commit/bf9048e2fa16d43fbc4b328d162b0a194ca484e8),
|
||||
[@robertkowalski](https://github.com/robertkowalski);
|
||||
[`07600d0`](https://github.com/npm/npm/commit/07600d006c652507cb04ac0dae9780e35073dd67),
|
||||
[@wilmoore](https://github.com/wilmoore)). There are a few other commands we
|
||||
still want to implement this for; see
|
||||
[#4204](https://github.com/npm/npm/issues/4204).
|
||||
* Pass through the `GIT_SSL_NO_VERIFY` environment variable to Git, if it is
|
||||
set; we currently do this with a few other environment variables, but we
|
||||
missed that one.
|
||||
([`c625de9`](https://github.com/npm/npm/commit/c625de91770df24c189c77d2e4bc821f2265efa8),
|
||||
[@arikon](https://github.com/arikon))
|
||||
* Fixed `npm dedupe` on Windows due to incorrect path separators being used
|
||||
([`7677de4`](https://github.com/npm/npm/commit/7677de4583100bc39407093ecc6bc13715bf8161),
|
||||
[@mcolyer](https://github.com/mcolyer)).
|
||||
* Fixed the `npm help` command when multiple words were searched for; it
|
||||
previously gave a `ReferenceError`.
|
||||
([`6a28dd1`](https://github.com/npm/npm/commit/6a28dd147c6957a93db12b1081c6e0da44fe5e3c),
|
||||
[@dereckson](https://github.com/dereckson))
|
||||
* Stopped re-downloading URL and shrinkwrap dependencies, as demonstrated in
|
||||
[#3463](https://github.com/npm/npm/issues/3463)
|
||||
([`644c2ff`](https://github.com/isaacs/npm/commit/644c2ff3e3d9c93764f7045762477f48864d64a7),
|
||||
[@spmason](https://github.com/spmason)). You can use the `--force` option to
|
||||
force re-download and installation of all dependencies.
|
||||
9
deps/npm/CONTRIBUTING.md
vendored
Normal file
9
deps/npm/CONTRIBUTING.md
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
## Before you submit a new issue
|
||||
|
||||
* Check if there's a simple solution in the
|
||||
[Troubleshooting](https://github.com/npm/npm/wiki/Troubleshooting)
|
||||
wiki.
|
||||
* [Search for similar
|
||||
issues](https://github.com/npm/npm/search?q=Similar%20issues&type=Issues).
|
||||
* Ensure your new issue conforms to the [Contributing
|
||||
Guidelines](https://github.com/npm/npm/wiki/Contributing-Guidelines).
|
||||
294
deps/npm/LICENSE
vendored
294
deps/npm/LICENSE
vendored
@@ -1,52 +1,256 @@
|
||||
Copyright (c) Isaac Z. Schlueter (the "Original Author")
|
||||
Copyright (c) npm, Inc. and Contributors
|
||||
All rights reserved.
|
||||
|
||||
MIT +no-false-attribs License
|
||||
npm is released under the Artistic License 2.0, subject to additional terms
|
||||
that are listed below.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person
|
||||
obtaining a copy of this software and associated documentation
|
||||
files (the "Software"), to deal in the Software without
|
||||
restriction, including without limitation the rights to use,
|
||||
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following
|
||||
conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
Distributions of all or part of the Software intended to be used
|
||||
by the recipients as they would use the unmodified Software,
|
||||
containing modifications that substantially alter, remove, or
|
||||
disable functionality of the Software, outside of the documented
|
||||
configuration mechanisms provided by the Software, shall be
|
||||
modified such that the Original Author's bug reporting email
|
||||
addresses and urls are either replaced with the contact information
|
||||
of the parties responsible for the changes, or removed entirely.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
OTHER DEALINGS IN THE SOFTWARE.
|
||||
The text of the npm License follows and the text of the additional terms
|
||||
follows the Artistic License 2.0 terms:
|
||||
|
||||
|
||||
Except where noted, this license applies to any and all software
|
||||
programs and associated documentation files created by the
|
||||
Original Author, when distributed with the Software.
|
||||
--------
|
||||
|
||||
"Node.js" and "node" trademark Joyent, Inc. npm is not officially
|
||||
part of the Node.js project, and is neither owned by nor
|
||||
officially affiliated with Joyent, Inc.
|
||||
|
||||
Packages published in the npm registry (other than the Software and
|
||||
its included dependencies) are not part of npm itself, are the sole
|
||||
property of their respective maintainers, and are not covered by
|
||||
The Artistic License 2.0
|
||||
|
||||
Copyright (c) 2000-2006, The Perl Foundation.
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
This license establishes the terms under which a given free software
|
||||
Package may be copied, modified, distributed, and/or redistributed.
|
||||
The intent is that the Copyright Holder maintains some artistic
|
||||
control over the development of that Package while still keeping the
|
||||
Package available as open source and free software.
|
||||
|
||||
You are always permitted to make arrangements wholly outside of this
|
||||
license directly with the Copyright Holder of a given Package. If the
|
||||
terms of this license do not permit the full use that you propose to
|
||||
make of the Package, you should contact the Copyright Holder and seek
|
||||
a different licensing arrangement.
|
||||
|
||||
Definitions
|
||||
|
||||
"Copyright Holder" means the individual(s) or organization(s)
|
||||
named in the copyright notice for the entire Package.
|
||||
|
||||
"Contributor" means any party that has contributed code or other
|
||||
material to the Package, in accordance with the Copyright Holder's
|
||||
procedures.
|
||||
|
||||
"You" and "your" means any person who would like to copy,
|
||||
distribute, or modify the Package.
|
||||
|
||||
"Package" means the collection of files distributed by the
|
||||
Copyright Holder, and derivatives of that collection and/or of
|
||||
those files. A given Package may consist of either the Standard
|
||||
Version, or a Modified Version.
|
||||
|
||||
"Distribute" means providing a copy of the Package or making it
|
||||
accessible to anyone else, or in the case of a company or
|
||||
organization, to others outside of your company or organization.
|
||||
|
||||
"Distributor Fee" means any fee that you charge for Distributing
|
||||
this Package or providing support for this Package to another
|
||||
party. It does not mean licensing fees.
|
||||
|
||||
"Standard Version" refers to the Package if it has not been
|
||||
modified, or has been modified only in ways explicitly requested
|
||||
by the Copyright Holder.
|
||||
|
||||
"Modified Version" means the Package, if it has been changed, and
|
||||
such changes were not explicitly requested by the Copyright
|
||||
Holder.
|
||||
|
||||
"Original License" means this Artistic License as Distributed with
|
||||
the Standard Version of the Package, in its current version or as
|
||||
it may be modified by The Perl Foundation in the future.
|
||||
|
||||
"Source" form means the source code, documentation source, and
|
||||
configuration files for the Package.
|
||||
|
||||
"Compiled" form means the compiled bytecode, object code, binary,
|
||||
or any other form resulting from mechanical transformation or
|
||||
translation of the Source form.
|
||||
|
||||
|
||||
Permission for Use and Modification Without Distribution
|
||||
|
||||
(1) You are permitted to use the Standard Version and create and use
|
||||
Modified Versions for any purpose without restriction, provided that
|
||||
you do not Distribute the Modified Version.
|
||||
|
||||
|
||||
Permissions for Redistribution of the Standard Version
|
||||
|
||||
(2) You may Distribute verbatim copies of the Source form of the
|
||||
Standard Version of this Package in any medium without restriction,
|
||||
either gratis or for a Distributor Fee, provided that you duplicate
|
||||
all of the original copyright notices and associated disclaimers. At
|
||||
your discretion, such verbatim copies may or may not include a
|
||||
Compiled form of the Package.
|
||||
|
||||
(3) You may apply any bug fixes, portability changes, and other
|
||||
modifications made available from the Copyright Holder. The resulting
|
||||
Package will still be considered the Standard Version, and as such
|
||||
will be subject to the Original License.
|
||||
|
||||
|
||||
Distribution of Modified Versions of the Package as Source
|
||||
|
||||
(4) You may Distribute your Modified Version as Source (either gratis
|
||||
or for a Distributor Fee, and with or without a Compiled form of the
|
||||
Modified Version) provided that you clearly document how it differs
|
||||
from the Standard Version, including, but not limited to, documenting
|
||||
any non-standard features, executables, or modules, and provided that
|
||||
you do at least ONE of the following:
|
||||
|
||||
(a) make the Modified Version available to the Copyright Holder
|
||||
of the Standard Version, under the Original License, so that the
|
||||
Copyright Holder may include your modifications in the Standard
|
||||
Version.
|
||||
|
||||
(b) ensure that installation of your Modified Version does not
|
||||
prevent the user installing or running the Standard Version. In
|
||||
addition, the Modified Version must bear a name that is different
|
||||
from the name of the Standard Version.
|
||||
|
||||
(c) allow anyone who receives a copy of the Modified Version to
|
||||
make the Source form of the Modified Version available to others
|
||||
under
|
||||
|
||||
(i) the Original License or
|
||||
|
||||
(ii) a license that permits the licensee to freely copy,
|
||||
modify and redistribute the Modified Version using the same
|
||||
licensing terms that apply to the copy that the licensee
|
||||
received, and requires that the Source form of the Modified
|
||||
Version, and of any works derived from it, be made freely
|
||||
available in that license fees are prohibited but Distributor
|
||||
Fees are allowed.
|
||||
|
||||
|
||||
Distribution of Compiled Forms of the Standard Version
|
||||
or Modified Versions without the Source
|
||||
|
||||
(5) You may Distribute Compiled forms of the Standard Version without
|
||||
the Source, provided that you include complete instructions on how to
|
||||
get the Source of the Standard Version. Such instructions must be
|
||||
valid at the time of your distribution. If these instructions, at any
|
||||
time while you are carrying out such distribution, become invalid, you
|
||||
must provide new instructions on demand or cease further distribution.
|
||||
If you provide valid instructions or cease distribution within thirty
|
||||
days after you become aware that the instructions are invalid, then
|
||||
you do not forfeit any of your rights under this license.
|
||||
|
||||
(6) You may Distribute a Modified Version in Compiled form without
|
||||
the Source, provided that you comply with Section 4 with respect to
|
||||
the Source of the Modified Version.
|
||||
|
||||
|
||||
Aggregating or Linking the Package
|
||||
|
||||
(7) You may aggregate the Package (either the Standard Version or
|
||||
Modified Version) with other packages and Distribute the resulting
|
||||
aggregation provided that you do not charge a licensing fee for the
|
||||
Package. Distributor Fees are permitted, and licensing fees for other
|
||||
components in the aggregation are permitted. The terms of this license
|
||||
apply to the use and Distribution of the Standard or Modified Versions
|
||||
as included in the aggregation.
|
||||
|
||||
(8) You are permitted to link Modified and Standard Versions with
|
||||
other works, to embed the Package in a larger work of your own, or to
|
||||
build stand-alone binary or bytecode versions of applications that
|
||||
include the Package, and Distribute the result without restriction,
|
||||
provided the result does not expose a direct interface to the Package.
|
||||
|
||||
|
||||
Items That are Not Considered Part of a Modified Version
|
||||
|
||||
(9) Works (including, but not limited to, modules and scripts) that
|
||||
merely extend or make use of the Package, do not, by themselves, cause
|
||||
the Package to be a Modified Version. In addition, such works are not
|
||||
considered parts of the Package itself, and are not subject to the
|
||||
terms of this license.
|
||||
|
||||
|
||||
General Provisions
|
||||
|
||||
(10) Any use, modification, and distribution of the Standard or
|
||||
Modified Versions is governed by this Artistic License. By using,
|
||||
modifying or distributing the Package, you accept this license. Do not
|
||||
use, modify, or distribute the Package, if you do not accept this
|
||||
license.
|
||||
|
||||
(11) If your Modified Version has been derived from a Modified
|
||||
Version made by someone other than you, you are nevertheless required
|
||||
to ensure that your Modified Version complies with the requirements of
|
||||
this license.
|
||||
|
||||
(12) This license does not grant you the right to use any trademark,
|
||||
service mark, tradename, or logo of the Copyright Holder.
|
||||
|
||||
(13) This license includes the non-exclusive, worldwide,
|
||||
free-of-charge patent license to make, have made, use, offer to sell,
|
||||
sell, import and otherwise transfer the Package with respect to any
|
||||
patent claims licensable by the Copyright Holder that are necessarily
|
||||
infringed by the Package. If you institute patent litigation
|
||||
(including a cross-claim or counterclaim) against any party alleging
|
||||
that the Package constitutes direct or contributory patent
|
||||
infringement, then this Artistic License to you shall terminate on the
|
||||
date that such litigation is filed.
|
||||
|
||||
(14) Disclaimer of Warranty:
|
||||
THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS
|
||||
IS' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
|
||||
NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL
|
||||
LAW. UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL
|
||||
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THE PACKAGE, EVEN IF
|
||||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
|
||||
--------
|
||||
|
||||
|
||||
The following additional terms shall apply to use of the npm software, the npm
|
||||
website, the npm repository and any other services or products offered by npm,
|
||||
Inc.:
|
||||
|
||||
"Node.js" trademark Joyent, Inc. npm is not officially part of the Node.js
|
||||
project, and is neither owned by nor affiliated with Joyent, Inc.
|
||||
|
||||
"npm" and "The npm Registry" are owned by npm, Inc. All rights reserved.
|
||||
|
||||
Modules published on the npm registry are not officially endorsed by npm, Inc.
|
||||
or the Node.js project.
|
||||
|
||||
Data published to the npm registry is not part of npm itself, and is the sole
|
||||
property of the publisher. While every effort is made to ensure accountability,
|
||||
there is absolutely no guarantee, warrantee, or assertion expressed or implied
|
||||
as to the quality, fitness for a specific purpose, or lack of malice in any
|
||||
given npm package. Packages downloaded through the npm registry are
|
||||
independently licensed and are not covered by this license.
|
||||
|
||||
Additional policies relating to, and restrictions on use of, npm products and
|
||||
services are available on the npm website. All such policies and restrictions,
|
||||
as updated from time to time, are hereby incorporated into this license
|
||||
agreement. By using npm, you acknowledge your agreement to all such policies
|
||||
and restrictions.
|
||||
|
||||
If you have a complaint about a package in the public npm registry, and cannot
|
||||
resolve it with the package owner, please email support@npmjs.com and explain
|
||||
the situation. See the [npm Dispute Resolution
|
||||
policy](https://github.com/npm/policies/blob/master/disputes.md) for more
|
||||
details.
|
||||
|
||||
Any data published to The npm Registry (including user account information) may
|
||||
be removed or modified at the sole discretion of the npm server administrators.
|
||||
|
||||
"npm Logo" created by Mathias Pettersson and Brian Hammond,
|
||||
used with permission.
|
||||
|
||||
@@ -55,11 +259,5 @@ Copyright (c) by Tjarda Koster, http://jelloween.deviantart.com
|
||||
included for use in the npm website and documentation,
|
||||
used with permission.
|
||||
|
||||
This program uses "request", Copyright (c) Mikeal Rogers,
|
||||
according to the terms of the Apache license.
|
||||
|
||||
This program uses "mkdirp", Copyright (c) James Halliday,
|
||||
according to the terms of the MIT/X11 license.
|
||||
|
||||
This program uses "opener", Copyright (c) Domenic Denicola,
|
||||
according to the terms of the DWTFPL2 license.
|
||||
This program uses several Node modules contained in the node_modules/
|
||||
subdirectory, according to the terms of their respective licenses.
|
||||
|
||||
174
deps/npm/Makefile
vendored
174
deps/npm/Makefile
vendored
@@ -1,31 +1,59 @@
|
||||
# vim: set softtabstop=2 shiftwidth=2:
|
||||
SHELL = bash
|
||||
|
||||
PUBLISHTAG = $(shell node scripts/publish-tag.js)
|
||||
BRANCH = $(shell git rev-parse --abbrev-ref HEAD)
|
||||
|
||||
markdowns = $(shell find doc -name '*.md' | grep -v 'index') README.md
|
||||
|
||||
html_docdeps = html/dochead.html \
|
||||
html/docfoot.html \
|
||||
scripts/doc-build.sh \
|
||||
package.json
|
||||
|
||||
cli_mandocs = $(shell find doc/cli -name '*.md' \
|
||||
|sed 's|.md|.1|g' \
|
||||
|sed 's|doc/cli/|man/man1/|g' ) \
|
||||
man/man1/README.1 \
|
||||
man/man1/index.1
|
||||
man/man1/npm-README.1
|
||||
|
||||
api_mandocs = $(shell find doc/api -name '*.md' \
|
||||
|sed 's|.md|.3|g' \
|
||||
|sed 's|doc/api/|man/man3/|g' )
|
||||
|
||||
files_mandocs = $(shell find doc/files -name '*.md' \
|
||||
|sed 's|.md|.5|g' \
|
||||
|sed 's|doc/files/|man/man5/|g' ) \
|
||||
man/man5/npm-json.5 \
|
||||
man/man5/npm-global.5
|
||||
|
||||
misc_mandocs = $(shell find doc/misc -name '*.md' \
|
||||
|sed 's|.md|.7|g' \
|
||||
|sed 's|doc/misc/|man/man7/|g' ) \
|
||||
man/man7/npm-index.7
|
||||
|
||||
cli_htmldocs = $(shell find doc/cli -name '*.md' \
|
||||
|grep -v 'index.md' \
|
||||
|sed 's|.md|.html|g' \
|
||||
|sed 's|doc/cli/|html/doc/|g' ) \
|
||||
html/doc/README.html \
|
||||
html/doc/index.html
|
||||
|sed 's|doc/cli/|html/doc/cli/|g' ) \
|
||||
html/doc/README.html
|
||||
|
||||
api_htmldocs = $(shell find doc/api -name '*.md' \
|
||||
|sed 's|.md|.html|g' \
|
||||
|sed 's|doc/api/|html/api/|g' )
|
||||
|sed 's|doc/api/|html/doc/api/|g' )
|
||||
|
||||
mandocs = $(api_mandocs) $(cli_mandocs)
|
||||
files_htmldocs = $(shell find doc/files -name '*.md' \
|
||||
|sed 's|.md|.html|g' \
|
||||
|sed 's|doc/files/|html/doc/files/|g' ) \
|
||||
html/doc/files/npm-json.html \
|
||||
html/doc/files/npm-global.html
|
||||
|
||||
htmldocs = $(api_htmldocs) $(cli_htmldocs)
|
||||
misc_htmldocs = $(shell find doc/misc -name '*.md' \
|
||||
|sed 's|.md|.html|g' \
|
||||
|sed 's|doc/misc/|html/doc/misc/|g' ) \
|
||||
html/doc/index.html
|
||||
|
||||
mandocs = $(api_mandocs) $(cli_mandocs) $(files_mandocs) $(misc_mandocs)
|
||||
|
||||
htmldocs = $(api_htmldocs) $(cli_htmldocs) $(files_htmldocs) $(misc_htmldocs)
|
||||
|
||||
all: doc
|
||||
|
||||
@@ -35,7 +63,7 @@ latest:
|
||||
@echo "in this folder that you're looking at right now."
|
||||
node cli.js install -g -f npm
|
||||
|
||||
install: all
|
||||
install: docclean all
|
||||
node cli.js install -g -f
|
||||
|
||||
# backwards compat
|
||||
@@ -44,8 +72,8 @@ dev: install
|
||||
link: uninstall
|
||||
node cli.js link -f
|
||||
|
||||
clean: doc-clean uninstall
|
||||
rm npmrc
|
||||
clean: markedclean ronnclean doc-clean uninstall
|
||||
rm -rf npmrc
|
||||
node cli.js cache clean
|
||||
|
||||
uninstall:
|
||||
@@ -53,22 +81,24 @@ uninstall:
|
||||
|
||||
doc: $(mandocs) $(htmldocs)
|
||||
|
||||
markedclean:
|
||||
rm -rf node_modules/marked node_modules/.bin/marked .building_marked
|
||||
|
||||
ronnclean:
|
||||
rm -rf node_modules/ronn node_modules/.bin/ronn .building_ronn
|
||||
|
||||
docclean: doc-clean
|
||||
doc-clean:
|
||||
rm -rf \
|
||||
node_modules/ronn \
|
||||
node_modules/.bin/ronn \
|
||||
.building_ronn \
|
||||
doc/cli/index.md \
|
||||
doc/api/index.md \
|
||||
$(api_mandocs) \
|
||||
$(cli_mandocs) \
|
||||
$(api_htmldocs) \
|
||||
$(cli_htmldocs) \
|
||||
&>/dev/null || true
|
||||
.building_marked \
|
||||
.building_ronn \
|
||||
html/doc \
|
||||
html/api \
|
||||
man
|
||||
|
||||
# use `npm install ronn` for this to work.
|
||||
man/man1/README.1: README.md scripts/doc-build.sh package.json
|
||||
man/man1/npm-README.1: README.md scripts/doc-build.sh package.json
|
||||
@[ -d man/man1 ] || mkdir -p man/man1
|
||||
scripts/doc-build.sh $< $@
|
||||
|
||||
man/man1/%.1: doc/cli/%.md scripts/doc-build.sh package.json
|
||||
@@ -79,60 +109,84 @@ man/man3/%.3: doc/api/%.md scripts/doc-build.sh package.json
|
||||
@[ -d man/man3 ] || mkdir -p man/man3
|
||||
scripts/doc-build.sh $< $@
|
||||
|
||||
html/doc/README.html: README.md html/dochead.html html/docfoot.html scripts/doc-build.sh package.json
|
||||
man/man5/npm-json.5: man/man5/package.json.5
|
||||
cp $< $@
|
||||
|
||||
man/man5/npm-global.5: man/man5/npm-folders.5
|
||||
cp $< $@
|
||||
|
||||
man/man5/%.5: doc/files/%.md scripts/doc-build.sh package.json
|
||||
@[ -d man/man5 ] || mkdir -p man/man5
|
||||
scripts/doc-build.sh $< $@
|
||||
|
||||
html/doc/%.html: doc/cli/%.md html/dochead.html html/docfoot.html scripts/doc-build.sh package.json
|
||||
scripts/doc-build.sh $< $@
|
||||
|
||||
html/api/%.html: doc/api/%.md html/dochead.html html/docfoot.html scripts/doc-build.sh package.json
|
||||
scripts/doc-build.sh $< $@
|
||||
|
||||
doc/cli/index.md: $(markdowns) scripts/index-build.js scripts/doc-build.sh package.json
|
||||
doc/misc/npm-index.md: scripts/index-build.js package.json
|
||||
node scripts/index-build.js > $@
|
||||
|
||||
html/doc/index.html: doc/misc/npm-index.md $(html_docdeps)
|
||||
@[ -d html/doc ] || mkdir -p html/doc
|
||||
scripts/doc-build.sh $< $@
|
||||
|
||||
man/man7/%.7: doc/misc/%.md scripts/doc-build.sh package.json
|
||||
@[ -d man/man7 ] || mkdir -p man/man7
|
||||
scripts/doc-build.sh $< $@
|
||||
|
||||
html/doc/README.html: README.md $(html_docdeps)
|
||||
@[ -d html/doc ] || mkdir -p html/doc
|
||||
scripts/doc-build.sh $< $@
|
||||
|
||||
html/doc/cli/%.html: doc/cli/%.md $(html_docdeps)
|
||||
@[ -d html/doc/cli ] || mkdir -p html/doc/cli
|
||||
scripts/doc-build.sh $< $@
|
||||
|
||||
html/doc/api/%.html: doc/api/%.md $(html_docdeps)
|
||||
@[ -d html/doc/api ] || mkdir -p html/doc/api
|
||||
scripts/doc-build.sh $< $@
|
||||
|
||||
html/doc/files/npm-json.html: html/doc/files/package.json.html
|
||||
cp $< $@
|
||||
html/doc/files/npm-global.html: html/doc/files/npm-folders.html
|
||||
cp $< $@
|
||||
|
||||
html/doc/files/%.html: doc/files/%.md $(html_docdeps)
|
||||
@[ -d html/doc/files ] || mkdir -p html/doc/files
|
||||
scripts/doc-build.sh $< $@
|
||||
|
||||
html/doc/misc/%.html: doc/misc/%.md $(html_docdeps)
|
||||
@[ -d html/doc/misc ] || mkdir -p html/doc/misc
|
||||
scripts/doc-build.sh $< $@
|
||||
|
||||
|
||||
marked: node_modules/.bin/marked
|
||||
|
||||
node_modules/.bin/marked:
|
||||
node cli.js install marked --no-global
|
||||
|
||||
ronn: node_modules/.bin/ronn
|
||||
|
||||
node_modules/.bin/ronn:
|
||||
node cli.js install ronn
|
||||
node cli.js install ronn --no-global
|
||||
|
||||
doc: man
|
||||
|
||||
man: $(cli_docs) $(api_docs)
|
||||
|
||||
test:
|
||||
test: doc
|
||||
node cli.js test
|
||||
|
||||
tag:
|
||||
npm tag npm@$(PUBLISHTAG) latest
|
||||
|
||||
publish: link doc
|
||||
@git push origin :v$(shell npm -v) || true
|
||||
@npm unpublish npm@$(shell npm -v) || true
|
||||
git clean -fd
|
||||
@git push origin :v$(shell npm -v) 2>&1 || true
|
||||
git clean -fd &&\
|
||||
git push origin $(BRANCH) &&\
|
||||
git push origin --tags &&\
|
||||
npm publish &&\
|
||||
npm tag npm@$(shell npm -v) $(shell npm -v | awk -F. '{print $$1 "." $$2}') &&\
|
||||
make doc-publish &&\
|
||||
make zip-publish
|
||||
|
||||
docpublish: doc-publish
|
||||
doc-publish: doc
|
||||
rsync -vazu --stats --no-implied-dirs --delete \
|
||||
html/doc/ \
|
||||
node@npmjs.org:/home/node/npm-www/doc
|
||||
rsync -vazu --stats --no-implied-dirs --delete \
|
||||
html/api/ \
|
||||
node@npmjs.org:/home/node/npm-www/api
|
||||
rsync -vazu --stats --no-implied-dirs --delete \
|
||||
html/static/webfonts/ \
|
||||
node@npmjs.org:/home/node/npm-www/static/webfonts
|
||||
rsync -vazu --stats --no-implied-dirs --delete \
|
||||
html/static/style.css \
|
||||
node@npmjs.org:/home/node/npm-www/static/
|
||||
|
||||
zip-publish: release
|
||||
scp release/* node@nodejs.org:dist/npm/
|
||||
npm publish --tag=$(PUBLISHTAG)
|
||||
|
||||
release:
|
||||
@bash scripts/release.sh
|
||||
|
||||
sandwich:
|
||||
@[ $$(whoami) = "root" ] && (echo "ok"; echo "ham" > sandwich) || echo "make it yourself" && exit 13
|
||||
@[ $$(whoami) = "root" ] && (echo "ok"; echo "ham" > sandwich) || (echo "make it yourself" && exit 13)
|
||||
|
||||
.PHONY: all latest install dev link doc clean uninstall test man doc-publish doc-clean docclean docpublish release zip-publish
|
||||
.PHONY: all latest install dev link doc clean uninstall test man doc-clean docclean release
|
||||
|
||||
76
deps/npm/README.md
vendored
76
deps/npm/README.md
vendored
@@ -1,6 +1,6 @@
|
||||
npm(1) -- node package manager
|
||||
==============================
|
||||
|
||||
[](https://travis-ci.org/npm/npm)
|
||||
## SYNOPSIS
|
||||
|
||||
This is just enough info to get you up and running.
|
||||
@@ -9,7 +9,7 @@ Much more info available via `npm help` once it's installed.
|
||||
|
||||
## IMPORTANT
|
||||
|
||||
**You need node v0.6 or higher to run this program.**
|
||||
**You need node v0.8 or higher to run this program.**
|
||||
|
||||
To install an old **and unsupported** version of npm that works on node 0.3
|
||||
and prior, clone the git repo and dig through the old tags and branches.
|
||||
@@ -36,7 +36,11 @@ paths, etc.) then read on.
|
||||
## Fancy Install (Unix)
|
||||
|
||||
There's a pretty robust install script at
|
||||
<https://npmjs.org/install.sh>. You can download that and run it.
|
||||
<https://www.npmjs.org/install.sh>. You can download that and run it.
|
||||
|
||||
Here's an example using curl:
|
||||
|
||||
curl -L https://npmjs.org/install.sh | sh
|
||||
|
||||
### Slightly Fancier
|
||||
|
||||
@@ -169,59 +173,61 @@ help config` to learn about all the options you can set there.
|
||||
|
||||
## More Docs
|
||||
|
||||
Check out the [docs](https://npmjs.org/doc/),
|
||||
especially the [faq](https://npmjs.org/doc/faq.html).
|
||||
Check out the [docs](https://www.npmjs.org/doc/),
|
||||
especially the [faq](https://www.npmjs.org/doc/faq.html).
|
||||
|
||||
You can use the `npm help` command to read any of them.
|
||||
|
||||
If you're a developer, and you want to use npm to publish your program,
|
||||
you should [read this](https://npmjs.org/doc/developers.html)
|
||||
you should [read this](https://www.npmjs.org/doc/developers.html)
|
||||
|
||||
## Legal Stuff
|
||||
|
||||
"npm" and "the npm registry" are owned by Isaac Z. Schlueter. All
|
||||
rights not explicitly granted in the MIT license are reserved. See the
|
||||
included LICENSE file for more details.
|
||||
"npm" and "The npm Registry" are owned by npm, Inc.
|
||||
All rights reserved. See the included LICENSE file for more details.
|
||||
|
||||
"Node.js" and "node" are trademarks owned by Joyent, Inc. npm is not
|
||||
officially part of the Node.js project, and is neither owned by nor
|
||||
officially affiliated with Joyent, Inc.
|
||||
"Node.js" and "node" are trademarks owned by Joyent, Inc.
|
||||
|
||||
The packages in the npm registry are not part of npm itself, and are the
|
||||
sole property of their respective maintainers. While every effort is
|
||||
made to ensure accountability, there is absolutely no guarantee,
|
||||
warrantee, or assertion made as to the quality, fitness for a specific
|
||||
purpose, or lack of malice in any given npm package. Modules
|
||||
published on the npm registry are not affiliated with or endorsed by
|
||||
Joyent, Inc., Isaac Z. Schlueter, Ryan Dahl, or the Node.js project.
|
||||
Modules published on the npm registry are not officially endorsed by
|
||||
npm, Inc. or the Node.js project.
|
||||
|
||||
If you have a complaint about a package in the npm registry, and cannot
|
||||
resolve it with the package owner, please express your concerns to
|
||||
Isaac Z. Schlueter at <i@izs.me>.
|
||||
Data published to the npm registry is not part of npm itself, and is
|
||||
the sole property of the publisher. While every effort is made to
|
||||
ensure accountability, there is absolutely no guarantee, warrantee, or
|
||||
assertion expressed or implied as to the quality, fitness for a
|
||||
specific purpose, or lack of malice in any given npm package.
|
||||
|
||||
### In plain english
|
||||
If you have a complaint about a package in the public npm registry,
|
||||
and cannot [resolve it with the package
|
||||
owner](https://www.npmjs.org/doc/misc/npm-disputes.html), please email
|
||||
<support@npmjs.com> and explain the situation.
|
||||
|
||||
This is mine; not my employer's, not Node's, not Joyent's, not Ryan
|
||||
Dahl's.
|
||||
Any data published to The npm Registry (including user account
|
||||
information) may be removed or modified at the sole discretion of the
|
||||
npm server administrators.
|
||||
|
||||
### In plainer english
|
||||
|
||||
npm is the property of npm, Inc.
|
||||
|
||||
If you publish something, it's yours, and you are solely accountable
|
||||
for it. Not me, not Node, not Joyent, not Ryan Dahl.
|
||||
for it.
|
||||
|
||||
If other people publish something, it's theirs. Not mine, not Node's,
|
||||
not Joyent's, not Ryan Dahl's.
|
||||
If other people publish something, it's theirs.
|
||||
|
||||
Yes, you can publish something evil. It will be removed promptly if
|
||||
reported, and we'll lose respect for you. But there is no vetting
|
||||
process for published modules.
|
||||
Users can publish Bad Stuff. It will be removed promptly if reported.
|
||||
But there is no vetting process for published modules, and you use
|
||||
them at your own risk. Please inspect the source.
|
||||
|
||||
If this concerns you, inspect the source before using packages.
|
||||
If you publish Bad Stuff, we may delete it from the registry, or even
|
||||
ban your account in extreme cases. So don't do that.
|
||||
|
||||
## BUGS
|
||||
|
||||
When you find issues, please report them:
|
||||
|
||||
* web:
|
||||
<https://github.com/isaacs/npm/issues>
|
||||
<https://github.com/npm/npm/issues>
|
||||
* email:
|
||||
<npm-@googlegroups.com>
|
||||
|
||||
@@ -234,6 +240,6 @@ will no doubt tell you to put the output in a gist or email.
|
||||
## SEE ALSO
|
||||
|
||||
* npm(1)
|
||||
* npm-faq(1)
|
||||
* npm-faq(7)
|
||||
* npm-help(1)
|
||||
* npm-index(1)
|
||||
* npm-index(7)
|
||||
|
||||
1
deps/npm/bin/npm
vendored
1
deps/npm/bin/npm
vendored
@@ -1,4 +1,5 @@
|
||||
#!/bin/sh
|
||||
(set -o igncr) 2>/dev/null && set -o igncr; # cygwin encoding fix
|
||||
|
||||
basedir=`dirname "$0"`
|
||||
|
||||
|
||||
22
deps/npm/doc/api/commands.md
vendored
22
deps/npm/doc/api/commands.md
vendored
@@ -1,22 +0,0 @@
|
||||
npm-commands(3) -- npm commands
|
||||
===============================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands[<command>](args, callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
npm comes with a full set of commands, and each of the commands takes a
|
||||
similar set of arguments.
|
||||
|
||||
In general, all commands on the command object take an **array** of positional
|
||||
argument **strings**. The last argument to any function is a callback. Some
|
||||
commands are special and take other optional arguments.
|
||||
|
||||
All commands have their own man page. See `man npm-<command>` for command-line
|
||||
usage, or `man 3 npm-<command>` for programmatic usage.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
* npm-index(1)
|
||||
34
deps/npm/doc/api/deprecate.md
vendored
34
deps/npm/doc/api/deprecate.md
vendored
@@ -1,34 +0,0 @@
|
||||
npm-deprecate(3) -- Deprecate a version of a package
|
||||
====================================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.deprecate(args, callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
This command will update the npm registry entry for a package, providing
|
||||
a deprecation warning to all who attempt to install it.
|
||||
|
||||
The 'args' parameter must have exactly two elements:
|
||||
|
||||
* `package[@version]`
|
||||
|
||||
The `version` portion is optional, and may be either a range, or a
|
||||
specific version, or a tag.
|
||||
|
||||
* `message`
|
||||
|
||||
The warning message that will be printed whenever a user attempts to
|
||||
install the package.
|
||||
|
||||
Note that you must be the package owner to deprecate something. See the
|
||||
`owner` and `adduser` help topics.
|
||||
|
||||
To un-deprecate a package, specify an empty string (`""`) for the `message` argument.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
* npm-publish(3)
|
||||
* npm-unpublish(3)
|
||||
* npm-registry(1)
|
||||
29
deps/npm/doc/api/init.md
vendored
29
deps/npm/doc/api/init.md
vendored
@@ -1,29 +0,0 @@
|
||||
npm init(3) -- Interactively create a package.json file
|
||||
=======================================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.init(args, callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
This will ask you a bunch of questions, and then write a package.json for you.
|
||||
|
||||
It attempts to make reasonable guesses about what you want things to be set to,
|
||||
and then writes a package.json file with the options you've selected.
|
||||
|
||||
If you already have a package.json file, it'll read that first, and default to
|
||||
the options in there.
|
||||
|
||||
It is strictly additive, so it does not delete options from your package.json
|
||||
without a really good reason to do so.
|
||||
|
||||
Since this function expects to be run on the command-line, it doesn't work very
|
||||
well as a programmatically. The best option is to roll your own, and since
|
||||
JavaScript makes it stupid simple to output formatted JSON, that is the
|
||||
preferred method. If you're sure you want to handle command-line prompting,
|
||||
then go ahead and use this programmatically.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
npm-json(1)
|
||||
33
deps/npm/doc/api/link.md
vendored
33
deps/npm/doc/api/link.md
vendored
@@ -1,33 +0,0 @@
|
||||
npm-link(3) -- Symlink a package folder
|
||||
=======================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.command.link(callback)
|
||||
npm.command.link(packages, callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
Package linking is a two-step process.
|
||||
|
||||
Without parameters, link will create a globally-installed
|
||||
symbolic link from `prefix/package-name` to the current folder.
|
||||
|
||||
With a parameters, link will create a symlink from the local `node_modules`
|
||||
folder to the global symlink.
|
||||
|
||||
When creating tarballs for `npm publish`, the linked packages are
|
||||
"snapshotted" to their current state by resolving the symbolic links.
|
||||
|
||||
This is
|
||||
handy for installing your own stuff, so that you can work on it and test it
|
||||
iteratively without having to continually rebuild.
|
||||
|
||||
For example:
|
||||
|
||||
npm.commands.link(cb) # creates global link from the cwd
|
||||
# (say redis package)
|
||||
npm.commands.link('redis', cb) # link-install the package
|
||||
|
||||
Now, any changes to the redis package will be reflected in
|
||||
the package in the current working directory
|
||||
30
deps/npm/doc/api/npm-cache.md
vendored
Normal file
30
deps/npm/doc/api/npm-cache.md
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
npm-cache(3) -- manage the npm cache programmatically
|
||||
=====================================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.cache([args], callback)
|
||||
|
||||
// helpers
|
||||
npm.commands.cache.clean([args], callback)
|
||||
npm.commands.cache.add([args], callback)
|
||||
npm.commands.cache.read(name, version, forceBypass, callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
This acts much the same ways as the npm-cache(1) command line
|
||||
functionality.
|
||||
|
||||
The callback is called with the package.json data of the thing that is
|
||||
eventually added to or read from the cache.
|
||||
|
||||
The top level `npm.commands.cache(...)` functionality is a public
|
||||
interface, and like all commands on the `npm.commands` object, it will
|
||||
match the command line behavior exactly.
|
||||
|
||||
However, the cache folder structure and the cache helper functions are
|
||||
considered **internal** API surface, and as such, may change in future
|
||||
releases of npm, potentially without warning or significant version
|
||||
incrementation.
|
||||
|
||||
Use at your own risk.
|
||||
22
deps/npm/doc/api/npm-commands.md
vendored
Normal file
22
deps/npm/doc/api/npm-commands.md
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
npm-commands(3) -- npm commands
|
||||
===============================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands[<command>](args, callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
npm comes with a full set of commands, and each of the commands takes a
|
||||
similar set of arguments.
|
||||
|
||||
In general, all commands on the command object take an **array** of positional
|
||||
argument **strings**. The last argument to any function is a callback. Some
|
||||
commands are special and take other optional arguments.
|
||||
|
||||
All commands have their own man page. See `man npm-<command>` for command-line
|
||||
usage, or `man 3 npm-<command>` for programmatic usage.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
* npm-index(7)
|
||||
34
deps/npm/doc/api/npm-deprecate.md
vendored
Normal file
34
deps/npm/doc/api/npm-deprecate.md
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
npm-deprecate(3) -- Deprecate a version of a package
|
||||
====================================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
npm.commands.deprecate(args, callback)
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
This command will update the npm registry entry for a package, providing
|
||||
a deprecation warning to all who attempt to install it.
|
||||
|
||||
The 'args' parameter must have exactly two elements:
|
||||
|
||||
* `package[@version]`
|
||||
|
||||
The `version` portion is optional, and may be either a range, or a
|
||||
specific version, or a tag.
|
||||
|
||||
* `message`
|
||||
|
||||
The warning message that will be printed whenever a user attempts to
|
||||
install the package.
|
||||
|
||||
Note that you must be the package owner to deprecate something. See the
|
||||
`owner` and `adduser` help topics.
|
||||
|
||||
To un-deprecate a package, specify an empty string (`""`) for the `message` argument.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
* npm-publish(3)
|
||||
* npm-unpublish(3)
|
||||
* npm-registry(7)
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user