sip-lab 1.2.4 → 1.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.
@@ -1,111 +1,123 @@
1
1
  var sip = require ('../index.js')
2
- var z = require('zester')
2
+ var Zester = require('zester')
3
+ var z = new Zester()
3
4
  var m = require('data-matching')
4
5
  var sip_msg = require('sip-matching')
5
6
 
6
- //sip.set_log_level(6)
7
- sip.dtmf_aggregation_on(500)
7
+ async function test() {
8
+ //sip.set_log_level(6)
9
+ sip.dtmf_aggregation_on(500)
8
10
 
9
- z.trap_events(sip.event_source, 'event', (evt) => {
10
- var e = evt.args[0]
11
- return e
12
- })
11
+ z.trap_events(sip.event_source, 'event', (evt) => {
12
+ var e = evt.args[0]
13
+ return e
14
+ })
15
+
16
+ console.log(sip.start((data) => { console.log(data)} ))
17
+
18
+ t1 = sip.transport.create("127.0.0.1", 5090, 1)
19
+ t2 = sip.transport.create("127.0.0.1", 5092, 1)
20
+
21
+ console.log("t1", t1)
22
+ console.log("t2", t2)
23
+
24
+ flags = 0
25
+
26
+ oc = sip.call.create(t1.id, flags, 'sip:a@t', 'sip:b@127.0.0.1:5092')
27
+
28
+ await z.wait([
29
+ {
30
+ event: "incoming_call",
31
+ call_id: m.collect("call_id"),
32
+ },
33
+ {
34
+ event: 'response',
35
+ call_id: oc.id,
36
+ method: 'INVITE',
37
+ msg: sip_msg({
38
+ $rs: '100',
39
+ $rr: 'Trying',
40
+ '$(hdrcnt(via))': 1,
41
+ '$hdr(call-id)': m.collect('sip_call_id'),
42
+ $fU: 'a',
43
+ $fd: 't',
44
+ $tU: 'b',
45
+ '$hdr(l)': '0',
46
+ }),
47
+ },
48
+ ], 1000)
49
+
50
+ ic = {
51
+ id: z.store.call_id,
52
+ sip_call_id: z.store.sip_call_id,
53
+ }
13
54
 
14
- console.log(sip.start((data) => { console.log(data)} ))
15
-
16
- t1 = sip.transport.create("127.0.0.1", 5090, 1)
17
- t2 = sip.transport.create("127.0.0.1", 5092, 1)
18
-
19
- console.log("t1", t1)
20
- console.log("t2", t2)
21
-
22
- flags = 0
23
-
24
- oc = sip.call.create(t1.id, flags, 'sip:a@t', 'sip:b@127.0.0.1:5092')
25
-
26
- z.wait([
27
- {
28
- event: "incoming_call",
29
- call_id: m.collect("call_id"),
30
- },
31
- {
32
- event: 'response',
33
- call_id: oc.id,
34
- method: 'INVITE',
35
- msg: sip_msg({
36
- $rs: '100',
37
- $rr: 'Trying',
38
- '$(hdrcnt(via))': 1,
39
- '$hdr(call-id)': m.collect('sip_call_id'),
40
- $fU: 'a',
41
- $fd: 't',
42
- $tU: 'b',
43
- '$hdr(l)': '0',
44
- }),
45
- },
46
- ], 1000)
47
-
48
- ic = {
49
- id: z.store.call_id,
50
- sip_call_id: z.store.sip_call_id,
55
+ sip.call.respond(ic.id, 180, 'Ringing')
56
+
57
+ await z.wait([
58
+ {
59
+ event: 'response',
60
+ call_id: oc.id,
61
+ method: 'INVITE',
62
+ msg: sip_msg({
63
+ $rs: '180',
64
+ $rr: 'Ringing',
65
+ '$(hdrcnt(VIA))': 1,
66
+ $fU: 'a',
67
+ $fd: 't',
68
+ $tU: 'b',
69
+ }),
70
+ },
71
+ ], 1000)
72
+
73
+ sip.call.terminate(oc.id)
74
+
75
+ await z.wait([
76
+ {
77
+ event: 'request',
78
+ call_id: ic.id,
79
+ msg: sip_msg({
80
+ $rm: 'CANCEL',
81
+ }),
82
+ },
83
+ {
84
+ event: 'response',
85
+ call_id: oc.id,
86
+ method: 'CANCEL',
87
+ msg: sip_msg({
88
+ $rs: '200',
89
+ $rr: 'OK',
90
+ }),
91
+ },
92
+ {
93
+ event: 'response',
94
+ call_id: oc.id,
95
+ method: 'INVITE',
96
+ msg: sip_msg({
97
+ $rs: '487',
98
+ $rr: 'Request Terminated',
99
+ })
100
+ },
101
+ {
102
+ event: 'call_ended',
103
+ call_id: oc.id,
104
+ },
105
+ {
106
+ event: 'call_ended',
107
+ call_id: ic.id,
108
+ },
109
+ ], 1000)
110
+
111
+ await z.sleep(1000)
112
+
113
+ console.log("Success")
114
+
115
+ sip.stop()
51
116
  }
52
117
 
53
- sip.call.respond(ic.id, 180, 'Ringing')
54
-
55
- z.wait([
56
- {
57
- event: 'response',
58
- call_id: oc.id,
59
- method: 'INVITE',
60
- msg: sip_msg({
61
- $rs: '180',
62
- $rr: 'Ringing',
63
- '$(hdrcnt(VIA))': 1,
64
- $fU: 'a',
65
- $fd: 't',
66
- $tU: 'b',
67
- }),
68
- },
69
- ], 1000)
70
-
71
- sip.call.terminate(oc.id)
72
-
73
- z.wait([
74
- {
75
- event: 'request',
76
- call_id: ic.id,
77
- msg: sip_msg({
78
- $rm: 'CANCEL',
79
- }),
80
- },
81
- {
82
- event: 'response',
83
- call_id: oc.id,
84
- method: 'CANCEL',
85
- msg: sip_msg({
86
- $rs: '200',
87
- $rr: 'OK',
88
- }),
89
- },
90
- {
91
- event: 'response',
92
- call_id: oc.id,
93
- method: 'INVITE',
94
- msg: sip_msg({
95
- $rs: '487',
96
- $rr: 'Request Terminated',
97
- })
98
- },
99
- {
100
- event: 'call_ended',
101
- call_id: oc.id,
102
- },
103
- {
104
- event: 'call_ended',
105
- call_id: ic.id,
106
- },
107
- ], 1000)
108
-
109
- z.sleep(1000)
110
-
111
- sip.stop()
118
+ test()
119
+ .catch(e => {
120
+ console.error(e)
121
+ process.exit(1)
122
+ })
123
+
package/src/sip.cpp CHANGED
@@ -527,6 +527,16 @@ int __pjw_init()
527
527
  return 1;
528
528
  }
529
529
 
530
+ g_pool = pj_pool_create(&cp.factory, "tester", 1000, 1000, NULL);
531
+
532
+ /* Create event manager */
533
+ status = pjmedia_event_mgr_create(g_pool, 0, NULL);
534
+ if(status != PJ_SUCCESS)
535
+ {
536
+ addon_log(LOG_LEVEL_DEBUG, "pjmedia_event_mgr_create failed\n");
537
+ return 1;
538
+ }
539
+
530
540
  const pj_str_t msg_tag = { "MESSAGE", 7 };
531
541
  const pj_str_t STR_MIME_TEXT_PLAIN = { "text/plain", 10 };
532
542
  const pj_str_t STR_MIME_APP_ISCOMPOSING = { "application/im-iscomposing+xml", 30 };
@@ -693,6 +703,22 @@ int __pjw_init()
693
703
  }
694
704
  #endif
695
705
 
706
+ #if defined(PJMEDIA_HAS_OPUS_CODEC) && PJMEDIA_HAS_OPUS_CODEC!=0
707
+ status = pjmedia_codec_opus_init(g_med_endpt);
708
+ if(status != PJ_SUCCESS)
709
+ {
710
+ addon_log(LOG_LEVEL_DEBUG, "pjmedia_codec_opus_init failed\n");
711
+ return 1;
712
+ }
713
+ #endif
714
+
715
+ status = pjmedia_codec_bcg729_init(g_med_endpt);
716
+ if(status != PJ_SUCCESS)
717
+ {
718
+ printf("pjmedia_codec_bcg729_init failed\n");
719
+ return 1;
720
+ }
721
+
696
722
  status = pj_thread_register("main_thread", g_main_thread_descriptor, &g_main_thread);
697
723
  if(status != PJ_SUCCESS)
698
724
  {
@@ -2251,6 +2277,9 @@ static void on_media_update( pjsip_inv_session *inv, pj_status_t status){
2251
2277
  return;
2252
2278
  }
2253
2279
 
2280
+ /* Start the UDP media transport */
2281
+ pjmedia_transport_media_start(call->med_transport, 0, 0, 0, 0);
2282
+
2254
2283
  pjmedia_port *stream_port;
2255
2284
  status = pjmedia_stream_get_port(call->med_stream, &stream_port);
2256
2285
  if(status != PJ_SUCCESS){
@@ -3478,6 +3507,11 @@ void close_media_transport(pjmedia_transport *med_transport) {
3478
3507
  g_PacketDumper->remove_endpoint( tpinfo.sock_info.rtcp_addr_name.ipv4.sin_addr.s_addr, tpinfo.sock_info.rtcp_addr_name.ipv4.sin_port );
3479
3508
  }
3480
3509
 
3510
+ status = pjmedia_transport_media_stop(med_transport);
3511
+ if( status != PJ_SUCCESS ) {
3512
+ addon_log(LOG_LEVEL_DEBUG, "Critical Error: pjmedia_transport_media_stop failed. status=%d\n", status);
3513
+ }
3514
+
3481
3515
  status = pjmedia_transport_close(med_transport);
3482
3516
  if( status != PJ_SUCCESS ) {
3483
3517
  addon_log(LOG_LEVEL_DEBUG, "Critical Error: pjmedia_transport_close failed. status=%d\n", status);
package/a.js DELETED
@@ -1,280 +0,0 @@
1
- var sip = require ('sip-lab')
2
- var z = require('zester')
3
- var m = require('data-matching')
4
- var sip_msg = require('sip-matching')
5
-
6
- //sip.set_log_level(6)
7
- sip.dtmf_aggregation_on(500)
8
-
9
- z.trap_events(sip.event_source, 'event', (evt) => {
10
- var e = evt.args[0]
11
- return e
12
- })
13
-
14
- console.log(sip.start((data) => { console.log(data)} ))
15
-
16
- t1 = sip.transport.create("127.0.0.1", 5090, 1)
17
- t2 = sip.transport.create("127.0.0.1", 5092, 1)
18
-
19
- console.log("t1", t1)
20
- console.log("t2", t2)
21
-
22
- flags = 0
23
-
24
- oc = sip.call.create(t1.id, flags, 'sip:a@t', 'sip:b@127.0.0.1:5092')
25
-
26
- z.wait([
27
- {
28
- event: "incoming_call",
29
- call_id: m.collect("call_id"),
30
- },
31
- {
32
- event: 'response',
33
- call_id: oc.id,
34
- method: 'INVITE',
35
- msg: sip_msg({
36
- $rs: '100',
37
- $rr: 'Trying',
38
- '$(hdrcnt(via))': 1,
39
- '$hdr(call-id)': m.collect('sip_call_id'),
40
- $fU: 'a',
41
- $fd: 't',
42
- $tU: 'b',
43
- '$hdr(l)': '0',
44
- }),
45
- },
46
- ], 1000)
47
-
48
- ic = {
49
- id: z.store.call_id,
50
- sip_call_id: z.store.sip_call_id,
51
- }
52
-
53
- sip.call.respond(ic.id, 200, 'OK')
54
-
55
- 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
- {
71
- event: 'response',
72
- call_id: oc.id,
73
- method: 'INVITE',
74
- msg: sip_msg({
75
- $rs: '200',
76
- $rr: 'OK',
77
- '$(hdrcnt(VIA))': 1,
78
- $fU: 'a',
79
- $fd: 't',
80
- $tU: 'b',
81
- '$hdr(content-type)': 'application/sdp',
82
- $rb: '!{_}a=sendrecv',
83
- }),
84
- },
85
- ], 1000)
86
-
87
- sip.call.send_dtmf(oc.id, '1234', 0)
88
- sip.call.send_dtmf(ic.id, '4321', 1)
89
-
90
- z.wait([
91
- {
92
- event: 'dtmf',
93
- call_id: ic.id,
94
- digits: '1234',
95
- mode: 0,
96
- },
97
- {
98
- event: 'dtmf',
99
- call_id: oc.id,
100
- digits: '4321',
101
- mode: 1,
102
- },
103
- ], 2000)
104
-
105
-
106
- sip.call.reinvite(oc.id, true, 0)
107
-
108
- z.wait([
109
- {
110
- event: 'response',
111
- call_id: oc.id,
112
- method: 'INVITE',
113
- msg: sip_msg({
114
- $rs: '200',
115
- $rr: 'OK',
116
- $rb: '!{_}a=recvonly',
117
- }),
118
- },
119
- {
120
- event: 'media_status',
121
- call_id: oc.id,
122
- status: 'setup_ok',
123
- local_mode: 'sendonly',
124
- remote_mode: 'recvonly',
125
- },
126
- {
127
- event: 'media_status',
128
- call_id: ic.id,
129
- status: 'setup_ok',
130
- local_mode: 'recvonly',
131
- remote_mode: 'sendonly',
132
- },
133
- ], 500)
134
-
135
- sip.call.send_dtmf(oc.id, '1234', 0)
136
- sip.call.send_dtmf(ic.id, '4321', 1) // this will not generate event 'dtmf' as the call is on hold
137
-
138
- 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, false, 0)
148
-
149
- z.wait([
150
- {
151
- event: 'response',
152
- call_id: ic.id,
153
- method: 'INVITE',
154
- msg: sip_msg({
155
- $rs: '200',
156
- $rr: 'OK',
157
- $rb: '!{_}a=sendonly',
158
- }),
159
- },
160
- {
161
- event: 'media_status',
162
- call_id: oc.id,
163
- status: 'setup_ok',
164
- local_mode: 'sendonly',
165
- remote_mode: 'recvonly',
166
- },
167
- {
168
- event: 'media_status',
169
- call_id: ic.id,
170
- status: 'setup_ok',
171
- local_mode: 'recvonly',
172
- remote_mode: 'sendonly',
173
- },
174
- ], 500)
175
-
176
- sip.call.send_dtmf(oc.id, '1234', 0)
177
- sip.call.send_dtmf(ic.id, '4321', 1) // this will not generate event 'dtmf' as the call is on hold
178
-
179
- z.wait([
180
- {
181
- event: 'dtmf',
182
- call_id: ic.id,
183
- digits: '1234',
184
- mode: 0,
185
- },
186
- ], 2000)
187
-
188
- sip.call.send_request(oc.id, 'INFO')
189
-
190
- z.wait([
191
- {
192
- event: 'request',
193
- call_id: ic.id,
194
- msg: sip_msg({
195
- $rm: 'INFO',
196
- }),
197
- },
198
- {
199
- event: 'response',
200
- call_id: oc.id,
201
- method: 'INFO',
202
- msg: sip_msg({
203
- $rs: '200',
204
- $rr: 'OK',
205
- }),
206
- },
207
- ], 500)
208
-
209
- sip.call.reinvite(oc.id, false, 0)
210
-
211
- z.wait([
212
- {
213
- event: 'response',
214
- call_id: oc.id,
215
- method: 'INVITE',
216
- msg: sip_msg({
217
- $rs: '200',
218
- $rr: 'OK',
219
- $rb: '!{_}a=sendrecv',
220
- }),
221
- },
222
- {
223
- event: 'media_status',
224
- call_id: oc.id,
225
- status: 'setup_ok',
226
- local_mode: 'sendrecv',
227
- remote_mode: 'sendrecv',
228
- },
229
- {
230
- event: 'media_status',
231
- call_id: ic.id,
232
- status: 'setup_ok',
233
- local_mode: 'sendrecv',
234
- remote_mode: 'sendrecv',
235
- },
236
- ], 500)
237
-
238
- sip.call.send_dtmf(oc.id, '1234', 0)
239
- sip.call.send_dtmf(ic.id, '4321', 1)
240
-
241
- z.wait([
242
- {
243
- event: 'dtmf',
244
- call_id: ic.id,
245
- digits: '1234',
246
- mode: 0,
247
- },
248
- {
249
- event: 'dtmf',
250
- call_id: oc.id,
251
- digits: '4321',
252
- mode: 1,
253
- },
254
- ], 2000)
255
-
256
- sip.call.terminate(oc.id)
257
-
258
- z.wait([
259
- {
260
- event: 'call_ended',
261
- call_id: oc.id,
262
- },
263
- {
264
- event: 'call_ended',
265
- call_id: ic.id,
266
- },
267
- {
268
- event: 'response',
269
- call_id: oc.id,
270
- method: 'BYE',
271
- msg: sip_msg({
272
- $rs: '200',
273
- $rr: 'OK',
274
- }),
275
- },
276
- ], 1000)
277
-
278
- z.sleep(1000)
279
-
280
- sip.stop()
package/src/README DELETED
@@ -1,3 +0,0 @@
1
-
2
- # install boost library
3
- sudo apt install libboost-all-dev