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
@@ -53,20 +53,6 @@ async function test() {
53
53
  sip.call.respond(ic.id, {code: 200, reason: 'OK'})
54
54
 
55
55
  await z.wait([
56
- {
57
- event: 'media_status',
58
- call_id: oc.id,
59
- status: 'setup_ok',
60
- local_mode: 'sendrecv',
61
- remote_mode: 'sendrecv',
62
- },
63
- {
64
- event: 'media_status',
65
- call_id: ic.id,
66
- status: 'setup_ok',
67
- local_mode: 'sendrecv',
68
- remote_mode: 'sendrecv',
69
- },
70
56
  {
71
57
  event: 'response',
72
58
  call_id: oc.id,
@@ -82,6 +68,39 @@ async function test() {
82
68
  $rb: '!{_}a=sendrecv',
83
69
  }),
84
70
  },
71
+ {
72
+ event: 'media_update',
73
+ call_id: oc.id,
74
+ status: 'ok',
75
+ media: [
76
+ {
77
+ type: 'audio',
78
+ local: {
79
+ mode: 'sendrecv'
80
+ },
81
+ remote: {
82
+ mode: 'sendrecv'
83
+ },
84
+ }
85
+ ],
86
+ },
87
+ {
88
+ event: 'media_update',
89
+ call_id: ic.id,
90
+ status: 'ok',
91
+ media: [
92
+ {
93
+ type: 'audio',
94
+ local: {
95
+ mode: 'sendrecv'
96
+ },
97
+ remote: {
98
+ mode: 'sendrecv'
99
+ },
100
+ }
101
+ ],
102
+ },
103
+
85
104
  ], 1000)
86
105
 
87
106
  sip.call.send_dtmf(oc.id, {digits: '1234', mode: 0})
@@ -93,88 +112,92 @@ async function test() {
93
112
  call_id: ic.id,
94
113
  digits: '1234',
95
114
  mode: 0,
115
+ media_id: 0
96
116
  },
97
117
  {
98
118
  event: 'dtmf',
99
119
  call_id: oc.id,
100
120
  digits: '4321',
101
121
  mode: 1,
122
+ media_id: 0
102
123
  },
103
- ], 2000)
104
-
124
+ ], 1500)
105
125
 
106
- sip.call.reinvite(oc.id, {hold: true, delayed_media: true})
126
+ //await z.sleep(100)
127
+ sip.call.reinvite(oc.id, {delayed_media: true})
107
128
 
108
129
  await z.wait([
109
130
  {
110
- event: 'response',
111
- call_id: oc.id,
112
- method: 'INVITE',
131
+ event: 'reinvite',
132
+ call_id: ic.id,
113
133
  msg: sip_msg({
114
- $rs: '200',
115
- $rr: 'OK',
116
- $rb: '!{_}a=sendrecv',
134
+ $rb: m.absent,
117
135
  }),
118
136
  },
119
137
  {
120
- event: 'media_status',
138
+ event: 'response',
121
139
  call_id: oc.id,
122
- status: 'setup_ok',
123
- local_mode: 'sendonly',
124
- remote_mode: 'sendrecv',
125
- },
126
- {
127
- event: 'media_status',
128
- call_id: ic.id,
129
- status: 'setup_ok',
130
- local_mode: 'recvonly',
131
- remote_mode: 'sendonly',
140
+ method: 'INVITE',
141
+ msg: sip_msg({
142
+ $rs: '100',
143
+ }),
132
144
  },
133
145
  ], 500)
134
146
 
135
- sip.call.send_dtmf(oc.id, {digits: '1234', mode: 0})
136
- sip.call.send_dtmf(ic.id, {digits: '4321', mode: 1}) // This will not generate event 'dtmf'
137
-
138
- await z.wait([
139
- {
140
- event: 'dtmf',
141
- call_id: ic.id,
142
- digits: '1234',
143
- mode: 0,
144
- },
145
- ], 2000)
146
-
147
- sip.call.reinvite(ic.id, {hold: false, delayed_media: true})
147
+ //await z.sleep(100)
148
+ sip.call.respond(ic.id, {code: 200, reason: 'OK'})
148
149
 
149
150
  await z.wait([
150
151
  {
151
152
  event: 'response',
152
- call_id: ic.id,
153
+ call_id: oc.id,
153
154
  method: 'INVITE',
154
155
  msg: sip_msg({
155
156
  $rs: '200',
156
157
  $rr: 'OK',
157
- $rb: '!{_}a=sendonly',
158
158
  }),
159
159
  },
160
160
  {
161
- event: 'media_status',
161
+ event: 'media_update',
162
162
  call_id: oc.id,
163
- status: 'setup_ok',
164
- local_mode: 'sendonly',
165
- remote_mode: 'recvonly',
163
+ status: 'ok',
164
+ media: [
165
+ {
166
+ type: 'audio',
167
+ /*
168
+ local: {
169
+ mode: 'recvonly'
170
+ },
171
+ remote: {
172
+ mode: 'sendrecv'
173
+ },
174
+ */
175
+ }
176
+ ],
166
177
  },
167
178
  {
168
- event: 'media_status',
179
+ event: 'media_update',
169
180
  call_id: ic.id,
170
- status: 'setup_ok',
171
- local_mode: 'recvonly',
172
- remote_mode: 'sendonly',
181
+ status: 'ok',
182
+ media: [
183
+ {
184
+ type: 'audio',
185
+ /*
186
+ local: {
187
+ mode: 'sendrecv'
188
+ },
189
+ remote: {
190
+ mode: 'recvonly'
191
+ },
192
+ */
193
+ }
194
+ ],
173
195
  },
196
+
174
197
  ], 500)
175
198
 
176
199
  sip.call.send_dtmf(oc.id, {digits: '1234', mode: 0})
177
- sip.call.send_dtmf(ic.id, {digits: '4321', mode: 1}) // This will not generate event 'dtmf'
200
+ sip.call.send_dtmf(ic.id, {digits: '4321', mode: 1})
178
201
 
179
202
  await z.wait([
180
203
  {
@@ -182,62 +205,66 @@ async function test() {
182
205
  call_id: ic.id,
183
206
  digits: '1234',
184
207
  mode: 0,
208
+ media_id: 0
185
209
  },
186
- ], 2000)
210
+ {
211
+ event: 'dtmf',
212
+ call_id: oc.id,
213
+ digits: '4321',
214
+ mode: 1,
215
+ media_id: 0
216
+ },
217
+ ], 1500)
187
218
 
188
- sip.call.send_request(oc.id, {method: 'INFO'})
219
+ //await z.sleep(100)
220
+ sip.call.reinvite(ic.id, {delayed_media: true})
189
221
 
190
222
  await z.wait([
191
223
  {
192
- event: 'request',
193
- call_id: ic.id,
224
+ event: 'reinvite',
225
+ call_id: oc.id,
194
226
  msg: sip_msg({
195
- $rm: 'INFO',
227
+ $rb: m.absent,
196
228
  }),
197
229
  },
198
230
  {
199
231
  event: 'response',
200
- call_id: oc.id,
201
- method: 'INFO',
232
+ call_id: ic.id,
233
+ method: 'INVITE',
202
234
  msg: sip_msg({
203
- $rs: '200',
204
- $rr: 'OK',
235
+ $rs: '100',
205
236
  }),
206
237
  },
207
238
  ], 500)
208
239
 
209
- sip.call.reinvite(oc.id, {hold: false, delayed_media: true})
240
+ //await z.sleep(100)
241
+ sip.call.respond(oc.id, {code: 200, reason: 'OK'})
210
242
 
211
243
  await z.wait([
212
244
  {
213
245
  event: 'response',
214
- call_id: oc.id,
246
+ call_id: ic.id,
215
247
  method: 'INVITE',
216
248
  msg: sip_msg({
217
249
  $rs: '200',
218
250
  $rr: 'OK',
219
- $rb: '!{_}a=recvonly',
220
251
  }),
221
252
  },
222
253
  {
223
- event: 'media_status',
254
+ event: 'media_update',
224
255
  call_id: oc.id,
225
- status: 'setup_ok',
226
- local_mode: 'sendonly',
227
- remote_mode: 'recvonly',
256
+ status: 'ok',
228
257
  },
229
258
  {
230
- event: 'media_status',
259
+ event: 'media_update',
231
260
  call_id: ic.id,
232
- status: 'setup_ok',
233
- local_mode: 'recvonly',
234
- remote_mode: 'sendonly',
261
+ status: 'ok',
235
262
  },
236
- ], 500)
237
263
 
264
+ ], 500)
238
265
 
239
266
  sip.call.send_dtmf(oc.id, {digits: '1234', mode: 0})
240
- sip.call.send_dtmf(ic.id, {digits: '4321', mode: 1}) // This will not generate event 'dtmf'
267
+ sip.call.send_dtmf(ic.id, {digits: '4321', mode: 1})
241
268
 
242
269
  await z.wait([
243
270
  {
@@ -245,9 +272,18 @@ async function test() {
245
272
  call_id: ic.id,
246
273
  digits: '1234',
247
274
  mode: 0,
275
+ media_id: 0
276
+ },
277
+ {
278
+ event: 'dtmf',
279
+ call_id: oc.id,
280
+ digits: '4321',
281
+ mode: 1,
282
+ media_id: 0
248
283
  },
249
- ], 2000)
284
+ ], 1500)
250
285
 
286
+ //await z.sleep(100)
251
287
  sip.call.terminate(oc.id)
252
288
 
253
289
  await z.wait([
package/samples/g729.js CHANGED
@@ -60,18 +60,14 @@ async function test() {
60
60
 
61
61
  await z.wait([
62
62
  {
63
- event: 'media_status',
63
+ event: 'media_update',
64
64
  call_id: oc.id,
65
- status: 'setup_ok',
66
- local_mode: 'sendrecv',
67
- remote_mode: 'sendrecv',
65
+ status: 'ok',
68
66
  },
69
67
  {
70
- event: 'media_status',
68
+ event: 'media_update',
71
69
  call_id: ic.id,
72
- status: 'setup_ok',
73
- local_mode: 'sendrecv',
74
- remote_mode: 'sendrecv',
70
+ status: 'ok',
75
71
  },
76
72
  {
77
73
  event: 'response',
@@ -90,9 +86,26 @@ async function test() {
90
86
  },
91
87
  ], 1000)
92
88
 
93
- sip.call.reinvite(oc.id, {hold: true})
89
+ sip.call.reinvite(oc.id)
94
90
 
95
91
  await z.wait([
92
+ {
93
+ event: 'reinvite',
94
+ call_id: ic.id
95
+ },
96
+ ], 1000)
97
+
98
+ sip.call.respond(ic.id, {code: 200, reason: 'OK'})
99
+
100
+ await z.wait([
101
+ {
102
+ event: 'response',
103
+ call_id: oc.id,
104
+ method: 'INVITE',
105
+ msg: sip_msg({
106
+ $rs: '100',
107
+ }),
108
+ },
96
109
  {
97
110
  event: 'response',
98
111
  call_id: oc.id,
@@ -100,28 +113,41 @@ async function test() {
100
113
  msg: sip_msg({
101
114
  $rs: '200',
102
115
  $rr: 'OK',
103
- $rb: '!{_}a=recvonly',
116
+ $rb: '!{_}a=sendrecv',
104
117
  }),
105
118
  },
106
119
  {
107
- event: 'media_status',
120
+ event: 'media_update',
108
121
  call_id: oc.id,
109
- status: 'setup_ok',
110
- local_mode: 'sendonly',
111
- remote_mode: 'recvonly',
122
+ status: 'ok',
112
123
  },
113
124
  {
114
- event: 'media_status',
125
+ event: 'media_update',
115
126
  call_id: ic.id,
116
- status: 'setup_ok',
117
- local_mode: 'recvonly',
118
- remote_mode: 'sendonly',
127
+ status: 'ok',
119
128
  },
120
129
  ], 500)
121
130
 
122
131
  sip.call.reinvite(oc.id, false, 0)
123
132
 
124
133
  await z.wait([
134
+ {
135
+ event: 'reinvite',
136
+ call_id: ic.id
137
+ },
138
+ ], 1000)
139
+
140
+ sip.call.respond(ic.id, {code: 200, reason: 'OK'})
141
+
142
+ await z.wait([
143
+ {
144
+ event: 'response',
145
+ call_id: oc.id,
146
+ method: 'INVITE',
147
+ msg: sip_msg({
148
+ $rs: '100',
149
+ }),
150
+ },
125
151
  {
126
152
  event: 'response',
127
153
  call_id: oc.id,
@@ -133,23 +159,19 @@ async function test() {
133
159
  }),
134
160
  },
135
161
  {
136
- event: 'media_status',
162
+ event: 'media_update',
137
163
  call_id: oc.id,
138
- status: 'setup_ok',
139
- local_mode: 'sendrecv',
140
- remote_mode: 'sendrecv',
164
+ status: 'ok',
141
165
  },
142
166
  {
143
- event: 'media_status',
167
+ event: 'media_update',
144
168
  call_id: ic.id,
145
- status: 'setup_ok',
146
- local_mode: 'sendrecv',
147
- remote_mode: 'sendrecv',
169
+ status: 'ok',
148
170
  },
149
171
  ], 500)
150
172
 
151
- oc_stat = sip.call.get_stream_stat(oc.id)
152
- ic_stat = sip.call.get_stream_stat(ic.id)
173
+ oc_stat = sip.call.get_stream_stat(oc.id, {media_id: 0})
174
+ ic_stat = sip.call.get_stream_stat(ic.id, {media_id: 0})
153
175
 
154
176
  console.log(oc_stat)
155
177
  console.log(ic_stat)