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.
- package/DEV.md +19 -3
- package/README.md +8 -4
- package/binding.gyp +97 -86
- package/build_deps.sh +3 -2
- package/index.js +14 -7
- package/package.json +7 -2
- package/prebuilds/linux-x64/node.abi102.node +0 -0
- package/prebuilds/linux-x64/node.abi108.node +0 -0
- package/prebuilds/linux-x64/node.abi88.node +0 -0
- package/prebuilds/linux-x64/node.abi93.node +0 -0
- package/samples/16_audio_streams.js +179 -0
- package/samples/delayed_media.js +117 -81
- package/samples/g729.js +50 -28
- package/samples/mrcp_and_audio.js +445 -0
- package/samples/mrcp_and_audio.simplified_media.js +273 -0
- package/samples/mrcp_and_audio.switching_order.js +273 -0
- package/samples/options.js +82 -0
- package/samples/refer.js +247 -0
- package/samples/refuse_telephone_event.js +166 -0
- package/samples/register_no_expires.js +82 -0
- package/samples/register_subscribe.js +36 -4
- package/samples/reinvite_and_dtmf.js +236 -161
- package/samples/reinvite_audio_audio.js +320 -0
- package/samples/reinvite_with_hold_unhold.js +412 -0
- package/samples/send_and_receive_fax.js +4 -8
- package/samples/simple.js +5 -9
- package/samples/sip_cancel.js +4 -6
- package/samples/tcp_and_extra_headers.js +98 -45
- package/samples/two_audio_media.js +497 -0
- package/src/addon.cpp +488 -268
- package/src/event_templates.cpp +84 -35
- package/src/event_templates.hpp +22 -12
- package/src/idmanager.cpp +58 -57
- package/src/idmanager.hpp +10 -10
- package/src/log.cpp +9 -11
- package/src/log.hpp +4 -4
- package/src/sip.cpp +6841 -5040
- package/src/sip.hpp +26 -34
- package/src/packetdumper.cpp +0 -234
- package/src/packetdumper.hpp +0 -67
|
@@ -54,18 +54,14 @@ async function test() {
|
|
|
54
54
|
|
|
55
55
|
await z.wait([
|
|
56
56
|
{
|
|
57
|
-
event: '
|
|
57
|
+
event: 'media_update',
|
|
58
58
|
call_id: oc.id,
|
|
59
|
-
status: '
|
|
60
|
-
local_mode: 'sendrecv',
|
|
61
|
-
remote_mode: 'sendrecv',
|
|
59
|
+
status: 'ok',
|
|
62
60
|
},
|
|
63
61
|
{
|
|
64
|
-
event: '
|
|
62
|
+
event: 'media_update',
|
|
65
63
|
call_id: ic.id,
|
|
66
|
-
status: '
|
|
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 '
|
|
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: '
|
|
109
|
+
event: 'media_update',
|
|
110
110
|
call_id: oc.id,
|
|
111
|
-
status: '
|
|
112
|
-
local_mode: 'sendrecv',
|
|
113
|
-
remote_mode: 'sendrecv',
|
|
111
|
+
status: 'ok',
|
|
114
112
|
},
|
|
115
113
|
{
|
|
116
|
-
event: '
|
|
114
|
+
event: 'media_update',
|
|
117
115
|
call_id: ic.id,
|
|
118
|
-
status: '
|
|
119
|
-
local_mode: 'sendrecv',
|
|
120
|
-
remote_mode: 'sendrecv',
|
|
116
|
+
status: 'ok',
|
|
121
117
|
},
|
|
122
118
|
], 1000)
|
|
123
119
|
|
package/samples/sip_cancel.js
CHANGED
|
@@ -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
|
-
|
|
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: '
|
|
79
|
+
event: 'media_update',
|
|
80
80
|
call_id: oc.id,
|
|
81
|
-
status: '
|
|
82
|
-
local_mode: 'sendrecv',
|
|
83
|
-
remote_mode: 'sendrecv',
|
|
81
|
+
status: 'ok',
|
|
84
82
|
},
|
|
85
83
|
{
|
|
86
|
-
event: '
|
|
84
|
+
event: 'media_update',
|
|
87
85
|
call_id: ic.id,
|
|
88
|
-
status: '
|
|
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.
|
|
112
|
-
sip.call.
|
|
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
|
|
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=
|
|
156
|
+
$rb: '!{_}a=sendrecv',
|
|
144
157
|
}),
|
|
145
158
|
},
|
|
146
159
|
{
|
|
147
|
-
event: '
|
|
160
|
+
event: 'media_update',
|
|
148
161
|
call_id: oc.id,
|
|
149
|
-
status: '
|
|
150
|
-
local_mode: 'sendonly',
|
|
151
|
-
remote_mode: 'recvonly',
|
|
162
|
+
status: 'ok',
|
|
152
163
|
},
|
|
153
164
|
{
|
|
154
|
-
event: '
|
|
165
|
+
event: 'media_update',
|
|
155
166
|
call_id: ic.id,
|
|
156
|
-
status: '
|
|
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:
|
|
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=
|
|
217
|
+
$rb: '!{_}a=sendrecv',
|
|
185
218
|
}),
|
|
186
219
|
},
|
|
187
220
|
{
|
|
188
|
-
event: '
|
|
221
|
+
event: 'media_update',
|
|
189
222
|
call_id: oc.id,
|
|
190
|
-
status: '
|
|
191
|
-
local_mode: 'sendonly',
|
|
192
|
-
remote_mode: 'recvonly',
|
|
223
|
+
status: 'ok',
|
|
193
224
|
},
|
|
194
225
|
{
|
|
195
|
-
event: '
|
|
226
|
+
event: 'media_update',
|
|
196
227
|
call_id: ic.id,
|
|
197
|
-
status: '
|
|
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})
|
|
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: '
|
|
307
|
+
event: 'media_update',
|
|
251
308
|
call_id: oc.id,
|
|
252
|
-
status: '
|
|
253
|
-
local_mode: 'sendrecv',
|
|
254
|
-
remote_mode: 'sendrecv',
|
|
309
|
+
status: 'ok',
|
|
255
310
|
},
|
|
256
311
|
{
|
|
257
|
-
event: '
|
|
312
|
+
event: 'media_update',
|
|
258
313
|
call_id: ic.id,
|
|
259
|
-
status: '
|
|
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.
|
|
284
|
-
sip.call.
|
|
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.
|
|
295
|
-
sip.call.
|
|
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)
|