sip-lab 1.12.39 → 1.13.1

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 (40) hide show
  1. package/DEV.md +19 -3
  2. package/README.md +8 -4
  3. package/binding.gyp +97 -86
  4. package/build_deps.sh +3 -2
  5. package/index.js +14 -7
  6. package/package.json +7 -2
  7. package/prebuilds/linux-x64/node.abi102.node +0 -0
  8. package/prebuilds/linux-x64/node.abi108.node +0 -0
  9. package/prebuilds/linux-x64/node.abi88.node +0 -0
  10. package/prebuilds/linux-x64/node.abi93.node +0 -0
  11. package/samples/16_audio_streams.js +179 -0
  12. package/samples/delayed_media.js +117 -81
  13. package/samples/g729.js +50 -28
  14. package/samples/mrcp_and_audio.js +445 -0
  15. package/samples/mrcp_and_audio.simplified_media.js +273 -0
  16. package/samples/mrcp_and_audio.switching_order.js +273 -0
  17. package/samples/options.js +82 -0
  18. package/samples/refer.js +247 -0
  19. package/samples/refuse_telephone_event.js +166 -0
  20. package/samples/register_no_expires.js +82 -0
  21. package/samples/register_subscribe.js +36 -4
  22. package/samples/reinvite_and_dtmf.js +236 -161
  23. package/samples/reinvite_audio_audio.js +320 -0
  24. package/samples/reinvite_with_hold_unhold.js +412 -0
  25. package/samples/send_and_receive_fax.js +4 -8
  26. package/samples/simple.js +5 -9
  27. package/samples/sip_cancel.js +4 -6
  28. package/samples/tcp_and_extra_headers.js +98 -45
  29. package/samples/two_audio_media.js +497 -0
  30. package/src/addon.cpp +488 -268
  31. package/src/event_templates.cpp +84 -35
  32. package/src/event_templates.hpp +22 -12
  33. package/src/idmanager.cpp +58 -57
  34. package/src/idmanager.hpp +10 -10
  35. package/src/log.cpp +9 -11
  36. package/src/log.hpp +4 -4
  37. package/src/sip.cpp +6841 -5040
  38. package/src/sip.hpp +26 -34
  39. package/src/packetdumper.cpp +0 -234
  40. package/src/packetdumper.hpp +0 -67
@@ -54,18 +54,14 @@ async function test() {
54
54
 
55
55
  await z.wait([
56
56
  {
57
- event: 'media_status',
57
+ event: 'media_update',
58
58
  call_id: oc.id,
59
- status: 'setup_ok',
60
- local_mode: 'sendrecv',
61
- remote_mode: 'sendrecv',
59
+ status: 'ok',
62
60
  },
63
61
  {
64
- event: 'media_status',
62
+ event: 'media_update',
65
63
  call_id: ic.id,
66
- status: 'setup_ok',
67
- local_mode: 'sendrecv',
68
- remote_mode: 'sendrecv',
64
+ status: 'ok',
69
65
  },
70
66
  {
71
67
  event: 'response',
package/samples/simple.js CHANGED
@@ -88,7 +88,7 @@ async function test() {
88
88
  sip.call.respond(ic.id, {code: 200, reason: 'OK'})
89
89
 
90
90
  // Then we wait for the '200 OK' at the t1 side
91
- // We will also get event 'media_status' for both sides indicating media streams (RTP) were set up successfully
91
+ // We will also get event 'media_update' for both sides indicating media streams (RTP) were set up successfully
92
92
  await z.wait([
93
93
  {
94
94
  event: 'response',
@@ -106,18 +106,14 @@ async function test() {
106
106
  }),
107
107
  },
108
108
  {
109
- event: 'media_status',
109
+ event: 'media_update',
110
110
  call_id: oc.id,
111
- status: 'setup_ok',
112
- local_mode: 'sendrecv',
113
- remote_mode: 'sendrecv',
111
+ status: 'ok',
114
112
  },
115
113
  {
116
- event: 'media_status',
114
+ event: 'media_update',
117
115
  call_id: ic.id,
118
- status: 'setup_ok',
119
- local_mode: 'sendrecv',
120
- remote_mode: 'sendrecv',
116
+ status: 'ok',
121
117
  },
122
118
  ], 1000)
123
119
 
@@ -5,7 +5,7 @@ var m = require('data-matching')
5
5
  var sip_msg = require('sip-matching')
6
6
 
7
7
  async function test() {
8
- //sip.set_log_level(6)
8
+ sip.set_log_level(6)
9
9
  sip.dtmf_aggregation_on(500)
10
10
 
11
11
  z.trap_events(sip.event_source, 'event', (evt) => {
@@ -71,6 +71,7 @@ async function test() {
71
71
  sip.call.terminate(oc.id)
72
72
 
73
73
  await z.wait([
74
+ /*
74
75
  {
75
76
  event: 'request',
76
77
  call_id: ic.id,
@@ -78,6 +79,8 @@ async function test() {
78
79
  $rm: 'CANCEL',
79
80
  }),
80
81
  },
82
+ */
83
+ // The above is not reported anymore after extensive changes for #42
81
84
  {
82
85
  event: 'response',
83
86
  call_id: oc.id,
@@ -87,11 +90,6 @@ async function test() {
87
90
  $rr: 'OK',
88
91
  }),
89
92
  },
90
- ], 1000)
91
-
92
- sip.call.respond(ic.id, {code: 487, reason: 'Request Terminated'})
93
-
94
- await z.wait([
95
93
  {
96
94
  event: 'response',
97
95
  call_id: oc.id,
@@ -76,18 +76,14 @@ async function test() {
76
76
 
77
77
  await z.wait([
78
78
  {
79
- event: 'media_status',
79
+ event: 'media_update',
80
80
  call_id: oc.id,
81
- status: 'setup_ok',
82
- local_mode: 'sendrecv',
83
- remote_mode: 'sendrecv',
81
+ status: 'ok',
84
82
  },
85
83
  {
86
- event: 'media_status',
84
+ event: 'media_update',
87
85
  call_id: ic.id,
88
- status: 'setup_ok',
89
- local_mode: 'sendrecv',
90
- remote_mode: 'sendrecv',
86
+ status: 'ok',
91
87
  },
92
88
  {
93
89
  event: 'response',
@@ -108,8 +104,8 @@ async function test() {
108
104
  },
109
105
  ], 1000)
110
106
 
111
- sip.call.start_recording(oc.id, {file: './oc.wav'})
112
- sip.call.start_recording(ic.id, {file: './ic.wav'})
107
+ sip.call.start_record_wav(oc.id, {file: './oc.wav'})
108
+ sip.call.start_record_wav(ic.id, {file: './ic.wav'})
113
109
 
114
110
  sip.call.send_dtmf(oc.id, {digits: '1234', mode: 0})
115
111
  sip.call.send_dtmf(ic.id, {digits: '4321', mode: 1})
@@ -130,9 +126,26 @@ async function test() {
130
126
  ], 2000)
131
127
 
132
128
 
133
- sip.call.reinvite(oc.id, { hold: true })
129
+ sip.call.reinvite(oc.id)
130
+
131
+ await z.wait([
132
+ {
133
+ event: 'reinvite',
134
+ call_id: ic.id
135
+ },
136
+ ], 1000)
137
+
138
+ sip.call.respond(ic.id, {code: 200, reason: 'OK'})
134
139
 
135
140
  await z.wait([
141
+ {
142
+ event: 'response',
143
+ call_id: oc.id,
144
+ method: 'INVITE',
145
+ msg: sip_msg({
146
+ $rs: '100',
147
+ }),
148
+ },
136
149
  {
137
150
  event: 'response',
138
151
  call_id: oc.id,
@@ -140,27 +153,23 @@ async function test() {
140
153
  msg: sip_msg({
141
154
  $rs: '200',
142
155
  $rr: 'OK',
143
- $rb: '!{_}a=recvonly',
156
+ $rb: '!{_}a=sendrecv',
144
157
  }),
145
158
  },
146
159
  {
147
- event: 'media_status',
160
+ event: 'media_update',
148
161
  call_id: oc.id,
149
- status: 'setup_ok',
150
- local_mode: 'sendonly',
151
- remote_mode: 'recvonly',
162
+ status: 'ok',
152
163
  },
153
164
  {
154
- event: 'media_status',
165
+ event: 'media_update',
155
166
  call_id: ic.id,
156
- status: 'setup_ok',
157
- local_mode: 'recvonly',
158
- remote_mode: 'sendonly',
167
+ status: 'ok',
159
168
  },
160
169
  ], 500)
161
170
 
162
171
  sip.call.send_dtmf(oc.id, {digits: '1234', mode: 0})
163
- sip.call.send_dtmf(ic.id, {digits: '4321', mode: 0}) // this will not generate event 'dtmf' as the call is on hold
172
+ sip.call.send_dtmf(ic.id, {digits: '4321', mode: 1})
164
173
 
165
174
  await z.wait([
166
175
  {
@@ -169,11 +178,35 @@ async function test() {
169
178
  digits: '1234',
170
179
  mode: 0,
171
180
  },
181
+ {
182
+ event: 'dtmf',
183
+ call_id: oc.id,
184
+ digits: '4321',
185
+ mode: 1,
186
+ },
187
+
172
188
  ], 2000)
173
189
 
174
190
  sip.call.reinvite(ic.id)
175
191
 
176
192
  await z.wait([
193
+ {
194
+ event: 'reinvite',
195
+ call_id: oc.id
196
+ },
197
+ ], 1000)
198
+
199
+ sip.call.respond(oc.id, {code: 200, reason: 'OK'})
200
+
201
+ await z.wait([
202
+ {
203
+ event: 'response',
204
+ call_id: ic.id,
205
+ method: 'INVITE',
206
+ msg: sip_msg({
207
+ $rs: '100',
208
+ }),
209
+ },
177
210
  {
178
211
  event: 'response',
179
212
  call_id: ic.id,
@@ -181,27 +214,23 @@ async function test() {
181
214
  msg: sip_msg({
182
215
  $rs: '200',
183
216
  $rr: 'OK',
184
- $rb: '!{_}a=sendonly',
217
+ $rb: '!{_}a=sendrecv',
185
218
  }),
186
219
  },
187
220
  {
188
- event: 'media_status',
221
+ event: 'media_update',
189
222
  call_id: oc.id,
190
- status: 'setup_ok',
191
- local_mode: 'sendonly',
192
- remote_mode: 'recvonly',
223
+ status: 'ok',
193
224
  },
194
225
  {
195
- event: 'media_status',
226
+ event: 'media_update',
196
227
  call_id: ic.id,
197
- status: 'setup_ok',
198
- local_mode: 'recvonly',
199
- remote_mode: 'sendonly',
228
+ status: 'ok',
200
229
  },
201
230
  ], 500)
202
231
 
203
232
  sip.call.send_dtmf(oc.id, {digits: '1234', mode: 0})
204
- sip.call.send_dtmf(ic.id, {digits: '4321', mode: 1}) // this will not generate event 'dtmf' as the call is on hold
233
+ sip.call.send_dtmf(ic.id, {digits: '4321', mode: 1})
205
234
 
206
235
  await z.wait([
207
236
  {
@@ -210,6 +239,12 @@ async function test() {
210
239
  digits: '1234',
211
240
  mode: 0,
212
241
  },
242
+ {
243
+ event: 'dtmf',
244
+ call_id: oc.id,
245
+ digits: '4321',
246
+ mode: 1,
247
+ },
213
248
  ], 2000)
214
249
 
215
250
  sip.call.send_request(oc.id, {method: 'INFO'})
@@ -222,6 +257,11 @@ async function test() {
222
257
  $rm: 'INFO',
223
258
  }),
224
259
  },
260
+ ], 500)
261
+
262
+ sip.call.respond(ic.id, {code: 200, reason: 'OK'})
263
+
264
+ await z.wait([
225
265
  {
226
266
  event: 'response',
227
267
  call_id: oc.id,
@@ -236,6 +276,23 @@ async function test() {
236
276
  sip.call.reinvite(oc.id)
237
277
 
238
278
  await z.wait([
279
+ {
280
+ event: 'reinvite',
281
+ call_id: ic.id
282
+ },
283
+ ], 1000)
284
+
285
+ sip.call.respond(ic.id, {code: 200, reason: 'OK'})
286
+
287
+ await z.wait([
288
+ {
289
+ event: 'response',
290
+ call_id: oc.id,
291
+ method: 'INVITE',
292
+ msg: sip_msg({
293
+ $rs: '100',
294
+ }),
295
+ },
239
296
  {
240
297
  event: 'response',
241
298
  call_id: oc.id,
@@ -247,18 +304,14 @@ async function test() {
247
304
  }),
248
305
  },
249
306
  {
250
- event: 'media_status',
307
+ event: 'media_update',
251
308
  call_id: oc.id,
252
- status: 'setup_ok',
253
- local_mode: 'sendrecv',
254
- remote_mode: 'sendrecv',
309
+ status: 'ok',
255
310
  },
256
311
  {
257
- event: 'media_status',
312
+ event: 'media_update',
258
313
  call_id: ic.id,
259
- status: 'setup_ok',
260
- local_mode: 'sendrecv',
261
- remote_mode: 'sendrecv',
314
+ status: 'ok',
262
315
  },
263
316
  ], 500)
264
317
 
@@ -280,19 +333,19 @@ async function test() {
280
333
  },
281
334
  ], 2000)
282
335
 
283
- sip.call.start_playing(oc.id, {file: 'samples/artifacts/yosemitesam.wav'})
284
- sip.call.start_playing(ic.id, {file: 'samples/artifacts/yosemitesam.wav'})
336
+ sip.call.start_play_wav(oc.id, {file: 'samples/artifacts/yosemitesam.wav'})
337
+ sip.call.start_play_wav(ic.id, {file: 'samples/artifacts/yosemitesam.wav'})
285
338
 
286
339
  await z.sleep(2000)
287
340
 
288
- stat1 = sip.call.get_stream_stat(oc.id)
289
- stat2 = sip.call.get_stream_stat(ic.id)
341
+ stat1 = sip.call.get_stream_stat(oc.id, {media_id: 0})
342
+ stat2 = sip.call.get_stream_stat(ic.id, {media_id: 0})
290
343
 
291
344
  console.log("stat1", stat1)
292
345
  console.log("stat2", stat2)
293
346
 
294
- sip.call.stop_recording(oc.id)
295
- sip.call.stop_recording(ic.id)
347
+ sip.call.stop_record_wav(oc.id)
348
+ sip.call.stop_record_wav(ic.id)
296
349
 
297
350
 
298
351
  sip.call.terminate(oc.id)