@contrast/agent 4.4.1 → 4.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/bin/VERSION +1 -1
  2. package/bin/linux/contrast-service +0 -0
  3. package/bin/mac/contrast-service +0 -0
  4. package/bin/windows/contrast-service.exe +0 -0
  5. package/lib/assess/hapi/route-coverage.js +3 -3
  6. package/lib/assess/membrane/index.js +2 -8
  7. package/lib/assess/membrane/source-membrane.js +3 -4
  8. package/lib/assess/models/base-event.js +2 -2
  9. package/lib/assess/models/call-context.js +0 -3
  10. package/lib/assess/policy/propagators.json +20 -0
  11. package/lib/assess/policy/signatures.json +103 -0
  12. package/lib/assess/propagators/path/common.js +165 -36
  13. package/lib/assess/propagators/path/join.js +5 -1
  14. package/lib/assess/propagators/path/normalize.js +5 -1
  15. package/lib/assess/propagators/path/resolve.js +11 -2
  16. package/lib/assess/response-scanning/autocomplete-missing.js +0 -2
  17. package/lib/assess/response-scanning/parameter-pollution.js +0 -2
  18. package/lib/core/arch-components/dynamodb.js +1 -2
  19. package/lib/core/arch-components/dynamodbv3.js +44 -0
  20. package/lib/core/arch-components/index.js +1 -0
  21. package/lib/core/async-storage/hooks/bluebird.js +20 -0
  22. package/lib/core/config/options.js +3 -2
  23. package/lib/core/express/utils.js +1 -1
  24. package/lib/core/logger/debug-logger.js +15 -17
  25. package/lib/core/stacktrace.js +3 -4
  26. package/lib/feature-set.js +2 -1
  27. package/lib/hooks/encoding.js +1 -1
  28. package/lib/hooks/frameworks/base.js +8 -2
  29. package/lib/hooks/frameworks/http.js +23 -16
  30. package/lib/hooks/frameworks/http2.js +73 -0
  31. package/lib/hooks/frameworks/index.js +8 -3
  32. package/lib/hooks/http.js +112 -128
  33. package/lib/hooks/patcher.js +10 -12
  34. package/lib/hooks/require.js +16 -22
  35. package/lib/instrumentation.js +0 -3
  36. package/lib/protect/analysis/aho-corasick.js +13 -30
  37. package/lib/protect/rules/cmd-injection-command-backdoors/backdoor-detector.js +3 -3
  38. package/lib/protect/rules/signatures/reflected-xss/helpers/function-call.js +1 -1
  39. package/lib/protect/rules/xss/helpers/function-call.js +1 -1
  40. package/lib/util/clean-stack.js +1 -1
  41. package/lib/util/clean-string/brackets.js +3 -3
  42. package/lib/util/clean-string/concatenations.js +1 -1
  43. package/lib/util/clean-string/util.js +1 -2
  44. package/lib/util/ip-analyzer.js +1 -1
  45. package/lib/util/some.js +27 -0
  46. package/lib/util/xml-analyzer/external-entity-finder.js +1 -1
  47. package/package.json +14 -15
  48. package/lib/hooks/frameworks/https.js +0 -42
  49. package/node_modules/bindings/LICENSE.md +0 -22
  50. package/node_modules/bindings/README.md +0 -98
  51. package/node_modules/bindings/bindings.js +0 -221
  52. package/node_modules/bindings/package.json +0 -32
  53. package/node_modules/file-uri-to-path/.npmignore +0 -1
  54. package/node_modules/file-uri-to-path/.travis.yml +0 -30
  55. package/node_modules/file-uri-to-path/History.md +0 -21
  56. package/node_modules/file-uri-to-path/LICENSE +0 -20
  57. package/node_modules/file-uri-to-path/README.md +0 -74
  58. package/node_modules/file-uri-to-path/index.d.ts +0 -2
  59. package/node_modules/file-uri-to-path/index.js +0 -66
  60. package/node_modules/file-uri-to-path/package.json +0 -36
  61. package/node_modules/file-uri-to-path/test/test.js +0 -24
  62. package/node_modules/file-uri-to-path/test/tests.json +0 -13
  63. package/node_modules/glossy/LICENSE +0 -19
  64. package/node_modules/glossy/README.md +0 -129
  65. package/node_modules/glossy/index.js +0 -12
  66. package/node_modules/glossy/lib/glossy/parse.js +0 -520
  67. package/node_modules/glossy/lib/glossy/produce.js +0 -459
  68. package/node_modules/glossy/package.json +0 -47
  69. package/node_modules/glossy/test/decide.js +0 -7
  70. package/node_modules/glossy/test/decode_pri.js +0 -24
  71. package/node_modules/glossy/test/parse_3164.js +0 -104
  72. package/node_modules/glossy/test/parse_5424.js +0 -106
  73. package/node_modules/glossy/test/parse_5848.js +0 -40
  74. package/node_modules/glossy/test/parse_8601.js +0 -14
  75. package/node_modules/glossy/test/parse_rfc3339.js +0 -9
  76. package/node_modules/glossy/test/produce.js +0 -162
  77. package/node_modules/glossy/test/runner.js +0 -40
  78. package/node_modules/glossy/test/structure_data.js +0 -24
  79. package/node_modules/nan/CHANGELOG.md +0 -537
  80. package/node_modules/nan/LICENSE.md +0 -13
  81. package/node_modules/nan/README.md +0 -455
  82. package/node_modules/nan/doc/asyncworker.md +0 -146
  83. package/node_modules/nan/doc/buffers.md +0 -54
  84. package/node_modules/nan/doc/callback.md +0 -76
  85. package/node_modules/nan/doc/converters.md +0 -41
  86. package/node_modules/nan/doc/errors.md +0 -226
  87. package/node_modules/nan/doc/json.md +0 -62
  88. package/node_modules/nan/doc/maybe_types.md +0 -583
  89. package/node_modules/nan/doc/methods.md +0 -664
  90. package/node_modules/nan/doc/new.md +0 -147
  91. package/node_modules/nan/doc/node_misc.md +0 -123
  92. package/node_modules/nan/doc/object_wrappers.md +0 -263
  93. package/node_modules/nan/doc/persistent.md +0 -296
  94. package/node_modules/nan/doc/scopes.md +0 -73
  95. package/node_modules/nan/doc/script.md +0 -38
  96. package/node_modules/nan/doc/string_bytes.md +0 -62
  97. package/node_modules/nan/doc/v8_internals.md +0 -199
  98. package/node_modules/nan/doc/v8_misc.md +0 -85
  99. package/node_modules/nan/include_dirs.js +0 -1
  100. package/node_modules/nan/nan.h +0 -2898
  101. package/node_modules/nan/nan_callbacks.h +0 -88
  102. package/node_modules/nan/nan_callbacks_12_inl.h +0 -514
  103. package/node_modules/nan/nan_callbacks_pre_12_inl.h +0 -520
  104. package/node_modules/nan/nan_converters.h +0 -72
  105. package/node_modules/nan/nan_converters_43_inl.h +0 -68
  106. package/node_modules/nan/nan_converters_pre_43_inl.h +0 -42
  107. package/node_modules/nan/nan_define_own_property_helper.h +0 -29
  108. package/node_modules/nan/nan_implementation_12_inl.h +0 -430
  109. package/node_modules/nan/nan_implementation_pre_12_inl.h +0 -263
  110. package/node_modules/nan/nan_json.h +0 -166
  111. package/node_modules/nan/nan_maybe_43_inl.h +0 -356
  112. package/node_modules/nan/nan_maybe_pre_43_inl.h +0 -268
  113. package/node_modules/nan/nan_new.h +0 -340
  114. package/node_modules/nan/nan_object_wrap.h +0 -156
  115. package/node_modules/nan/nan_persistent_12_inl.h +0 -132
  116. package/node_modules/nan/nan_persistent_pre_12_inl.h +0 -242
  117. package/node_modules/nan/nan_private.h +0 -73
  118. package/node_modules/nan/nan_string_bytes.h +0 -305
  119. package/node_modules/nan/nan_typedarray_contents.h +0 -96
  120. package/node_modules/nan/nan_weak.h +0 -437
  121. package/node_modules/nan/package.json +0 -41
  122. package/node_modules/nan/tools/1to2.js +0 -412
  123. package/node_modules/nan/tools/README.md +0 -14
  124. package/node_modules/nan/tools/package.json +0 -19
  125. package/node_modules/unix-dgram/LICENSE +0 -13
  126. package/node_modules/unix-dgram/README.md +0 -107
  127. package/node_modules/unix-dgram/binding.gyp +0 -20
  128. package/node_modules/unix-dgram/build/Makefile +0 -324
  129. package/node_modules/unix-dgram/build/Release/.deps/Release/obj.target/unix_dgram/src/unix_dgram.o.d +0 -58
  130. package/node_modules/unix-dgram/build/Release/.deps/Release/obj.target/unix_dgram.node.d +0 -1
  131. package/node_modules/unix-dgram/build/Release/.deps/Release/unix_dgram.node.d +0 -1
  132. package/node_modules/unix-dgram/build/Release/obj.target/unix_dgram/src/unix_dgram.o +0 -0
  133. package/node_modules/unix-dgram/build/Release/obj.target/unix_dgram.node +0 -0
  134. package/node_modules/unix-dgram/build/Release/unix_dgram.node +0 -0
  135. package/node_modules/unix-dgram/build/binding.Makefile +0 -6
  136. package/node_modules/unix-dgram/build/config.gypi +0 -213
  137. package/node_modules/unix-dgram/build/unix_dgram.target.mk +0 -159
  138. package/node_modules/unix-dgram/lib/unix_dgram.js +0 -168
  139. package/node_modules/unix-dgram/package.json +0 -36
  140. package/node_modules/unix-dgram/src/unix_dgram.cc +0 -404
  141. package/node_modules/unix-dgram/src/win_dummy.cc +0 -7
  142. package/node_modules/unix-dgram/test/test-connect-callback.js +0 -68
  143. package/node_modules/unix-dgram/test/test-connect.js +0 -53
  144. package/node_modules/unix-dgram/test/test-dgram-unix.js +0 -58
  145. package/node_modules/unix-dgram/test/test-send-error.js +0 -26
  146. package/node_modules/winston-syslog/.eslintrc +0 -7
  147. package/node_modules/winston-syslog/.travis.yml +0 -14
  148. package/node_modules/winston-syslog/CHANGELOG.md +0 -9
  149. package/node_modules/winston-syslog/LICENSE +0 -20
  150. package/node_modules/winston-syslog/README.md +0 -135
  151. package/node_modules/winston-syslog/lib/utils.js +0 -26
  152. package/node_modules/winston-syslog/lib/winston-syslog.js +0 -385
  153. package/node_modules/winston-syslog/package.json +0 -56
  154. package/node_modules/winston-syslog/test/format-test.js +0 -122
  155. package/node_modules/winston-syslog/test/syslog-test.js +0 -95
  156. package/node_modules/winston-syslog/test/unix-connect-test.js +0 -133
@@ -1,404 +0,0 @@
1
- // -D_GNU_SOURCE makes SOCK_NONBLOCK etc. available on linux
2
- #undef _GNU_SOURCE
3
- #define _GNU_SOURCE
4
-
5
- #include <nan.h>
6
-
7
- #include <errno.h>
8
- #include <stddef.h>
9
- #include <unistd.h>
10
- #include <fcntl.h>
11
-
12
- #include <sys/types.h>
13
- #include <sys/stat.h>
14
-
15
- #include <sys/socket.h>
16
- #include <sys/un.h>
17
-
18
- #include <map>
19
-
20
- #define offset_of(type, member) \
21
- ((intptr_t) ((char *) &(((type *) 8)->member) - 8))
22
-
23
- #define container_of(ptr, type, member) \
24
- ((type *) ((char *) (ptr) - offset_of(type, member)))
25
-
26
- namespace {
27
-
28
- void OnEvent(uv_poll_t* handle, int status, int events);
29
-
30
- using v8::Context;
31
- using v8::Function;
32
- using v8::FunctionTemplate;
33
- using v8::Integer;
34
- using v8::Local;
35
- using v8::Null;
36
- using v8::Object;
37
- using v8::Persistent;
38
- using v8::String;
39
- using v8::Value;
40
-
41
- struct SocketContext {
42
- Nan::Callback recv_cb_;
43
- Nan::Callback writable_cb_;
44
- uv_poll_t handle_;
45
- int fd_;
46
- };
47
-
48
- typedef std::map<int, SocketContext*> watchers_t;
49
-
50
- watchers_t watchers;
51
-
52
-
53
- inline void SetNonBlock(int fd) {
54
- int flags;
55
- int r;
56
-
57
- flags = fcntl(fd, F_GETFL);
58
- assert(flags != -1);
59
-
60
- r = fcntl(fd, F_SETFL, flags | O_NONBLOCK);
61
- assert(r != -1);
62
- }
63
-
64
-
65
- inline void SetCloExec(int fd) {
66
- int flags;
67
- int r;
68
-
69
- flags = fcntl(fd, F_GETFD);
70
- assert(flags != -1);
71
-
72
- r = fcntl(fd, F_SETFD, flags | FD_CLOEXEC);
73
- assert(r != -1);
74
- }
75
-
76
- void OnRecv(SocketContext* sc) {
77
- Nan::HandleScope scope;
78
- Local<Value> argv[3];
79
- msghdr msg;
80
- iovec iov;
81
- ssize_t err;
82
- char scratch[65536];
83
-
84
- /* Union to avoid breaking strict-aliasing rules */
85
- union {
86
- struct sockaddr_un s;
87
- struct sockaddr_storage ss;
88
- } u_addr;
89
-
90
- argv[0] = argv[1] = argv[2] = Nan::Null();
91
-
92
- iov.iov_base = scratch;
93
- iov.iov_len = sizeof scratch;
94
-
95
- u_addr.s.sun_path[0] = '\0';
96
-
97
- memset(&msg, 0, sizeof msg);
98
- msg.msg_iovlen = 1;
99
- msg.msg_iov = &iov;
100
- msg.msg_name = &u_addr.ss;
101
- msg.msg_namelen = sizeof u_addr.ss;
102
-
103
- do
104
- err = recvmsg(sc->fd_, &msg, 0);
105
- while (err == -1 && errno == EINTR);
106
-
107
- if (err == -1) {
108
- err = -errno;
109
- } else {
110
- argv[1] = Nan::CopyBuffer(scratch, err).ToLocalChecked();
111
- if (u_addr.s.sun_path[0] != '\0') {
112
- argv[2] = Nan::New<String>(u_addr.s.sun_path).ToLocalChecked();
113
- }
114
- }
115
-
116
- argv[0] = Nan::New<Integer>(static_cast<int32_t>(err));
117
-
118
- Nan::Call(sc->recv_cb_, sizeof(argv) / sizeof(argv[0]), argv);
119
- }
120
-
121
- void OnWritable(SocketContext* sc) {
122
- Nan::HandleScope scope;
123
- uv_poll_start(&sc->handle_, UV_READABLE, OnEvent);
124
- Nan::Call(sc->writable_cb_, 0, NULL);
125
- }
126
-
127
- void OnEvent(uv_poll_t* handle, int status, int events) {
128
- assert(0 == status);
129
- assert(0 == (events & ~(UV_READABLE | UV_WRITABLE)));
130
- SocketContext* sc = container_of(handle, SocketContext, handle_);
131
- if (events & UV_READABLE)
132
- OnRecv(sc);
133
-
134
- if (events & UV_WRITABLE)
135
- OnWritable(sc);
136
- }
137
-
138
- void StartWatcher(int fd, Local<Value> recv_cb, Local<Value> writable_cb) {
139
- // start listening for incoming dgrams
140
- SocketContext* sc = new SocketContext;
141
- sc->recv_cb_.Reset(recv_cb.As<Function>());
142
- sc->writable_cb_.Reset(writable_cb.As<Function>());
143
- sc->fd_ = fd;
144
-
145
- uv_poll_init(uv_default_loop(), &sc->handle_, fd);
146
- uv_poll_start(&sc->handle_, UV_READABLE, OnEvent);
147
-
148
- // so we can disarm the watcher when close(fd) is called
149
- watchers.insert(watchers_t::value_type(fd, sc));
150
- }
151
-
152
-
153
- void FreeSocketContext(uv_handle_t* handle) {
154
- SocketContext* sc = container_of(handle, SocketContext, handle_);
155
- delete sc;
156
- }
157
-
158
-
159
- void StopWatcher(int fd) {
160
- watchers_t::iterator iter = watchers.find(fd);
161
- assert(iter != watchers.end());
162
-
163
- SocketContext* sc = iter->second;
164
- sc->recv_cb_.Reset();
165
- sc->writable_cb_.Reset();
166
- watchers.erase(iter);
167
-
168
- uv_poll_stop(&sc->handle_);
169
- uv_close(reinterpret_cast<uv_handle_t*>(&sc->handle_), FreeSocketContext);
170
- }
171
-
172
-
173
- NAN_METHOD(Socket) {
174
- Nan::HandleScope scope;
175
- Local<Value> recv_cb;
176
- Local<Value> writable_cb;
177
- int protocol;
178
- int domain;
179
- int type;
180
- int fd;
181
-
182
- assert(info.Length() == 5);
183
-
184
- domain = Nan::To<int32_t>(info[0]).FromJust();
185
- type = Nan::To<int32_t>(info[1]).FromJust();
186
- protocol = Nan::To<int32_t>(info[2]).FromJust();
187
- recv_cb = info[3];
188
- writable_cb = info[4];
189
-
190
- #if defined(SOCK_NONBLOCK)
191
- type |= SOCK_NONBLOCK;
192
- #endif
193
- #if defined(SOCK_CLOEXEC)
194
- type |= SOCK_CLOEXEC;
195
- #endif
196
-
197
- fd = socket(domain, type, protocol);
198
- if (fd == -1) {
199
- fd = -errno;
200
- goto out;
201
- }
202
-
203
- #if !defined(SOCK_NONBLOCK)
204
- SetNonBlock(fd);
205
- #endif
206
- #if !defined(SOCK_CLOEXEC)
207
- SetCloExec(fd);
208
- #endif
209
-
210
- StartWatcher(fd, recv_cb, writable_cb);
211
-
212
- out:
213
- info.GetReturnValue().Set(fd);
214
- }
215
-
216
-
217
- NAN_METHOD(Bind) {
218
- Nan::HandleScope scope;
219
- sockaddr_un s;
220
- int err;
221
- int fd;
222
-
223
- assert(info.Length() == 2);
224
-
225
- fd = Nan::To<int32_t>(info[0]).FromJust();
226
- Nan::Utf8String path(info[1]);
227
-
228
- memset(&s, 0, sizeof(s));
229
- strncpy(s.sun_path, *path, sizeof(s.sun_path) - 1);
230
- s.sun_family = AF_UNIX;
231
-
232
- err = 0;
233
- if (bind(fd, reinterpret_cast<sockaddr*>(&s), sizeof(s)))
234
- err = -errno;
235
-
236
- info.GetReturnValue().Set(err);
237
- }
238
-
239
- NAN_METHOD(SendTo) {
240
- Nan::HandleScope scope;
241
- Local<Object> buf;
242
- sockaddr_un s;
243
- size_t offset;
244
- size_t length;
245
- msghdr msg;
246
- iovec iov;
247
- int err;
248
- int fd;
249
- int r;
250
-
251
- assert(info.Length() == 5);
252
-
253
- fd = Nan::To<int32_t>(info[0]).FromJust();
254
- buf = Nan::To<Object>(info[1]).ToLocalChecked();
255
- offset = Nan::To<uint32_t>(info[2]).FromJust();
256
- length = Nan::To<uint32_t>(info[3]).FromJust();
257
- Nan::Utf8String path(info[4]);
258
-
259
- assert(node::Buffer::HasInstance(buf));
260
- assert(offset + length <= node::Buffer::Length(buf));
261
-
262
- iov.iov_base = node::Buffer::Data(buf) + offset;
263
- iov.iov_len = length;
264
-
265
- memset(&s, 0, sizeof(s));
266
- strncpy(s.sun_path, *path, sizeof(s.sun_path) - 1);
267
- s.sun_family = AF_UNIX;
268
-
269
- memset(&msg, 0, sizeof msg);
270
- msg.msg_iovlen = 1;
271
- msg.msg_iov = &iov;
272
- msg.msg_name = reinterpret_cast<void*>(&s);
273
- msg.msg_namelen = sizeof(s);
274
-
275
- do
276
- r = sendmsg(fd, &msg, 0);
277
- while (r == -1 && errno == EINTR);
278
-
279
- err = 0;
280
- if (r == -1)
281
- err = -errno;
282
-
283
- info.GetReturnValue().Set(err);
284
- }
285
-
286
- NAN_METHOD(Send) {
287
- Nan::HandleScope scope;
288
- Local<Object> buf;
289
- msghdr msg;
290
- iovec iov;
291
- int err;
292
- int fd;
293
- int r;
294
-
295
- assert(info.Length() == 2);
296
-
297
- fd = Nan::To<int32_t>(info[0]).FromJust();
298
- buf = Nan::To<Object>(info[1]).ToLocalChecked();
299
- assert(node::Buffer::HasInstance(buf));
300
-
301
- iov.iov_base = node::Buffer::Data(buf);
302
- iov.iov_len = node::Buffer::Length(buf);
303
-
304
- memset(&msg, 0, sizeof msg);
305
- msg.msg_iovlen = 1;
306
- msg.msg_iov = &iov;
307
-
308
- do
309
- r = sendmsg(fd, &msg, 0);
310
- while (r == -1 && errno == EINTR);
311
-
312
- err = 0;
313
- if (r == -1) {
314
- err = -errno;
315
- if ((errno == EAGAIN) || (errno == EWOULDBLOCK) || (errno == ENOBUFS)) {
316
- watchers_t::iterator iter = watchers.find(fd);
317
- assert(iter != watchers.end());
318
- SocketContext* sc = iter->second;
319
- uv_poll_start(&sc->handle_, UV_READABLE | UV_WRITABLE, OnEvent);
320
- err = 1;
321
- }
322
- }
323
-
324
- info.GetReturnValue().Set(err);
325
- }
326
-
327
- NAN_METHOD(Connect) {
328
- Nan::HandleScope scope;
329
- sockaddr_un s;
330
- int err;
331
- int fd;
332
-
333
- assert(info.Length() == 2);
334
-
335
- fd = Nan::To<int32_t>(info[0]).FromJust();
336
- Nan::Utf8String path(info[1]);
337
-
338
- memset(&s, 0, sizeof(s));
339
- strncpy(s.sun_path, *path, sizeof(s.sun_path) - 1);
340
- s.sun_family = AF_UNIX;
341
-
342
- err = 0;
343
- if (connect(fd, reinterpret_cast<sockaddr*>(&s), sizeof(s)))
344
- err = -errno;
345
-
346
- info.GetReturnValue().Set(err);
347
- }
348
-
349
-
350
- NAN_METHOD(Close) {
351
- Nan::HandleScope scope;
352
- int err;
353
- int fd;
354
-
355
- assert(info.Length() == 1);
356
- fd = Nan::To<int32_t>(info[0]).FromJust();
357
-
358
- // Suppress EINTR and EINPROGRESS. EINTR means that the close() system call
359
- // was interrupted by a signal. According to POSIX, the file descriptor is
360
- // in an undefined state afterwards. It's not safe to try closing it again
361
- // because it may have been closed, despite the signal. If we call close()
362
- // again, then it would either:
363
- //
364
- // a) fail with EBADF, or
365
- //
366
- // b) close the wrong file descriptor if another thread or a signal handler
367
- // has reused it in the mean time.
368
- //
369
- // Neither is what we want but scenario B is particularly bad. Not retrying
370
- // the close() could, in theory, lead to file descriptor leaks but, in
371
- // practice, operating systems do the right thing and close the file
372
- // descriptor, regardless of whether the operation was interrupted by
373
- // a signal.
374
- //
375
- // EINPROGRESS is benign. It means the close operation was interrupted but
376
- // that the file descriptor has been closed or is being closed in the
377
- // background. It's informative, not an error.
378
- err = 0;
379
- if (close(fd))
380
- if (errno != EINTR && errno != EINPROGRESS)
381
- err = -errno;
382
-
383
- StopWatcher(fd);
384
- info.GetReturnValue().Set(err);
385
- }
386
-
387
-
388
- void Initialize(Local<Object> target) {
389
- // don't need to be read-only, only used by the JS shim
390
- Nan::Set(target, Nan::New("AF_UNIX").ToLocalChecked(), Nan::New(AF_UNIX));
391
- Nan::Set(target, Nan::New("SOCK_DGRAM").ToLocalChecked(),
392
- Nan::New(SOCK_DGRAM));
393
- Nan::SetMethod(target, "socket", Socket);
394
- Nan::SetMethod(target, "bind", Bind);
395
- Nan::SetMethod(target, "sendto", SendTo);
396
- Nan::SetMethod(target, "send", Send);
397
- Nan::SetMethod(target, "connect", Connect);
398
- Nan::SetMethod(target, "close", Close);
399
- }
400
-
401
-
402
- } // anonymous namespace
403
-
404
- NODE_MODULE(unix_dgram, Initialize)
@@ -1,7 +0,0 @@
1
- #include <node.h>
2
-
3
- namespace {
4
- void Initialize(v8::Local<v8::Object> target) {}
5
- }
6
-
7
- NODE_MODULE(unix_dgram, Initialize)
@@ -1,68 +0,0 @@
1
- var assert = require('assert');
2
- var fs = require('fs');
3
-
4
- var unix = require('../lib/unix_dgram');
5
- var SOCKNAME = '/tmp/unix_dgram.sock';
6
-
7
- var sentCount = 0;
8
- var seenCount = 0;
9
- var expected = 300;
10
-
11
- process.on('exit', function() {
12
- assert.equal(seenCount, sentCount);
13
- });
14
-
15
- try { fs.unlinkSync(SOCKNAME); } catch (e) { /* swallow */ }
16
-
17
- var server = unix.createSocket('unix_dgram', function(buf, rinfo) {
18
- assert.equal('' + buf, 'PING' + seenCount);
19
- if (++ seenCount === expected) {
20
- server.close();
21
- client.close();
22
- }
23
- });
24
- server.bind(SOCKNAME);
25
-
26
- var client = unix.createSocket('unix_dgram', function(buf, rinfo) {
27
- assert(0);
28
- });
29
-
30
- client.on('error', function(err) {
31
- console.error(err);
32
- assert(0);
33
- });
34
-
35
- client.on('connect', function() {
36
- console.error('connected');
37
-
38
- client.on('congestion', function() {
39
- throw new Error('Should not emit congestion');
40
- });
41
-
42
- client.on('writable', function() {
43
- // swallow
44
- });
45
-
46
- function send() {
47
- var msg = Buffer.from('PING' + sentCount);
48
- client.send(msg, function(err) {
49
- if (!err) {
50
- ++ sentCount;
51
- if (sentCount < expected) {
52
- // process.nextTick() in today's Node.js master seems to stall
53
- // after about ~194 process.nextTick() calls, that's why we
54
- // use setImmediate() as a workaround.
55
- setImmediate(send);
56
- }
57
- } else if (err.code < 0) {
58
- throw new Error(err);
59
- } else {
60
- client.once('writable', send);
61
- }
62
- });
63
- }
64
-
65
- send();
66
- });
67
-
68
- client.connect(SOCKNAME);
@@ -1,53 +0,0 @@
1
- var assert = require('assert');
2
- var fs = require('fs');
3
-
4
- var unix = require('../lib/unix_dgram');
5
- var SOCKNAME = '/tmp/unix_dgram.sock';
6
-
7
- var seenCount = 0;
8
- var expected = 300; // arbitrary enough to generate congestion
9
-
10
- process.on('exit', function() {
11
- assert.equal(seenCount, expected);
12
- });
13
-
14
- try { fs.unlinkSync(SOCKNAME); } catch (e) { /* swallow */ }
15
-
16
- var server = unix.createSocket('unix_dgram', function(buf, rinfo) {
17
- assert.equal('' + buf, 'PING' + seenCount);
18
- if (++ seenCount === expected) {
19
- server.close();
20
- client.close();
21
- }
22
- });
23
- server.bind(SOCKNAME);
24
-
25
- var client = unix.createSocket('unix_dgram', function(buf, rinfo) {
26
- assert(0);
27
- });
28
-
29
- client.on('error', function(err) {
30
- console.error(err);
31
- assert(0);
32
- });
33
-
34
- // This test case create a huge congestion which throw a warn (possible EventEmitter memory leak detected)
35
- // In real process, it would be handled a smarter way (queued to re-send...)
36
- client.setMaxListeners(300);
37
-
38
- client.on('connect', function() {
39
- console.error('connected');
40
- client.on('congestion', function(buf) {
41
- client.once('writable', function() {
42
- client.send(buf);
43
- });
44
- });
45
-
46
- var msg;
47
- for(var i=0; i<expected; i++) {
48
- msg = Buffer.from('PING' + i);
49
- client.send(msg);
50
- }
51
- });
52
-
53
- client.connect(SOCKNAME);
@@ -1,58 +0,0 @@
1
- var assert = require('assert');
2
- var fs = require('fs');
3
-
4
- var unix = require('../lib/unix_dgram');
5
- var SOCKNAME = '/tmp/unix_dgram.sock';
6
- var SOCKNAME_CLIENT = '/tmp/unix_dgram_client.sock';
7
-
8
- var sentPing1 = false;
9
- var sentPing2 = false;
10
- var seenPing1 = false;
11
- var seenPing2 = false;
12
-
13
- process.on('exit', function() {
14
- assert.equal(sentPing1, true);
15
- assert.equal(sentPing2, true);
16
- assert.equal(seenPing1, true);
17
- assert.equal(seenPing2, true);
18
- });
19
-
20
- try { fs.unlinkSync(SOCKNAME); } catch (e) { /* swallow */ }
21
- try { fs.unlinkSync(SOCKNAME_CLIENT); } catch (e) { /* swallow */ }
22
-
23
- var n = 0;
24
-
25
- var server = unix.createSocket('unix_dgram', function(buf, rinfo) {
26
- console.error('server recv', '' + buf, arguments);
27
- switch (++n) {
28
- case 1:
29
- assert.equal('' + buf, 'PING1');
30
- assert.equal(rinfo.path, null);
31
- seenPing1 = true;
32
- client.bind(SOCKNAME_CLIENT);
33
- client.send(Buffer.from('PING2'), 0, 5, SOCKNAME, function() {
34
- console.error('client send', arguments);
35
- sentPing2 = true;
36
- });
37
- break;
38
- case 2:
39
- assert.equal('' + buf, 'PING2');
40
- assert.equal(rinfo.path, SOCKNAME_CLIENT);
41
- seenPing2 = true;
42
- server.close();
43
- client.close();
44
- break;
45
-
46
- }
47
- });
48
- server.bind(SOCKNAME);
49
-
50
- var client = unix.createSocket('unix_dgram', function(buf, rinfo) {
51
- console.error('client recv', arguments);
52
- assert(0);
53
- });
54
-
55
- client.send(Buffer.from('PING1'), 0, 5, SOCKNAME, function() {
56
- console.error('client send', arguments);
57
- sentPing1 = true;
58
- });
@@ -1,26 +0,0 @@
1
- var assert = require('assert');
2
- var fs = require('fs');
3
-
4
- var unix = require('../lib/unix_dgram');
5
- var SOCKNAME = '/tmp/unix_dgram.sock';
6
-
7
- try { fs.unlinkSync(SOCKNAME); } catch (e) { /* swallow */ }
8
-
9
- var client = unix.createSocket('unix_dgram', function(buf, rinfo) {
10
- console.error('client recv', arguments);
11
- assert(0);
12
- });
13
-
14
- client.once('error', function(err) {
15
- assert.ok(err);
16
- client.once('error', function(err) {
17
- assert.ifError(err);
18
- });
19
-
20
- client.send(Buffer.from('ERROR2'), 0, 6, SOCKNAME, function(err) {
21
- assert.ok(err);
22
- client.close();
23
- });
24
- });
25
-
26
- client.send(Buffer.from('ERROR1'), 0, 6, SOCKNAME);
@@ -1,7 +0,0 @@
1
- {
2
- "extends": "populist",
3
- "rules": {
4
- "one-var": ["error", { var: "never", let: "never", const: "never" }],
5
- "strict": 0
6
- }
7
- }
@@ -1,14 +0,0 @@
1
- sudo: false
2
- language: node_js
3
- node_js:
4
- - "6"
5
- - "8"
6
- - "10"
7
- - "11"
8
-
9
- script:
10
- - npm test
11
-
12
- matrix:
13
- allow_failures:
14
- - node_js: "11"
@@ -1,9 +0,0 @@
1
- # CHANGELOG
2
-
3
- ## v2.1.0 / 2019-02-17
4
-
5
- - (@DABH) Fix tests by fixing error emission/handling
6
- - #[108], (@vrza) Make winston 3 a peer dependency
7
- - #[102], (@stieg) Require winston >= 3 and add corresopnding note in readme
8
- - #[105], (@mohd-akram) Update dependencies for latest Node compatibility
9
-
@@ -1,20 +0,0 @@
1
- Copyright (c) 2011 Charlie Robbins
2
- Copyright (c) 2012 Santiago Gimeno
3
-
4
- Permission is hereby granted, free of charge, to any person obtaining a copy
5
- of this software and associated documentation files (the "Software"), to deal
6
- in the Software without restriction, including without limitation the rights
7
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
- copies of the Software, and to permit persons to whom the Software is
9
- furnished to do so, subject to the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be included in
12
- all copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
- THE SOFTWARE.