[SR-Users] Fail call from Webrct to PSTN SIP trunk

Daniel-Constantin Mierla miconda at gmail.com
Mon Aug 16 10:51:36 CEST 2021


Hello,

I haven't read thoroughly the message, but quickly looking at the SIP
messages, I noticed the following header in the 500 response:

Warning: 399 03077.08860.B.005.422.228.0.15.01039.00000000.00000 "SDP
body length beyond limit"

Try to reduce the size of the SDP by disabling media streams (e.g.,
video) and codecs you know are not going to be used.

Cheers,
Daniel

On 16.08.21 06:15, Abdul Rahman Reza wrote:
> Hi, good morning
>
> there is something I want to ask, I'm really stuck looking for a
> solution, haven't found it yet,
>
> So I want to make Webrct able to call SIP and PSTN numbers via SIP
> trunk, but it keeps failing
> For testing as follows:
>
> webrct => SIP OK
> webrct => PSTN NOK
> webrct => webrct OK
> SIP => webrct OK
> SIP => PSTN OK
> SIP => SIP OK
>
> Thank you very much in advance
>
> this is error log from kamailio 
>
> webrct => PSTN gagal dan error muncul seperti ini :
>
> Aug 16 11:25:16 esbdev01 /usr/sbin/kamailio[28300]: INFO: : START
> WEBSOCKET : INVITE from sip:500 at domain.name
> <mailto:sip%3A500 at domain.name> (IP:127.0.0.1:43402
> <http://127.0.0.1:43402>) websocket id 12
>
> Aug 16 11:25:16 esbdev01 /usr/sbin/kamailio[28300]: INFO: :
> MANAGE_BRANCH: New branch [0] to sip:+6282311XXXXXX at IP_SIP_TRUNK:5060
>
> Aug 16 11:25:16 esbdev01 /usr/sbin/kamailio[28300]: INFO: : NATMANAGE
> branch_id:0 ruri: sip:+6282311XXXXXX at IP_SIP_TRUNK:5060, method:INVITE,
> status:, extra_id: z9hG4bK46635730, rtpengine_manage: replace-origin
> replace-session-connection via-branch=extra rtcp-mux-demux DTLS=off
> SDES-off ICE=remove RTP/AVP
>
> Aug 16 11:25:16 esbdev01 rtpengine[16670]: INFO:
> [eq07esfe0a3mcjvpait6]: [control] Received command ‘offer’ from
> 127.0.0.1:38616 <http://127.0.0.1:38616>
>
> Aug 16 11:25:16 esbdev01 rtpengine[16670]: NOTICE:
> [eq07esfe0a3mcjvpait6]: [core] Creating new call
>
> Aug 16 11:25:16 esbdev01 rtpengine[16670]: WARNING:
> [eq07esfe0a3mcjvpait6]: [core] Ignoring updated remote endpoint as the
> local socket is IPv4
>
> Aug 16 11:25:16 esbdev01 rtpengine[16670]: WARNING:
> [eq07esfe0a3mcjvpait6]: [core] Ignoring updated remote endpoint as the
> local socket is IPv4
>
> Aug 16 11:25:16 esbdev01 rtpengine[16670]: INFO:
> [eq07esfe0a3mcjvpait6]: [control] Replying to ‘offer’ from
> 127.0.0.1:38616 <http://127.0.0.1:38616> (elapsed time 0.005891 sec)
>
> Aug 16 11:25:16 esbdev01 /usr/sbin/kamailio[28280]: INFO: : BRANCH
> FAILED: z9hG4bK4663573 + 0
>
> Aug 16 11:25:16 esbdev01 rtpengine[16670]: INFO:
> [eq07esfe0a3mcjvpait6]: [control] Received command ‘delete’ from
> 127.0.0.1:44664 <http://127.0.0.1:44664>
>
> Aug 16 11:25:16 esbdev01 rtpengine[16670]: INFO:
> [eq07esfe0a3mcjvpait6]: [core] Scheduling deletion of call branch ‘’
> (via-branch ‘z9hG4bK46635730’) in 30 seconds
>
> Aug 16 11:25:16 esbdev01 rtpengine[16670]: INFO:
> [eq07esfe0a3mcjvpait6]: [control] Replying to ‘delete’ from
> 127.0.0.1:44664 <http://127.0.0.1:44664> (elapsed time 0.000210 sec)
>
> Aug 16 11:25:16 esbdev01 /usr/sbin/kamailio[28280]: INFO: : Failure:
>
>
>
>
> and this is log from webrct browser using jssip
>
> LoggerFactory.js:100 Mon Aug 16 2021 10:42:54 GMT+0700 (Western
> Indonesia Time) | sip.invitecontext.sessionDescriptionHandler |
> SessionDescriptionHandlerOptions:
> {"peerConnectionOptions":{"rtcConfiguration":{"iceServers":[{"urls":"turn:domain_name:443?transport=tcp","username":"websip","credential":"websip"},{"urls":"turns:domain_name:80?transport=tcp","username":"websip","credential":"websip"}]},"iceCheckingTimeout":5000}}
> LoggerFactory.js:100 Mon Aug 16 2021 10:42:54 GMT+0700 (Western
> Indonesia Time) | sip.invitecontext.sessionDescriptionHandler |
> initPeerConnection
> LoggerFactory.js:100 Mon Aug 16 2021 10:42:54 GMT+0700 (Western
> Indonesia Time) | sip.invitecontext.sessionDescriptionHandler | New
> peer connection created
> LoggerFactory.js:100 Mon Aug 16 2021 10:42:54 GMT+0700 (Western
> Indonesia Time) | sip.invitecontext.sessionDescriptionHandler |
> acquiring local media
> LoggerFactory.js:100 Mon Aug 16 2021 10:42:55 GMT+0700 (Western
> Indonesia Time) | sip.invitecontext.sessionDescriptionHandler |
> acquired local media streams
> LoggerFactory.js:100 Mon Aug 16 2021 10:42:55 GMT+0700 (Western
> Indonesia Time) | sip.invitecontext.sessionDescriptionHandler |
> createOffer
> LoggerFactory.js:100 Mon Aug 16 2021 10:42:55 GMT+0700 (Western
> Indonesia Time) | sip.invitecontext.sessionDescriptionHandler |
> resetIceGatheringComplete
> LoggerFactory.js:100 Mon Aug 16 2021 10:42:55 GMT+0700 (Western
> Indonesia Time) | sip.invitecontext.sessionDescriptionHandler |
> Setting local sdp.
> LoggerFactory.js:100 Mon Aug 16 2021 10:42:55 GMT+0700 (Western
> Indonesia Time) | sip.invitecontext.sessionDescriptionHandler | sdp is v=0
> o=- 5499752371154858348 2 IN IP4 127.0.0.1
> s=-
> t=0 0
> a=group:BUNDLE 0 1
> a=extmap-allow-mixed
> a=msid-semantic: WMS 2yMfiToO0B0g0rBtLDd7vEaYmQ9PrZ0QUC9w
> m=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126
> c=IN IP4 0.0.0.0
> a=rtcp:9 IN IP4 0.0.0.0
> a=ice-ufrag:c/YU
> a=ice-pwd:7VB8/SEvBOYMyPpKgYKzOpPK
> a=ice-options:trickle
> a=fingerprint:sha-256
> 92:73:F2:E2:70:7C:43:BD:59:3A:6C:F3:7D:B9:9F:75:19:81:4C:40:0E:DA:63:D9:FF:90:60:41:49:E6:B0:9C
> a=setup:actpass
> a=mid:0
> a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
> a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
> <http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time>
> a=extmap:3
> http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
> <http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01>
> a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
> a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
> a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
> a=sendrecv
> a=msid:2yMfiToO0B0g0rBtLDd7vEaYmQ9PrZ0QUC9w
> f8941c64-0252-4ab7-b1c5-3731f47c9fd7
> a=rtcp-mux
> a=rtpmap:111 opus/48000/2
> a=rtcp-fb:111 transport-cc
> a=fmtp:111 minptime=10;useinbandfec=1
> a=rtpmap:103 ISAC/16000
> a=rtpmap:104 ISAC/32000
> a=rtpmap:9 G722/8000
> a=rtpmap:0 PCMU/8000
> a=rtpmap:8 PCMA/8000
> a=rtpmap:106 CN/32000
> a=rtpmap:105 CN/16000
> a=rtpmap:13 CN/8000
> a=rtpmap:110 telephone-event/48000
> a=rtpmap:112 telephone-event/32000
> a=rtpmap:113 telephone-event/16000
> a=rtpmap:126 telephone-event/8000
> a=ssrc:3068753223 cname:vdFflh5e6U+kdnYw
> a=ssrc:3068753223 msid:2yMfiToO0B0g0rBtLDd7vEaYmQ9PrZ0QUC9w
> f8941c64-0252-4ab7-b1c5-3731f47c9fd7
> a=ssrc:3068753223 mslabel:2yMfiToO0B0g0rBtLDd7vEaYmQ9PrZ0QUC9w
> a=ssrc:3068753223 label:f8941c64-0252-4ab7-b1c5-3731f47c9fd7
> m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 102 121 127 120 125
> 107 108 109 35 36 124 119 123 118 114 115 116
> c=IN IP4 0.0.0.0
> a=rtcp:9 IN IP4 0.0.0.0
> a=ice-ufrag:c/YU
> a=ice-pwd:7VB8/SEvBOYMyPpKgYKzOpPK
> a=ice-options:trickle
> a=fingerprint:sha-256
> 92:73:F2:E2:70:7C:43:BD:59:3A:6C:F3:7D:B9:9F:75:19:81:4C:40:0E:DA:63:D9:FF:90:60:41:49:E6:B0:9C
> a=setup:actpass
> a=mid:1
> a=extmap:14 urn:ietf:params:rtp-hdrext:toffset
> a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
> <http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time>
> a=extmap:13 urn:3gpp:video-orientation
> a=extmap:3
> http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
> <http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01>
> a=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
> <http://www.webrtc.org/experiments/rtp-hdrext/playout-delay>
> a=extmap:11
> http://www.webrtc.org/experiments/rtp-hdrext/video-content-type
> <http://www.webrtc.org/experiments/rtp-hdrext/video-content-type>
> a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing
> <http://www.webrtc.org/experiments/rtp-hdrext/video-timing>
> a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space
> <http://www.webrtc.org/experiments/rtp-hdrext/color-space>
> a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
> a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
> a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
> a=sendrecv
> a=msid:2yMfiToO0B0g0rBtLDd7vEaYmQ9PrZ0QUC9w
> 1e978692-178f-46cb-8c18-8f130343f637
> a=rtcp-mux
> a=rtcp-rsize
> a=rtpmap:96 VP8/90000
> a=rtcp-fb:96 goog-remb
> a=rtcp-fb:96 transport-cc
> a=rtcp-fb:96 ccm fir
> a=rtcp-fb:96 nack
> a=rtcp-fb:96 nack pli
> a=rtpmap:97 rtx/90000
> a=fmtp:97 apt=96
> a=rtpmap:98 VP9/90000
> a=rtcp-fb:98 goog-remb
> a=rtcp-fb:98 transport-cc
> a=rtcp-fb:98 ccm fir
> a=rtcp-fb:98 nack
> a=rtcp-fb:98 nack pli
> a=fmtp:98 profile-id=0
> a=rtpmap:99 rtx/90000
> a=fmtp:99 apt=98
> a=rtpmap:100 VP9/90000
> a=rtcp-fb:100 goog-remb
> a=rtcp-fb:100 transport-cc
> a=rtcp-fb:100 ccm fir
> a=rtcp-fb:100 nack
> a=rtcp-fb:100 nack pli
> a=fmtp:100 profile-id=2
> a=rtpmap:101 rtx/90000
> a=fmtp:101 apt=100
> a=rtpmap:102 H264/90000
> a=rtcp-fb:102 goog-remb
> a=rtcp-fb:102 transport-cc
> a=rtcp-fb:102 ccm fir
> a=rtcp-fb:102 nack
> a=rtcp-fb:102 nack pli
> a=fmtp:102
> level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f
> a=rtpmap:121 rtx/90000
> a=fmtp:121 apt=102
> a=rtpmap:127 H264/90000
> a=rtcp-fb:127 goog-remb
> a=rtcp-fb:127 transport-cc
> a=rtcp-fb:127 ccm fir
> a=rtcp-fb:127 nack
> a=rtcp-fb:127 nack pli
> a=fmtp:127
> level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f
> a=rtpmap:120 rtx/90000
> a=fmtp:120 apt=127
> a=rtpmap:125 H264/90000
> a=rtcp-fb:125 goog-remb
> a=rtcp-fb:125 transport-cc
> a=rtcp-fb:125 ccm fir
> a=rtcp-fb:125 nack
> a=rtcp-fb:125 nack pli
> a=fmtp:125
> level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
> a=rtpmap:107 rtx/90000
> a=fmtp:107 apt=125
> a=rtpmap:108 H264/90000
> a=rtcp-fb:108 goog-remb
> a=rtcp-fb:108 transport-cc
> a=rtcp-fb:108 ccm fir
> a=rtcp-fb:108 nack
> a=rtcp-fb:108 nack pli
> a=fmtp:108
> level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f
> a=rtpmap:109 rtx/90000
> a=fmtp:109 apt=108
> a=rtpmap:35 AV1X/90000
> a=rtcp-fb:35 goog-remb
> a=rtcp-fb:35 transport-cc
> a=rtcp-fb:35 ccm fir
> a=rtcp-fb:35 nack
> a=rtcp-fb:35 nack pli
> a=rtpmap:36 rtx/90000
> a=fmtp:36 apt=35
> a=rtpmap:124 H264/90000
> a=rtcp-fb:124 goog-remb
> a=rtcp-fb:124 transport-cc
> a=rtcp-fb:124 ccm fir
> a=rtcp-fb:124 nack
> a=rtcp-fb:124 nack pli
> a=fmtp:124
> level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d0032
> a=rtpmap:119 rtx/90000
> a=fmtp:119 apt=124
> a=rtpmap:123 H264/90000
> a=rtcp-fb:123 goog-remb
> a=rtcp-fb:123 transport-cc
> a=rtcp-fb:123 ccm fir
> a=rtcp-fb:123 nack
> a=rtcp-fb:123 nack pli
> a=fmtp:123
> level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=640032
> a=rtpmap:118 rtx/90000
> a=fmtp:118 apt=123
> a=rtpmap:114 red/90000
> a=rtpmap:115 rtx/90000
> a=fmtp:115 apt=114
> a=rtpmap:116 ulpfec/90000
> a=ssrc-group:FID 1593038176 4012956172
> a=ssrc:1593038176 cname:vdFflh5e6U+kdnYw
> a=ssrc:1593038176 msid:2yMfiToO0B0g0rBtLDd7vEaYmQ9PrZ0QUC9w
> 1e978692-178f-46cb-8c18-8f130343f637
> a=ssrc:1593038176 mslabel:2yMfiToO0B0g0rBtLDd7vEaYmQ9PrZ0QUC9w
> a=ssrc:1593038176 label:1e978692-178f-46cb-8c18-8f130343f637
> a=ssrc:4012956172 cname:vdFflh5e6U+kdnYw
> a=ssrc:4012956172 msid:2yMfiToO0B0g0rBtLDd7vEaYmQ9PrZ0QUC9w
> 1e978692-178f-46cb-8c18-8f130343f637
> a=ssrc:4012956172 mslabel:2yMfiToO0B0g0rBtLDd7vEaYmQ9PrZ0QUC9w
> a=ssrc:4012956172 label:1e978692-178f-46cb-8c18-8f130343f637
>
> LoggerFactory.js:100 Mon Aug 16 2021 10:42:55 GMT+0700 (Western
> Indonesia Time) | sip.invitecontext.sessionDescriptionHandler |
> waitForIceGatheringComplete
> LoggerFactory.js:100 Mon Aug 16 2021 10:42:55 GMT+0700 (Western
> Indonesia Time) | sip.invitecontext.sessionDescriptionHandler | ICE is
> not complete. Returning promise
> LoggerFactory.js:100 Mon Aug 16 2021 10:42:55 GMT+0700 (Western
> Indonesia Time) | sip.invitecontext.sessionDescriptionHandler |
> RTCIceGatheringState changed: gathering
> LoggerFactory.js:100 Mon Aug 16 2021 10:42:55 GMT+0700 (Western
> Indonesia Time) | sip.invitecontext.sessionDescriptionHandler | ICE
> candidate received: candidate:3250795810 1 udp 2122260223 10.XX.XX.XX
> 63469 typ host generation 0 ufrag c/YU network-id 2 network-cost 50
> LoggerFactory.js:100 Mon Aug 16 2021 10:42:55 GMT+0700 (Western
> Indonesia Time) | sip.invitecontext.sessionDescriptionHandler | ICE
> candidate received: candidate:211156821 1 udp 2122194687 192.XXX.X.X
> 50637 typ host generation 0 ufrag c/YU network-id 1 network-cost 10
> LoggerFactory.js:100 Mon Aug 16 2021 10:42:55 GMT+0700 (Western
> Indonesia Time) | sip.invitecontext.sessionDescriptionHandler | ICE
> candidate received: candidate:3250795810 1 udp 2122260223 10.XX.XX.XX
> 55429 typ host generation 0 ufrag c/YU network-id 2 network-cost 50
> LoggerFactory.js:100 Mon Aug 16 2021 10:42:55 GMT+0700 (Western
> Indonesia Time) | sip.invitecontext.sessionDescriptionHandler | ICE
> candidate received: candidate:211156821 1 udp 2122194687 192.XXX.X.X
> 50147 typ host generation 0 ufrag c/YU network-id 1 network-cost 10
> LoggerFactory.js:100 Mon Aug 16 2021 10:42:56 GMT+0700 (Western
> Indonesia Time) | sip.invitecontext.sessionDescriptionHandler | ICE
> candidate received: candidate:2403387858 1 tcp 1518280447 10.XX.XX.XX
> 9 typ host tcptype active generation 0 ufrag c/YU network-id 2
> network-cost 50
> LoggerFactory.js:100 Mon Aug 16 2021 10:42:56 GMT+0700 (Western
> Indonesia Time) | sip.invitecontext.sessionDescriptionHandler | ICE
> candidate received: candidate:1108738981 1 tcp 1518214911 192.XXX.X.X
> 9 typ host tcptype active generation 0 ufrag c/YU network-id 1
> network-cost 10
> LoggerFactory.js:100 Mon Aug 16 2021 10:42:56 GMT+0700 (Western
> Indonesia Time) | sip.invitecontext.sessionDescriptionHandler | ICE
> candidate received: candidate:2403387858 1 tcp 1518280447 10.XX.XX.XX
> 9 typ host tcptype active generation 0 ufrag c/YU network-id 2
> network-cost 50
> LoggerFactory.js:100 Mon Aug 16 2021 10:42:56 GMT+0700 (Western
> Indonesia Time) | sip.invitecontext.sessionDescriptionHandler | ICE
> candidate received: candidate:1108738981 1 tcp 1518214911 192.XXX.X.X
> 9 typ host tcptype active generation 0 ufrag c/YU network-id 1
> network-cost 10
> LoggerFactory.js:100 Mon Aug 16 2021 10:42:56 GMT+0700 (Western
> Indonesia Time) | sip.invitecontext.sessionDescriptionHandler |
> RTCIceGatheringState changed: complete
> LoggerFactory.js:100 Mon Aug 16 2021 10:42:56 GMT+0700 (Western
> Indonesia Time) | sip.transport | sending WebSocket message:
>
> INVITE sip:+6282311XXXXXX at domain_name SIP/2.0
> Via: SIP/2.0/WSS asv5il0mh6sc.invalid;branch=z9hG4bK4035596
> Max-Forwards: 70
> To: <sip:+6282311XXXXXX at domain_name>
> From: "webrtc" <sip:500 at domain_name>;tag=t9cuh03rp3
> Call-ID: eq07e6in98hmjs1uulas
> CSeq: 8516 INVITE
> Contact: <sip:tfqbf6kb at asv5il0mh6sc.invalid;transport=ws;ob>
> Allow: ACK,CANCEL,INVITE,MESSAGE,BYE,OPTIONS,INFO,NOTIFY,REFER
> Supported: outbound
> User-Agent: SIP.js/0.13.6
> Content-Type: application/sdp
> Content-Length: 6891
>
> v=0
> o=- 5499752371154858348 2 IN IP4 127.0.0.1
> s=-
> t=0 0
> a=group:BUNDLE 0 1
> a=extmap-allow-mixed
> a=msid-semantic: WMS 2yMfiToO0B0g0rBtLDd7vEaYmQ9PrZ0QUC9w
> m=audio 63469 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112
> 113 126
> c=IN IP4 10.XX.XX.XX
> a=rtcp:9 IN IP4 0.0.0.0
> a=candidate:3250795810 1 udp 2122260223 10.XX.XX.XX 63469 typ host
> generation 0 network-id 2 network-cost 50
> a=candidate:211156821 1 udp 2122194687 192.XXX.X.X 50637 typ host
> generation 0 network-id 1 network-cost 10
> a=candidate:2403387858 1 tcp 1518280447 10.XX.XX.XX 9 typ host tcptype
> active generation 0 network-id 2 network-cost 50
> a=candidate:1108738981 1 tcp 1518214911 192.XXX.X.X 9 typ host tcptype
> active generation 0 network-id 1 network-cost 10
> a=ice-ufrag:c/YU
> a=ice-pwd:7VB8/SEvBOYMyPpKgYKzOpPK
> a=ice-options:trickle
> a=fingerprint:sha-256
> 92:73:F2:E2:70:7C:43:BD:59:3A:6C:F3:7D:B9:9F:75:19:81:4C:40:0E:DA:63:D9:FF:90:60:41:49:E6:B0:9C
> a=setup:actpass
> a=mid:0
> a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
> a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
> <http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time>
> a=extmap:3
> http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
> <http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01>
> a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
> a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
> a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
> a=sendrecv
> a=msid:2yMfiToO0B0g0rBtLDd7vEaYmQ9PrZ0QUC9w
> f8941c64-0252-4ab7-b1c5-3731f47c9fd7
> a=rtcp-mux
> a=rtpmap:111 opus/48000/2
> a=rtcp-fb:111 transport-cc
> a=fmtp:111 minptime=10;useinbandfec=1
> a=rtpmap:103 ISAC/16000
> a=rtpmap:104 ISAC/32000
> a=rtpmap:9 G722/8000
> a=rtpmap:0 PCMU/8000
> a=rtpmap:8 PCMA/8000
> a=rtpmap:106 CN/32000
> a=rtpmap:105 CN/16000
> a=rtpmap:13 CN/8000
> a=rtpmap:110 telephone-event/48000
> a=rtpmap:112 telephone-event/32000
> a=rtpmap:113 telephone-event/16000
> a=rtpmap:126 telephone-event/8000
> a=ssrc:3068753223 cname:vdFflh5e6U+kdnYw
> a=ssrc:3068753223 msid:2yMfiToO0B0g0rBtLDd7vEaYmQ9PrZ0QUC9w
> f8941c64-0252-4ab7-b1c5-3731f47c9fd7
> a=ssrc:3068753223 mslabel:2yMfiToO0B0g0rBtLDd7vEaYmQ9PrZ0QUC9w
> a=ssrc:3068753223 label:f8941c64-0252-4ab7-b1c5-3731f47c9fd7
> m=video 55429 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 102 121 127 120
> 125 107 108 109 35 36 124 119 123 118 114 115 116
> c=IN IP4 10.XX.XX.XX
> a=rtcp:9 IN IP4 0.0.0.0
> a=candidate:3250795810 1 udp 2122260223 10.XX.XX.XX 55429 typ host
> generation 0 network-id 2 network-cost 50
> a=candidate:211156821 1 udp 2122194687 192.XXX.X.X 50147 typ host
> generation 0 network-id 1 network-cost 10
> a=candidate:2403387858 1 tcp 1518280447 10.XX.XX.XX 9 typ host tcptype
> active generation 0 network-id 2 network-cost 50
> a=candidate:1108738981 1 tcp 1518214911 192.XXX.X.X 9 typ host tcptype
> active generation 0 network-id 1 network-cost 10
> a=ice-ufrag:c/YU
> a=ice-pwd:7VB8/SEvBOYMyPpKgYKzOpPK
> a=ice-options:trickle
> a=fingerprint:sha-256
> 92:73:F2:E2:70:7C:43:BD:59:3A:6C:F3:7D:B9:9F:75:19:81:4C:40:0E:DA:63:D9:FF:90:60:41:49:E6:B0:9C
> a=setup:actpass
> a=mid:1
> a=extmap:14 urn:ietf:params:rtp-hdrext:toffset
> a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
> <http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time>
> a=extmap:13 urn:3gpp:video-orientation
> a=extmap:3
> http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
> <http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01>
> a=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
> <http://www.webrtc.org/experiments/rtp-hdrext/playout-delay>
> a=extmap:11
> http://www.webrtc.org/experiments/rtp-hdrext/video-content-type
> <http://www.webrtc.org/experiments/rtp-hdrext/video-content-type>
> a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing
> <http://www.webrtc.org/experiments/rtp-hdrext/video-timing>
> a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space
> <http://www.webrtc.org/experiments/rtp-hdrext/color-space>
> a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
> a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
> a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
> a=sendrecv
> a=msid:2yMfiToO0B0g0rBtLDd7vEaYmQ9PrZ0QUC9w
> 1e978692-178f-46cb-8c18-8f130343f637
> a=rtcp-mux
> a=rtcp-rsize
> a=rtpmap:96 VP8/90000
> a=rtcp-fb:96 goog-remb
> a=rtcp-fb:96 transport-cc
> a=rtcp-fb:96 ccm fir
> a=rtcp-fb:96 nack
> a=rtcp-fb:96 nack pli
> a=rtpmap:97 rtx/90000
> a=fmtp:97 apt=96
> a=rtpmap:98 VP9/90000
> a=rtcp-fb:98 goog-remb
> a=rtcp-fb:98 transport-cc
> a=rtcp-fb:98 ccm fir
> a=rtcp-fb:98 nack
> a=rtcp-fb:98 nack pli
> a=fmtp:98 profile-id=0
> a=rtpmap:99 rtx/90000
> a=fmtp:99 apt=98
> a=rtpmap:100 VP9/90000
> a=rtcp-fb:100 goog-remb
> a=rtcp-fb:100 transport-cc
> a=rtcp-fb:100 ccm fir
> a=rtcp-fb:100 nack
> a=rtcp-fb:100 nack pli
> a=fmtp:100 profile-id=2
> a=rtpmap:101 rtx/90000
> a=fmtp:101 apt=100
> a=rtpmap:102 H264/90000
> a=rtcp-fb:102 goog-remb
> a=rtcp-fb:102 transport-cc
> a=rtcp-fb:102 ccm fir
> a=rtcp-fb:102 nack
> a=rtcp-fb:102 nack pli
> a=fmtp:102
> level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f
> a=rtpmap:121 rtx/90000
> a=fmtp:121 apt=102
> a=rtpmap:127 H264/90000
> a=rtcp-fb:127 goog-remb
> a=rtcp-fb:127 transport-cc
> a=rtcp-fb:127 ccm fir
> a=rtcp-fb:127 nack
> a=rtcp-fb:127 nack pli
> a=fmtp:127
> level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f
> a=rtpmap:120 rtx/90000
> a=fmtp:120 apt=127
> a=rtpmap:125 H264/90000
> a=rtcp-fb:125 goog-remb
> a=rtcp-fb:125 transport-cc
> a=rtcp-fb:125 ccm fir
> a=rtcp-fb:125 nack
> a=rtcp-fb:125 nack pli
> a=fmtp:125
> level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
> a=rtpmap:107 rtx/90000
> a=fmtp:107 apt=125
> a=rtpmap:108 H264/90000
> a=rtcp-fb:108 goog-remb
> a=rtcp-fb:108 transport-cc
> a=rtcp-fb:108 ccm fir
> a=rtcp-fb:108 nack
> a=rtcp-fb:108 nack pli
> a=fmtp:108
> level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f
> a=rtpmap:109 rtx/90000
> a=fmtp:109 apt=108
> a=rtpmap:35 AV1X/90000
> a=rtcp-fb:35 goog-remb
> a=rtcp-fb:35 transport-cc
> a=rtcp-fb:35 ccm fir
> a=rtcp-fb:35 nack
> a=rtcp-fb:35 nack pli
> a=rtpmap:36 rtx/90000
> a=fmtp:36 apt=35
> a=rtpmap:124 H264/90000
> a=rtcp-fb:124 goog-remb
> a=rtcp-fb:124 transport-cc
> a=rtcp-fb:124 ccm fir
> a=rtcp-fb:124 nack
> a=rtcp-fb:124 nack pli
> a=fmtp:124
> level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d0032
> a=rtpmap:119 rtx/90000
> a=fmtp:119 apt=124
> a=rtpmap:123 H264/90000
> a=rtcp-fb:123 goog-remb
> a=rtcp-fb:123 transport-cc
> a=rtcp-fb:123 ccm fir
> a=rtcp-fb:123 nack
> a=rtcp-fb:123 nack pli
> a=fmtp:123
> level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=640032
> a=rtpmap:118 rtx/90000
> a=fmtp:118 apt=123
> a=rtpmap:114 red/90000
> a=rtpmap:115 rtx/90000
> a=fmtp:115 apt=114
> a=rtpmap:116 ulpfec/90000
> a=ssrc-group:FID 1593038176 4012956172
> a=ssrc:1593038176 cname:vdFflh5e6U+kdnYw
> a=ssrc:1593038176 msid:2yMfiToO0B0g0rBtLDd7vEaYmQ9PrZ0QUC9w
> 1e978692-178f-46cb-8c18-8f130343f637
> a=ssrc:1593038176 mslabel:2yMfiToO0B0g0rBtLDd7vEaYmQ9PrZ0QUC9w
> a=ssrc:1593038176 label:1e978692-178f-46cb-8c18-8f130343f637
> a=ssrc:4012956172 cname:vdFflh5e6U+kdnYw
> a=ssrc:4012956172 msid:2yMfiToO0B0g0rBtLDd7vEaYmQ9PrZ0QUC9w
> 1e978692-178f-46cb-8c18-8f130343f637
> a=ssrc:4012956172 mslabel:2yMfiToO0B0g0rBtLDd7vEaYmQ9PrZ0QUC9w
> a=ssrc:4012956172 label:1e978692-178f-46cb-8c18-8f130343f637
>
>
> LoggerFactory.js:100 Mon Aug 16 2021 10:42:56 GMT+0700 (Western
> Indonesia Time) | sip.invitecontext.sessionDescriptionHandler | ICE
> candidate gathering complete
> LoggerFactory.js:100 Mon Aug 16 2021 10:42:56 GMT+0700 (Western
> Indonesia Time) | sip.transport | received WebSocket text message:
>
> SIP/2.0 407 Proxy Authentication Required
> Via: SIP/2.0/WSS
> asv5il0mh6sc.invalid;branch=z9hG4bK4035596;rport=43402;received=127.0.0.1
> To:
> <sip:+6282311XXXXXX at domain_name>;tag=a2d3384ccaf3d0890b1d994026562a34.429c0000
> From: "webrtc" <sip:500 at domain_name>;tag=t9cuh03rp3
> Call-ID: eq07e6in98hmjs1uulas
> CSeq: 8516 INVITE
> Proxy-Authenticate: Digest realm="domain_name",
> nonce="YRnf9GEZ3shCY5HMSWfzE6ctJ5ig1Kd7"
> Server: kamailio (5.5.0 (x86_64/linux))
> Content-Length: 0
>
>
>
> LoggerFactory.js:100 Mon Aug 16 2021 10:42:56 GMT+0700 (Western
> Indonesia Time) | sip.transport | sending WebSocket message:
>
> ACK sip:+6282311XXXXXX at domain_name SIP/2.0
> Via: SIP/2.0/WSS asv5il0mh6sc.invalid;branch=z9hG4bK7163476
> Max-Forwards: 70
> To:
> <sip:+6282311XXXXXX at domain_name>;tag=a2d3384ccaf3d0890b1d994026562a34.429c0000
> From: "webrtc" <sip:500 at domain_name>;tag=t9cuh03rp3
> Call-ID: eq07e6in98hmjs1uulas
> CSeq: 8516 ACK
> Supported: outbound
> User-Agent: SIP.js/0.13.6
> Content-Length: 0
>
>
>
> LoggerFactory.js:100 Mon Aug 16 2021 10:42:56 GMT+0700 (Western
> Indonesia Time) | sip.transport | sending WebSocket message:
>
> INVITE sip:+6282311XXXXXX at domain_name SIP/2.0
> Via: SIP/2.0/WSS asv5il0mh6sc.invalid;branch=z9hG4bK6711062
> Max-Forwards: 70
> To: <sip:+6282311XXXXXX at domain_name>
> From: "webrtc" <sip:500 at domain_name>;tag=t9cuh03rp3
> Call-ID: eq07e6in98hmjs1uulas
> CSeq: 8517 INVITE
> Proxy-Authorization: Digest algorithm=MD5, username="500",
> realm="domain_name", nonce="YRnf9GEZ3shCY5HMSWfzE6ctJ5ig1Kd7",
> uri="sip:+6282311XXXXXX at domain_name",
> response="da7c3cf9c21d8aa85f72c5e723f8d42c"
> Contact: <sip:tfqbf6kb at asv5il0mh6sc.invalid;transport=ws;ob>
> Allow: ACK,CANCEL,INVITE,MESSAGE,BYE,OPTIONS,INFO,NOTIFY,REFER
> Supported: outbound
> User-Agent: SIP.js/0.13.6
> Content-Type: application/sdp
> Content-Length: 6891
>
> v=0
> o=- 5499752371154858348 2 IN IP4 127.0.0.1
> s=-
> t=0 0
> a=group:BUNDLE 0 1
> a=extmap-allow-mixed
> a=msid-semantic: WMS 2yMfiToO0B0g0rBtLDd7vEaYmQ9PrZ0QUC9w
> m=audio 63469 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112
> 113 126
> c=IN IP4 10.XX.XX.XX
> a=rtcp:9 IN IP4 0.0.0.0
> a=candidate:3250795810 1 udp 2122260223 10.XX.XX.XX 63469 typ host
> generation 0 network-id 2 network-cost 50
> a=candidate:211156821 1 udp 2122194687 192.XXX.X.X 50637 typ host
> generation 0 network-id 1 network-cost 10
> a=candidate:2403387858 1 tcp 1518280447 10.XX.XX.XX 9 typ host tcptype
> active generation 0 network-id 2 network-cost 50
> a=candidate:1108738981 1 tcp 1518214911 192.XXX.X.X 9 typ host tcptype
> active generation 0 network-id 1 network-cost 10
> a=ice-ufrag:c/YU
> a=ice-pwd:7VB8/SEvBOYMyPpKgYKzOpPK
> a=ice-options:trickle
> a=fingerprint:sha-256
> 92:73:F2:E2:70:7C:43:BD:59:3A:6C:F3:7D:B9:9F:75:19:81:4C:40:0E:DA:63:D9:FF:90:60:41:49:E6:B0:9C
> a=setup:actpass
> a=mid:0
> a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
> a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
> <http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time>
> a=extmap:3
> http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
> <http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01>
> a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
> a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
> a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
> a=sendrecv
> a=msid:2yMfiToO0B0g0rBtLDd7vEaYmQ9PrZ0QUC9w
> f8941c64-0252-4ab7-b1c5-3731f47c9fd7
> a=rtcp-mux
> a=rtpmap:111 opus/48000/2
> a=rtcp-fb:111 transport-cc
> a=fmtp:111 minptime=10;useinbandfec=1
> a=rtpmap:103 ISAC/16000
> a=rtpmap:104 ISAC/32000
> a=rtpmap:9 G722/8000
> a=rtpmap:0 PCMU/8000
> a=rtpmap:8 PCMA/8000
> a=rtpmap:106 CN/32000
> a=rtpmap:105 CN/16000
> a=rtpmap:13 CN/8000
> a=rtpmap:110 telephone-event/48000
> a=rtpmap:112 telephone-event/32000
> a=rtpmap:113 telephone-event/16000
> a=rtpmap:126 telephone-event/8000
> a=ssrc:3068753223 cname:vdFflh5e6U+kdnYw
> a=ssrc:3068753223 msid:2yMfiToO0B0g0rBtLDd7vEaYmQ9PrZ0QUC9w
> f8941c64-0252-4ab7-b1c5-3731f47c9fd7
> a=ssrc:3068753223 mslabel:2yMfiToO0B0g0rBtLDd7vEaYmQ9PrZ0QUC9w
> a=ssrc:3068753223 label:f8941c64-0252-4ab7-b1c5-3731f47c9fd7
> m=video 55429 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 102 121 127 120
> 125 107 108 109 35 36 124 119 123 118 114 115 116
> c=IN IP4 10.XX.XX.XX
> a=rtcp:9 IN IP4 0.0.0.0
> a=candidate:3250795810 1 udp 2122260223 10.XX.XX.XX 55429 typ host
> generation 0 network-id 2 network-cost 50
> a=candidate:211156821 1 udp 2122194687 192.XXX.X.X 50147 typ host
> generation 0 network-id 1 network-cost 10
> a=candidate:2403387858 1 tcp 1518280447 10.XX.XX.XX 9 typ host tcptype
> active generation 0 network-id 2 network-cost 50
> a=candidate:1108738981 1 tcp 1518214911 192.XXX.X.X 9 typ host tcptype
> active generation 0 network-id 1 network-cost 10
> a=ice-ufrag:c/YU
> a=ice-pwd:7VB8/SEvBOYMyPpKgYKzOpPK
> a=ice-options:trickle
> a=fingerprint:sha-256
> 92:73:F2:E2:70:7C:43:BD:59:3A:6C:F3:7D:B9:9F:75:19:81:4C:40:0E:DA:63:D9:FF:90:60:41:49:E6:B0:9C
> a=setup:actpass
> a=mid:1
> a=extmap:14 urn:ietf:params:rtp-hdrext:toffset
> a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
> <http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time>
> a=extmap:13 urn:3gpp:video-orientation
> a=extmap:3
> http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
> <http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01>
> a=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
> <http://www.webrtc.org/experiments/rtp-hdrext/playout-delay>
> a=extmap:11
> http://www.webrtc.org/experiments/rtp-hdrext/video-content-type
> <http://www.webrtc.org/experiments/rtp-hdrext/video-content-type>
> a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing
> <http://www.webrtc.org/experiments/rtp-hdrext/video-timing>
> a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space
> <http://www.webrtc.org/experiments/rtp-hdrext/color-space>
> a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
> a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
> a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
> a=sendrecv
> a=msid:2yMfiToO0B0g0rBtLDd7vEaYmQ9PrZ0QUC9w
> 1e978692-178f-46cb-8c18-8f130343f637
> a=rtcp-mux
> a=rtcp-rsize
> a=rtpmap:96 VP8/90000
> a=rtcp-fb:96 goog-remb
> a=rtcp-fb:96 transport-cc
> a=rtcp-fb:96 ccm fir
> a=rtcp-fb:96 nack
> a=rtcp-fb:96 nack pli
> a=rtpmap:97 rtx/90000
> a=fmtp:97 apt=96
> a=rtpmap:98 VP9/90000
> a=rtcp-fb:98 goog-remb
> a=rtcp-fb:98 transport-cc
> a=rtcp-fb:98 ccm fir
> a=rtcp-fb:98 nack
> a=rtcp-fb:98 nack pli
> a=fmtp:98 profile-id=0
> a=rtpmap:99 rtx/90000
> a=fmtp:99 apt=98
> a=rtpmap:100 VP9/90000
> a=rtcp-fb:100 goog-remb
> a=rtcp-fb:100 transport-cc
> a=rtcp-fb:100 ccm fir
> a=rtcp-fb:100 nack
> a=rtcp-fb:100 nack pli
> a=fmtp:100 profile-id=2
> a=rtpmap:101 rtx/90000
> a=fmtp:101 apt=100
> a=rtpmap:102 H264/90000
> a=rtcp-fb:102 goog-remb
> a=rtcp-fb:102 transport-cc
> a=rtcp-fb:102 ccm fir
> a=rtcp-fb:102 nack
> a=rtcp-fb:102 nack pli
> a=fmtp:102
> level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f
> a=rtpmap:121 rtx/90000
> a=fmtp:121 apt=102
> a=rtpmap:127 H264/90000
> a=rtcp-fb:127 goog-remb
> a=rtcp-fb:127 transport-cc
> a=rtcp-fb:127 ccm fir
> a=rtcp-fb:127 nack
> a=rtcp-fb:127 nack pli
> a=fmtp:127
> level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f
> a=rtpmap:120 rtx/90000
> a=fmtp:120 apt=127
> a=rtpmap:125 H264/90000
> a=rtcp-fb:125 goog-remb
> a=rtcp-fb:125 transport-cc
> a=rtcp-fb:125 ccm fir
> a=rtcp-fb:125 nack
> a=rtcp-fb:125 nack pli
> a=fmtp:125
> level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
> a=rtpmap:107 rtx/90000
> a=fmtp:107 apt=125
> a=rtpmap:108 H264/90000
> a=rtcp-fb:108 goog-remb
> a=rtcp-fb:108 transport-cc
> a=rtcp-fb:108 ccm fir
> a=rtcp-fb:108 nack
> a=rtcp-fb:108 nack pli
> a=fmtp:108
> level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f
> a=rtpmap:109 rtx/90000
> a=fmtp:109 apt=108
> a=rtpmap:35 AV1X/90000
> a=rtcp-fb:35 goog-remb
> a=rtcp-fb:35 transport-cc
> a=rtcp-fb:35 ccm fir
> a=rtcp-fb:35 nack
> a=rtcp-fb:35 nack pli
> a=rtpmap:36 rtx/90000
> a=fmtp:36 apt=35
> a=rtpmap:124 H264/90000
> a=rtcp-fb:124 goog-remb
> a=rtcp-fb:124 transport-cc
> a=rtcp-fb:124 ccm fir
> a=rtcp-fb:124 nack
> a=rtcp-fb:124 nack pli
> a=fmtp:124
> level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d0032
> a=rtpmap:119 rtx/90000
> a=fmtp:119 apt=124
> a=rtpmap:123 H264/90000
> a=rtcp-fb:123 goog-remb
> a=rtcp-fb:123 transport-cc
> a=rtcp-fb:123 ccm fir
> a=rtcp-fb:123 nack
> a=rtcp-fb:123 nack pli
> a=fmtp:123
> level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=640032
> a=rtpmap:118 rtx/90000
> a=fmtp:118 apt=123
> a=rtpmap:114 red/90000
> a=rtpmap:115 rtx/90000
> a=fmtp:115 apt=114
> a=rtpmap:116 ulpfec/90000
> a=ssrc-group:FID 1593038176 4012956172
> a=ssrc:1593038176 cname:vdFflh5e6U+kdnYw
> a=ssrc:1593038176 msid:2yMfiToO0B0g0rBtLDd7vEaYmQ9PrZ0QUC9w
> 1e978692-178f-46cb-8c18-8f130343f637
> a=ssrc:1593038176 mslabel:2yMfiToO0B0g0rBtLDd7vEaYmQ9PrZ0QUC9w
> a=ssrc:1593038176 label:1e978692-178f-46cb-8c18-8f130343f637
> a=ssrc:4012956172 cname:vdFflh5e6U+kdnYw
> a=ssrc:4012956172 msid:2yMfiToO0B0g0rBtLDd7vEaYmQ9PrZ0QUC9w
> 1e978692-178f-46cb-8c18-8f130343f637
> a=ssrc:4012956172 mslabel:2yMfiToO0B0g0rBtLDd7vEaYmQ9PrZ0QUC9w
> a=ssrc:4012956172 label:1e978692-178f-46cb-8c18-8f130343f637
>
>
> LoggerFactory.js:100 Mon Aug 16 2021 10:42:56 GMT+0700 (Western
> Indonesia Time) | sip.transport | received WebSocket text message:
>
> SIP/2.0 100 trying -- your call is important to us
> Via: SIP/2.0/WSS
> asv5il0mh6sc.invalid;branch=z9hG4bK6711062;rport=43402;received=127.0.0.1
> To: <sip:+6282311XXXXXX at domain_name>
> From: "webrtc" <sip:500 at domain_name>;tag=t9cuh03rp3
> Call-ID: eq07e6in98hmjs1uulas
> CSeq: 8517 INVITE
> Server: kamailio (5.5.0 (x86_64/linux))
> Content-Length: 0
>
>
>
> LoggerFactory.js:100 Mon Aug 16 2021 10:42:56 GMT+0700 (Western
> Indonesia Time) | sip.invitecontext.sessionDescriptionHandler | ICE
> Connection State changed to iceConnectionChecking
> LoggerFactory.js:100 Mon Aug 16 2021 10:42:56 GMT+0700 (Western
> Indonesia Time) | sip.transport | received WebSocket text message:
>
> SIP/2.0 500 Server Internal Error
> Via: SIP/2.0/WSS
> asv5il0mh6sc.invalid;branch=z9hG4bK6711062;received=127.0.0.1;rport=43402
> Call-ID: eq07e6in98hmjs1uulas
> From: "webrtc"<sip:500 at domain_name>;tag=t9cuh03rp3
> To: <sip:+6282311XXXXXX at domain_name>;tag=23r36zzp
> CSeq: 8517 INVITE
> Warning: 399 03077.08860.B.005.422.228.0.15.01039.00000000.00000 "SDP
> body length beyond limit"
> Content-Length: 0
>
>
>
> LoggerFactory.js:100 Mon Aug 16 2021 10:42:56 GMT+0700 (Western
> Indonesia Time) | sip.transport | sending WebSocket message:
>
> ACK sip:+6282311XXXXXX at domain_name SIP/2.0
> Via: SIP/2.0/WSS asv5il0mh6sc.invalid;branch=z9hG4bK2860365
> Max-Forwards: 70
> To: <sip:+6282311XXXXXX at domain_name>;tag=23r36zzp
> From: "webrtc" <sip:500 at domain_name>;tag=t9cuh03rp3
> Call-ID: eq07e6in98hmjs1uulas
> CSeq: 8517 ACK
> Supported: outbound
> User-Agent: SIP.js/0.13.6
> Content-Length: 0
>
>
>
> LoggerFactory.js:100 Mon Aug 16 2021 10:42:56 GMT+0700 (Western
> Indonesia Time) | sip.inviteclientcontext | closing INVITE session
> eq07e6in98hmjs1uulast9cuh03rp3
> LoggerFactory.js:100 Mon Aug 16 2021 10:42:56 GMT+0700 (Western
> Indonesia Time) | sip.invitecontext.sessionDescriptionHandler |
> closing PeerConnection
> LoggerFactory.js:100 Mon Aug 16 2021 10:42:56 GMT+0700 (Western
> Indonesia Time) | sip.invitecontext.sessionDescriptionHandler |
> resetIceGatheringComplete
>
>
>
>
>
> and this is config of kamailio.cfg
>
> #!KAMAILIO
> #
>
> #!define WITH_MYSQL
> #!define WITH_AUTH
> #!define WITH_USRLOCDB
> #!define WITH_TLS
> #!define WITH_HOMER
> #!define WITH_WEBSOCKETS
> #!define WITH_ANTIFLOOD
> ##!define WITH_IPV6
> ##!define WITH_BRIDGE_ON_FAIL
> #!define WITH_LOCALHOST_WS
> ##!define WITH_LOCALHOST_SIP
> #!define WITH_PSTN
>
> #!substdef "!MY_SIP_PORT!5060!g"
> #!substdef "!MY_SIPS_PORT!5061!g"
> #!substdef "!MY_WS_PORT!8080!g"
> #!substdef "!MY_WSS_PORT!4443!g"
>
> #!substdef "!MY_IP4_ADDR!IP-SERVER!g"
> #!substdef "!IP4_LOCALHOST!127.0.0.1!g"
> #!substdef "!MY_WS4_ADDR!tcp:MY_IP4_ADDR:MY_WS_PORT!g"
> #!substdef "!MY_WSS4_ADDR!tls:MY_IP4_ADDR:MY_WSS_PORT!g"
> #!substdef "!LOCALHOST_WS4_ADDR!tcp:IP4_LOCALHOST:MY_WS_PORT!g"
> #!substdef "!LOCALHOST_WSS4_ADDR!tls:IP4_LOCALHOST:MY_WSS_PORT!g"
>
> #!ifdef WITH_IPV6
> #!substdef "!MY_IP6_ADDR![IPv6-SERVER]!g"
> #!substdef "!IP6_LOCALHOST![::1]!g"
> #!substdef "!MY_WS6_ADDR!tcp:MY_IP6_ADDR:MY_WS_PORT!g"
> #!substdef "!MY_WSS6_ADDR!tls:MY_IP6_ADDR:MY_WSS_PORT!g"
> #!substdef "!LOCALHOST_WS6_ADDR!tcp:IP6_LOCALHOST:MY_WS_PORT!g"
> #!substdef "!LOCALHOST_WSS6_ADDR!tls:IP6_LOCALHOST:MY_WSS_PORT!g"
> #!endif
>
> #!substdef "!MY_DOMAIN!DOMAIN-NAME!g"
>
> # *** Value defines - IDs used later in config
> #!ifdef WITH_MYSQL
> # - database URL - used to connect to database server by modules such
> # as: auth_db, acc, usrloc, a.s.o.
> #!ifndef DBURL
> #!define DBURL "mysql://kamailio:kamailiorw@localhost/kamailio"
> #!endif
> #!endif
>
> # - flags
> # FLT_ - per transaction (message) flags
> # FLB_ - per branch flags
> #!define FLT_NATS 5
>
> #!define FLB_NATB 6
> #!define FLB_NATSIPPING 7
> #!define FLB_RTPWS 8
> #!define FLB_IPV6 9
> #!define FLB_V4V6 10
> #!define FLB_BRIDGE 11
>
> ####### Global Parameters #########
>
> ### LOG Levels: 3=DBG, 2=INFO, 1=NOTICE, 0=WARN, -1=ERR
> #!ifdef WITH_DEBUG
> debug=4
> log_stderror=no
> #!else
> debug=2
> log_stderror=no
> #!endif
>
> memdbg=5
> memlog=5
>
> log_facility=LOG_LOCAL0
>
> fork=yes
> children=4
>
> port=MY_SIP_PORT
> tls_port_no=MY_SIPS_PORT
>
> #!ifdef WITH_TLS
> enable_tls=yes
> #!endif
>
>
> listen=MY_IP4_ADDR
> #!ifdef WITH_LOCALHOST_SIP
> listen=IP4_LOCALHOST
> #!endif
> #!ifdef WITH_IPV6
> listen=MY_IP6_ADDR
> #!ifdef WITH_LOCALHOST_SIP
> listen=IP6_LOCALHOST
> #!endif
> #!endif
>
> #!ifdef WITH_WEBSOCKETS
> listen=MY_WS4_ADDR
> #!ifdef WITH_LOCALHOST_WS
> listen=LOCALHOST_WS4_ADDR
> #!endif
> #!ifdef WITH_IPV6
> listen=MY_WS6_ADDR
> #!ifdef WITH_LOCALHOST_WS
> listen=LOCALHOST_WS6_ADDR
> #!endif
> #!endif
> #!ifdef WITH_TLS
> listen=MY_WSS4_ADDR
> #!ifdef WITH_LOCALHOST_WS
> listen=LOCALHOST_WSS4_ADDR
> #!endif
> #!ifdef WITH_IPV6
> listen=MY_WSS6_ADDR
> #!ifdef WITH_LOCALHOST_WS
> listen=LOCALHOST_WSS6_ADDR
> #!endif
> #!endif
> #!endif
> #!endif
>
> use_dns_cache = on # Use KAMAILIO internal DNS cache
> use_dns_failover = on # Depends on KAMAILIO internal DNS cache
> dns_srv_loadbalancing = on #
> dns_try_naptr = on #
> dns_retr_time=1 # Time in seconds before retrying a DNS request
> dns_retr_no=3 # Number of DNS retransmissions before giving up
>
> # Set protocol preference order - ignore target priority
> dns_naptr_ignore_rfc= yes # Ignore target NAPTR priority
> dns_tls_pref=50 # First priority: TLS
> dns_tcp_pref=30 # Second priority: TCP
> dns_udp_pref=10 # Third priority: UDP
>
> tcp_connection_lifetime=3604
> tcp_accept_no_cl=yes
> tcp_rd_buf_size=16384
>
>
> #!ifdef WITH_PSTN
> /* PSTN GW Routing
>  *
>  * - pstn.gw_ip: valid IP or hostname as string value, example:
>  * pstn.gw_ip = "10.0.0.101" desc "My PSTN GW Address"
>  *
>  * - by default is empty to avoid misrouting */
>
> pstn.gw_ip = "IP-SIP-TRUNK-SERVER"
> pstn.gw_port = "5060"
>
> #!endif
>
>
> # set paths to location of modules (to sources or installation folders)
> #!ifdef WITH_SRCPATH
> mpath="modules/"
> #!else
> mpath="/usr/lib64/kamailio/modules/"
> #!endif
>
> #!ifdef WITH_MYSQL
> loadmodule "db_mysql.so"
> #!endif
>
> loadmodule "kex.so"
> loadmodule "corex.so"
> loadmodule "tm.so"
> loadmodule "tmx.so"
> loadmodule "sl.so"
> loadmodule "rr.so"
> loadmodule "pv.so"
> loadmodule "maxfwd.so"
> loadmodule "usrloc.so"
> loadmodule "registrar.so"
> loadmodule "textops.so"
> loadmodule "siputils.so"
> loadmodule "xlog.so"
> loadmodule "sanity.so"
> loadmodule "ctl.so"
> loadmodule "cfg_rpc.so"
> loadmodule "sdpops.so"
> loadmodule "textopsx.so"
>
> #!ifdef WITH_AUTH
> loadmodule "auth.so"
> loadmodule "auth_db.so"
> #!ifdef WITH_IPAUTH
> loadmodule "permissions.so"
> #!endif
> #!endif
>
> #!ifdef WITH_PRESENCE
> loadmodule "presence.so"
> loadmodule "presence_xml.so"
> #!endif
>
> #!ifdef WITH_TLS
> loadmodule "tls.so"
> #!endif
>
> #!ifdef WITH_HOMER
> loadmodule "siptrace.so"
> #!endif
>
> #!ifdef WITH_WEBSOCKETS
> loadmodule "xhttp.so"
> loadmodule "websocket.so"
> loadmodule "nathelper.so"
> loadmodule "rtpengine.so"
> #!endif
>
> #!ifdef WITH_ANTIFLOOD
> loadmodule "htable.so"
> loadmodule "pike.so"
> #!endif
>
> #!ifdef WITH_DEBUG
> loadmodule "debugger.so"
> #!endif
>
> # ----------------- setting module-specific parameters ---------------
>
>
> # ----- rr params -----
> # add value to ;lr param to cope with most of the UAs
> modparam("rr", "enable_full_lr", 1)
> # do not append from tag to the RR (no need for this script)
> modparam("rr", "append_fromtag", 0)
>
>
> # ----- registrar params -----
> modparam("registrar", "method_filtering", 1)
> # max value for expires of registrations
> modparam("registrar", "max_expires", 3600)
>
>
> # ----- usrloc params -----
> /* enable DB persistency for location entries */
> #!ifdef WITH_USRLOCDB
> modparam("usrloc", "db_url", DBURL)
> modparam("usrloc", "db_mode", 2)
> #!endif
>
>
> # ----- auth_db params -----
> #!ifdef WITH_AUTH
> modparam("auth_db", "db_url", DBURL)
> modparam("auth_db", "calculate_ha1", 1)
> modparam("auth_db", "password_column", "password")
> modparam("auth_db", "load_credentials", "")
> #!endif
>
> #!ifdef WITH_PRESENCE
> # ----- presence params -----
> modparam("presence", "db_url", DBURL)
>
> # ----- presence_xml params -----
> modparam("presence_xml", "db_url", DBURL)
> modparam("presence_xml", "force_active", 1)
> #!endif
>
>
> ##!ifdef WITH_NAT
> # ----- rtpproxy params -----
> modparam("rtpengine", "rtpengine_sock", "udp:127.0.0.1:22222
> <http://127.0.0.1:22222>")
> modparam("rtpengine", "extra_id_pv", "$avp(extra_id)")
>
> # ----- nathelper params -----
> modparam("nathelper", "natping_interval", 30)
> modparam("nathelper", "ping_nated_only", 1)
> modparam("nathelper", "sipping_bflag", FLB_NATSIPPING)
> modparam("nathelper", "sipping_from", "sip:pinger at DOMAIN-NAME")
> modparam("nathelper|registrar", "received_avp", "$avp(RECEIVED)")
> modparam("usrloc", "nat_bflag", FLB_NATB)
> ##!endif
>
> # ----- corex params -----
> modparam("corex", "alias_subdomains", "MY_DOMAIN")
>
> #!ifdef WITH_TLS
> # ----- tls params -----
> modparam("tls", "config", "/etc/kamailio/tls.cfg")
> modparam("tls", "tls_force_run", 1)
> #!endif
>
> #!ifdef WITH_WEBSOCKETS
> modparam("nathelper|registrar", "received_avp", "$avp(RECEIVED)")
> #!endif
>
> #!ifdef WITH_HOMER
> #Siptrace
> modparam("siptrace", "duplicate_uri", "sip:127.0.0.1:9060
> <http://127.0.0.1:9060>")
> modparam("siptrace", "hep_mode_on", 1)
> modparam("siptrace", "trace_to_database", 0)
> modparam("siptrace", "trace_flag", 22)
> modparam("siptrace", "trace_on", 1)
> #!endif
>
> #!ifdef WITH_ANTIFLOOD
> # ----- pike params -----
> modparam("pike", "sampling_time_unit", 2)
> modparam("pike", "reqs_density_per_unit", 16)
> modparam("pike", "remove_latency", 4)
>
> # ----- htable params -----
> # ip ban htable with autoexpire after 5 minutes
> modparam("htable", "htable", "ipban=>size=8;autoexpire=300;")
> #!endif
>
> #!ifdef WITH_DEBUG
> # ----- debugger params -----
> modparam("debugger", "cfgtrace", 1)
> #!endif
>
> ####### Routing Logic ########
> request_route {
> #!ifdef WITH_HOMER
> # start duplicate the SIP message here
> sip_trace();
> setflag(22);
> #!endif
>
> # per request initial checks
> route(REQINIT);
>
> xlog("L_INFO", "START: $rm from $fu (IP:$si:$sp)\n");
>
> #!ifdef WITH_WEBSOCKETS
>
> if ($proto =~ "ws") {
> xlog("L_INFO", "START WEBSOCKET : $rm from $fu (IP:$si:$sp) websocket
> id $ws_conid\n");
> }
>
> if (nat_uac_test(64)) {
> # Do NAT traversal stuff for requests from a WebSocket
> # connection - even if it is not behind a NAT!
> # This won't be needed in the future if Kamailio and the
> # WebSocket client support Outbound and Path.
> force_rport();
> if (is_method("REGISTER")) {
> fix_nated_register();
> } else if (!add_contact_alias()) {
> xlog("L_ERR", "Error aliasing contact <$ct>\n");
> sl_send_reply("400", "Bad Request");
> exit;
> }
> }
> #!endif
>
> # NAT detection
> route(NATDETECT);
>
> # CANCEL processing
> if (is_method("CANCEL")) {
> if (t_check_trans()) {
> route(RELAY);
> }
> exit;
> }
>
> # handle requests within SIP dialogs
> route(WITHINDLG);
>
> ### only initial requests (no To tag)
>
> t_check_trans();
>
> # authentication
> route(AUTH);
>
> # record routing for dialog forming requests (in case they are routed)
> # - remove preloaded route headers
> remove_hf("Route");
> if (is_method("INVITE|SUBSCRIBE")) {
> record_route();
> }
>
> # dispatch requests to foreign domains
> route(SIPOUT);
>
> ### requests for my local domains
>
> # handle presence related requests
> route(PRESENCE);
>
> # handle registrations
> route(REGISTRAR);
>
> if ($rU == $null) {
> # request with no Username in RURI
> sl_send_reply("484","Address Incomplete");
> exit;
> }
>
> # dispatch destinations to PSTN
>         route(PSTN);
>
> # user location service
> route(LOCATION);
> }
>
> # Wrapper for relaying requests
> route[RELAY] {
> # enable additional event routes for forwarded requests
> # - serial forking, RTP relaying handling, a.s.o.
> if (is_method("INVITE|BYE|SUBSCRIBE|UPDATE")) {
> if (!t_is_set("branch_route")) {
> t_on_branch("MANAGE_BRANCH");
> }
> }
>
> if (is_method("INVITE|SUBSCRIBE|UPDATE")) {
> if (!t_is_set("onreply_route")) {
> t_on_reply("MANAGE_REPLY");
> }
> }
>
> if (is_method("INVITE")) {
> if (!t_is_set("failure_route")) {
> t_on_failure("MANAGE_FAILURE");
> }
> }
>
> if (!t_relay()) {
> sl_reply_error();
> }
> exit;
> }
>
> # Per SIP request initial checks
> route[REQINIT] {
> #!ifdef WITH_ANTIFLOOD
> # flood dection from same IP and traffic ban for a while
> # be sure you exclude checking trusted peers, such as pstn gateways
> # - local host excluded (e.g., loop to self)
> if (src_ip != myself) {
> if ($sht(ipban=>$si) != $null) {
> # ip is already blocked
> xdbg("request from blocked IP - $rm from $fu (IP:$si:$sp)\n");
> exit;
> }
>
> if (!pike_check_req()) {
> xlog("L_ALERT","ALERT: pike blocking $rm from $fu (IP:$si:$sp)\n");
> $sht(ipban=>$si) = 1;
> exit;
> }
> }
> #!endif
>
> if (!mf_process_maxfwd_header("10")) {
> sl_send_reply("483","Too Many Hops");
> exit;
> }
>
> if (!sanity_check("1511", "7")) {
> xlog("Malformed SIP message from $si:$sp\n");
> exit;
> }
> }
>
> # Handle requests within SIP dialogs
> route[WITHINDLG] {
> if (has_totag()) {
> # sequential request withing a dialog should
> # take the path determined by record-routing
> if (loose_route()) {
> #!ifdef WITH_WEBSOCKETS
> if ($du == "") {
> if (!handle_ruri_alias()) {
> xlog("L_ERR", "Bad alias <$ru>\n");
> sl_send_reply("400", "Bad Request");
> exit;
> }
> }
> #!endif
> route(DLGURI);
> if (is_method("ACK")) {
> # ACK is forwarded statelessy
> route(NATMANAGE);
> } else if (is_method("NOTIFY")) {
> # Add Record-Route for in-dialog NOTIFY as per RFC 6665.
> record_route();
> }
> route(RELAY);
> } else {
> if (is_method("SUBSCRIBE") && uri == myself) {
> # in-dialog subscribe requests
> route(PRESENCE);
> exit;
> }
> if (is_method("ACK")) {
> if (t_check_trans()) {
> # no loose-route, but stateful ACK;
> # must be an ACK after a 487
> # or e.g. 404 from upstream server
> route(RELAY);
> exit;
> } else {
> # ACK without matching transaction ... ignore and discard
> exit;
> }
> }
> sl_send_reply("404","Not here");
> }
> exit;
> }
> }
>
> # Handle SIP registrations
> route[REGISTRAR] {
> if (is_method("REGISTER")) {
> if (isflagset(FLT_NATS)) {
> setbflag(FLB_NATB);
> # uncomment next line to do SIP NAT pinging
> ## setbflag(FLB_NATSIPPING);
> }
>
> #!ifdef WITH_IPV6
> if (af == INET6) {
> setbflag(FLB_IPV6);
> }
> #!endif
>
> if (!save("location")) {
> sl_reply_error();
> }
>
> exit;
> }
> }
>
> # USER location service
> route[LOCATION] {
> if (!lookup("location")) {
> $var(rc) = $rc;
> t_newtran();
> switch ($var(rc)) {
> case -1:
> case -3:
> send_reply("404", "Not Found");
> exit;
> case -2:
> send_reply("405", "Method Not Allowed");
> exit;
> }
> }
>
> route(RELAY);
> exit;
> }
>
> # Presence server route
> route[PRESENCE] {
> if (!is_method("PUBLISH|SUBSCRIBE")) {
> return;
> }
>
> if (is_method("SUBSCRIBE") && $hdr(Event) == "message-summary") {
> # returns here if no voicemail server is configured
> sl_send_reply("404", "No voicemail service");
> exit;
> }
>
> #!ifdef WITH_PRESENCE
> if (!t_newtran()) {
> sl_reply_error();
> exit;
> }
>
> if (is_method("PUBLISH")) {
> handle_publish();
> t_release();
> } else if (is_method("SUBSCRIBE")) {
> handle_subscribe();
> t_release();
> }
> exit;
> #!endif
>
> # if presence enabled, this part will not be executed
> if (is_method("PUBLISH") || $rU == $null) {
> sl_send_reply("404", "Not here");
> exit;
> }
> return;
> }
>
> # Authentication route
> route[AUTH] {
> #!ifdef WITH_AUTH
> if (is_method("REGISTER") || from_uri == myself) {
> # authenticate requests
> if (!auth_check("$fd", "subscriber", "1")) {
> auth_challenge("$fd", "0");
> exit;
> }
> # user authenticated - remove auth header
> if (!is_method("REGISTER|PUBLISH")) {
> consume_credentials();
> }
> }
> # if caller is not local subscriber, then check if it calls
> # a local destination, otherwise deny, not an open relay here
> if (from_uri != myself && uri != myself) {
> sl_send_reply("403","Not relaying");
> exit;
> }
>
> #!endif
> return;
> }
>
> # Caller NAT detection route
> route[NATDETECT] {
> #!ifdef WITH_IPV6
> if(af==INET6) {
> return;
> }
> #!endif
>
> force_rport();
> if (nat_uac_test("19")) {
> if (is_method("REGISTER")) {
> fix_nated_register();
> } else if (is_first_hop()) {
> set_contact_alias();
> }
> setflag(FLT_NATS);
> }
> return;
> }
>
> # NAT handling
> route[NATMANAGE] {
> if (is_request()) {
> if (has_totag()) {
> if (check_route_param("nat=yes")) {
> setbflag(FLB_NATB);
> }
>
> if (check_route_param("rtp=bridge")) {
> setbflag(FLB_BRIDGE);
> }
>
> if (check_route_param("rtp=ws")) {
> setbflag(FLB_RTPWS);
> }
>
> #!ifdef WITH_IPV6
> if (check_route_param("rtp=v46")) {
> setbflag(FLB_V4V6);
> }
> #!endif
> }
> }
>
> if (!isbflagset(FLB_BRIDGE)) {
> return;
> }
>
> if (
> !(isflagset(FLT_NATS)
> || isbflagset(FLB_NATB)
> || isbflagset(FLB_RTPWS)
> #!ifdef WITH_IPV6
> || isbflagset(FLB_V4V6)
> #!endif
> )) {
> return;
> }
>
> $xavp(r=>$T_branch_idx) = "replace-origin replace-session-connection";
>
> if (!nat_uac_test("8")) {
> $xavp(r=>$T_branch_idx) = $xavp(r=>$T_branch_idx) + " trust-address";
> }
>
>
> if (is_request()) {
> if (!has_totag()) {
> if (!t_is_failure_route()) {
> $avp(extra_id) = @via[1].branch + $T_branch_idx;
> $xavp(r=>$T_branch_idx) = $xavp(r=>$T_branch_idx) + " via-branch=extra";
> }
> }
> }
>
> if (is_reply()) {
> $avp(extra_id) = @via[2].branch + $T_branch_idx;
> $xavp(r=>$T_branch_idx) = $xavp(r=>$T_branch_idx) + " via-branch=extra";
> }
>
> #!ifdef WITH_IPV6
> if (af == INET && isbflagset(FLB_IPV6)) { # IPv4 --> IPv6
> $xavp(r=>$T_branch_idx) = $xavp(r=>$T_branch_idx) + " address-family=IP6";
> } else if (af == INET6 && !isbflagset(FLB_IPV6)) { # IPv6 --> IPv4
> $xavp(r=>$T_branch_idx) = $xavp(r=>$T_branch_idx) + " address-family=IP4";
> }
> #!endif
>
> if (isbflagset(FLB_RTPWS)) {
> if ($proto =~ "ws") { # web --> SIP
> $xavp(r=>$T_branch_idx) = $xavp(r=>$T_branch_idx) + " rtcp-mux-demux
> DTLS=off SDES-off ICE=remove RTP/AVP";
> } else { # SIP --> web
> $xavp(r=>$T_branch_idx) = $xavp(r=>$T_branch_idx) + " rtcp-mux-offer
> generate-mid DTLS=passive SDES-off ICE=force RTP/SAVPF";
> }
> } else {
> if ($proto =~ "ws") { # web --> web
> $xavp(r=>$T_branch_idx) = $xavp(r=>$T_branch_idx) + " generate-mid
> DTLS=passive SDES-off ICE=force";
> }
> # else {
> # $xavp(r=>$T_branch_idx) = $xavp(r=>$T_branch_idx) + "";
> # }
> }
>
> xlog("L_INFO", "NATMANAGE branch_id:$T_branch_idx ruri: $ru,
> method:$rm, status:$rs, extra_id: $avp(extra_id), rtpengine_manage:
> $xavp(r=>$T_branch_idx)\n");
>
> rtpengine_manage($xavp(r=>$T_branch_idx));
>
> if (is_request()) {
> if (!has_totag()) {
> if (t_is_branch_route()) {
> if (isbflagset(FLB_NATB)) {
> add_rr_param(";nat=yes");
> }
>
> if (isbflagset(FLB_BRIDGE)) {
> add_rr_param(";rtp=bridge");
> }
>
> if (isbflagset(FLB_RTPWS)) {
> add_rr_param(";rtp=ws");
> }
>
> #!ifdef WITH_IPV6
> if (isbflagset(FLB_V4V6)) {
> add_rr_param(";rtp=v46");
> }
> #!endif
> }
> }
> }
>
> if (is_reply()) {
> if (isbflagset(FLB_NATB)) {
> if (is_first_hop()) {
> if (af == INET) {
> set_contact_alias();
> }
> }
> }
> }
> return;
> }
>
> # URI update for dialog requests
> route[DLGURI] {
> if (!isdsturiset()) {
> handle_ruri_alias();
> }
> return;
> }
>
> # Routing to foreign domains
> route[SIPOUT] {
> if (!uri == myself) {
> append_hf("P-hint: outbound\r\n");
> route(RELAY);
> }
> }
>
> route[BRIDGING] {
> if (!has_totag()) {
> if ($proto =~ "ws" && !($ru =~ "transport=ws")) { # Coming from WS,
> NOT to WS
> setbflag(FLB_RTPWS); # Need bridging
> } else if (!($proto =~ "ws") && $ru =~ "transport=ws") { # Coming from
> NOT WS, going to WS
> setbflag(FLB_RTPWS); # Need bridging
> }
>
> #!ifdef WITH_IPV6
> if (af == INET6 && !isbflagset(FLB_IPV6)) {
> setbflag(FLB_V4V6);
> } else if(af == INET && isbflagset(FLB_IPV6)) {
> setbflag(FLB_V4V6);
> }
> #!endif
> }
> }
>
> # manage outgoing branches
> branch_route[MANAGE_BRANCH] {
> xlog("L_INFO", "MANAGE_BRANCH: New branch [$T_branch_idx] to $ru\n");
>
> t_on_branch_failure("rtpengine");
>
> #!ifndef WITH_BRIDGE_ON_FAIL
> setbflag(FLB_BRIDGE);
> #!endif
>
> route(BRIDGING);
> route(NATMANAGE);
> }
>
> # manage incoming replies
> onreply_route[MANAGE_REPLY] {
> xdbg("incoming reply\n");
> if (status =~ "[12][0-9][0-9]") {
> route(NATMANAGE);
> }
> }
>
> # manage failure routing cases
> failure_route[MANAGE_FAILURE] {
> xlog("L_INFO", "Failure: $rs");
> }
>
> #!ifdef WITH_WEBSOCKETS
> onreply_route {
> if ((($Rp == MY_WS_PORT || $Rp == MY_WSS_PORT)
> && !(proto == WS || proto == WSS))) {
> xlog("L_WARN", "SIP response received on $Rp\n");
> drop;
> }
>
> if (nat_uac_test(64)) {
> # Do NAT traversal stuff for replies to a WebSocket connection
> # - even if it is not behind a NAT!
> # This won't be needed in the future if Kamailio and the
> # WebSocket client support Outbound and Path.
> add_contact_alias();
> }
> }
>
> event_route[tm:branch-failure:rtpengine] {
> xlog("L_INFO", "BRANCH FAILED: $sel(via[1].branch) + $T_branch_idx");
>
> #!ifdef WITH_BRIDGE_ON_FAIL
> if (!isbflagset(FLB_BRIDGE) && t_check_status("415|488")) {
> t_reuse_branch();
> setbflag(FLB_BRIDGE);
> xlog("L_INFO", "event_route[branch-failure:rtpengine]: trying again\n");
>
> route(RELAY);
> } else {
> $avp(extra_id) = @via[1].branch + $T_branch_idx;
> rtpengine_delete("via-branch=extra");
> xlog("L_INFO", "event_route[branch-failure:rtpengine]: failed\n");
> }
> #!else
> $avp(extra_id) = @via[1].branch + $T_branch_idx;
> rtpengine_delete("via-branch=extra");
> #!endif
> }
>
> event_route[xhttp:request] {
> set_reply_close();
> set_reply_no_connect();
>
> if ($Rp != MY_WS_PORT
> #!ifdef WITH_TLS
> && $Rp != MY_WSS_PORT
> #!endif
> ) {
> xlog("L_WARN", "HTTP request received on $Rp\n");
> xhttp_reply("403", "Forbidden", "", "");
> exit;
> }
>
> xlog("L_INFO", "HTTP Request Received\n");
>
> if ($hdr(Upgrade) =~ "websocket"
> && $hdr(Connection) =~ "Upgrade"
> && $rm =~ "GET"
> ) {
>
> # Validate Host - make sure the client is using the correct
> # alias for WebSockets
> if ($hdr(Host) == $null || !is_myself("sip:" + $hdr(Host))) {
> xlog("L_WARN", "Bad host $hdr(Host)\n");
> xhttp_reply("403", "Forbidden", "", "");
> exit;
> }
>
> # Optional... validate Origin - make sure the client is from an
> # authorised website. For example,
> #
> # if ($hdr(Origin) != "https://example.com <https://example.com>"
> # && $hdr(Origin) != "https://example.com <https://example.com>") {
> # xlog("L_WARN", "Unauthorised client $hdr(Origin)\n");
> # xhttp_reply("403", "Forbidden", "", "");
> # exit;
> # }
>
> # Optional... perform HTTP authentication
>
> # ws_handle_handshake() exits (no further configuration file
> # processing of the request) when complete.
> if (ws_handle_handshake()) {
> # Optional... cache some information about the
> # successful connection
> exit;
> }
> }
>
> xhttp_reply("404", "Not Found", "", "");
> }
>
> event_route[websocket:closed] {
> xlog("L_INFO", "WebSocket connection from $si:$sp has closed\n");
> }
> #!endif
>
> # PSTN GW routing
> route[PSTN] {
> #!ifdef WITH_PSTN
>         # check if PSTN GW IP is defined
>         if (strempty($sel(cfg_get.pstn.gw_ip))) {
>                 xlog("SCRIPT: PSTN routing enabled but pstn.gw_ip not
> defined\n");
>                 return;
>         }
>
>         # route to PSTN dialed numbers starting with '+' or '00'
>         #     (international format)
>         # - update the condition to match your dialing rules for PSTN
> routing
>         if(!($rU=~"^(\+|00)[1-9][0-9]{3,20}$")) return;
>
>         # only local users allowed to call
>         if(from_uri!=myself) {
>                 sl_send_reply("403", "Not Allowed");
>                 exit;
>         }
>
>         # normalize target number for pstn gateway
> # - convert leading 00 to +
>         if (starts_with("$rU", "00")) {
>                 strip(2);
>                 prefix("+");
>         }
>
> if (strempty($sel(cfg_get.pstn.gw_port))) {
>                 $ru = "sip:" + $rU + "@" + $sel(cfg_get.pstn.gw_ip);
>         } else {
>                 $ru = "sip:" + $rU + "@" + $sel(cfg_get.pstn.gw_ip) + ":"
>                                         + $sel(cfg_get.pstn.gw_port);
>         }
>
> route(RELAY);
>         exit;
> #!endif
>
> return;
> }
>
>
>
> __________________________________________________________
> Kamailio - Users Mailing List - Non Commercial Discussions
>   * sr-users at lists.kamailio.org
> Important: keep the mailing list in the recipients, do not reply only to the sender!
> Edit mailing list options or unsubscribe:
>   * https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users

-- 
Daniel-Constantin Mierla -- www.asipto.com
www.twitter.com/miconda -- www.linkedin.com/in/miconda

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-users/attachments/20210816/470e72ae/attachment.htm>


More information about the sr-users mailing list