I have configured websocket usage using this module description
https://kamailio.org/docs/modules/devel/modules/websocket.html
Added registrar and usrloc modules
Registration saved using this block
route[REGISTRAR] {
if(!is_method("REGISTER"))
return;
if (!save("location")) {
xlog("L_INFO", "Location save error\n");
sl_reply_error();
}
}
Now in database i can see WebRTC client registration
{
"jsonrpc": "2.0",
"result": {
"Domains": [{
"Domain": {
"Domain": "location",
"Size": 1024,
"AoRs": [{
"Info": {
"AoR": "1000",
"HashID": 924766747,
"Contacts": [{
"Contact": {
"Address": "sips:1000@df7jal23ls0d.invalid
;rtcweb-breaker=no;transport=wss",
"Expires": 155,
"Q": -1,
"Call-ID":
"0c818ac1-5e77-bd4c-b7fe-a135d6c6a4bf",
"CSeq": 61442,
"User-Agent": "IM-client/OMA1.0
sipML5-v1.2016.03.04",
"Received": "[not set]",
"Path": "[not set]",
"State": "CS_SYNC",
"Flags": 0,
"CFlags": 0,
"Socket": "tls:192.168.2.10:7443",
"Methods": -1,
"Ruid": "uloc-5c643a67-4b56-1",
"Instance": "[not set]",
"Reg-Id": 0,
"Server-Id": 0,
"Tcpconn-Id": 2,
"Keepalive": 0,
"Last-Keepalive": 1550074434,
"Last-Modified": 1550074434
}
}]
}
}
],
"Stats": {
"Records": 1,
"Max-Slots": 1
}
}
}]
},
"id": 19493
}
Now I try deliver call to WebRTC client. Kamailio receives message
INVITE sip:1001@192.168.30.2 SIP/2.0
Via: SIP/2.0/UDP 192.168.30.2:45060;rport;branch=z9hG4bK5gaK3B38egZQH
Route: <sip:192.168.2.10>
Max-Forwards: 70
From: "" <sip:0000000000@192.168.30.2>;tag=8e7Za8pD6pcKg
To: <sip:1001@192.168.30.2>
Call-ID: 989274f0-aa4d-1237-08a1-94b86deaeed5
CSeq: 483510 INVITE
Contact: <sip:mod_sofia@192.168.30.2:45060>
User-Agent:
FreeSWITCH-mod_sofia/1.8.4+git-20181228T070140Z~a0377e9677~64bit
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE,
REGISTER, REFER, NOTIFY, PUBLISH, SUBSCRIBE
Supported: timer, path, replaces
Allow-Events: talk, hold, conference, presence, as-feature-event,
dialog, line-seize, call-info, sla, include-session-description,
presence.winfo, message-summary, refer
Content-Type: application/sdp
Content-Disposition: session
Content-Length: 621
X-FS-Support: update_display,send_info
Remote-Party-ID: <sip:0000000000@192.168.30.2
;party=calling;screen=yes;privacy=off
Expected that Kamailio using follow config block route message to WEbRTC
client via websocket.
route[FROM_FS] {
record_route();
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;
}
But really Kamailio try resolve "sips:1000@df7jal23ls0d.invalid" URI via
DNS and deliver for non locally connected device
3(19341) exec: *** cfgtrace:request_route=[DEFAULT_ROUTE]
c=[/usr/local/etc/kamailio/kamailio.cfg] l=238 a=16 n=if
3(19341) exec: *** cfgtrace:request_route=[DEFAULT_ROUTE]
c=[/usr/local/etc/kamailio/kamailio.cfg] l=231 a=41 n=isflagset
3(19341) exec: *** cfgtrace:request_route=[DEFAULT_ROUTE]
c=[/usr/local/etc/kamailio/kamailio.cfg] l=232 a=5 n=route
3(19341) exec: *** cfgtrace:request_route=[FROM_FS]
c=[/usr/local/etc/kamailio/kamailio.cfg] l=266 a=24 n=record_route
3(19341) exec: *** cfgtrace:request_route=[FROM_FS]
c=[/usr/local/etc/kamailio/kamailio.cfg] l=281 a=16 n=if
3(19341) exec: *** cfgtrace:request_route=[FROM_FS]
c=[/usr/local/etc/kamailio/kamailio.cfg] l=267 a=25 n=lookup
3(19341) DEBUG: registrar [lookup.c:255]: lookup_helper(): contact for
[1000] found by address
3(19341) exec: *** cfgtrace:request_route=[FROM_FS]
c=[/usr/local/etc/kamailio/kamailio.cfg] l=281 a=5 n=route
3(19341) exec: *** cfgtrace:request_route=[RELAY]
c=[/usr/local/etc/kamailio/kamailio.cfg] l=289 a=16 n=if
3(19341) exec: *** cfgtrace:request_route=[RELAY]
c=[/usr/local/etc/kamailio/kamailio.cfg] l=286 a=24 n=t_relay
3(19341) DEBUG: tm [t_lookup.c:1326]: t_newtran(): msg id=2 , global msg
id=2 , T on entrance=0
3(19341) DEBUG: tm [t_lookup.c:483]: t_lookup_request(): start searching:
hash=7468, isACK=0
3(19341) DEBUG: tm [t_lookup.c:441]: matching_3261(): RFC3261 transaction
matching failed - via branch [z9hG4bK72v4614F91BXr]
3(19341) DEBUG: tm [t_lookup.c:666]: t_lookup_request(): no transaction
found
3(19341) DEBUG: tm [t_hooks.c:348]: run_reqin_callbacks_internal():
trans=0x7fbb0b1d0d40, callback type 1, id 0 entered
3(19341) DEBUG: <core> [core/md5utils.c:67]: MD5StringArray(): MD5
calculated: 07ad473ba02a6d3a4f8753a378c102e8
3(19341) DEBUG: tm [t_funcs.c:324]: t_relay_to(): new INVITE
3(19341) DEBUG: tm [t_reply.c:596]: _reply_light(): reply sent out.
buf=0x7fbb0f256750: SIP/2.0 100 trying -..., shmem=0x7fbb0b1e75d8: SIP/2.0
100 trying -
3(19341) DEBUG: tm [t_reply.c:607]: _reply_light(): finished
3(19341) DEBUG: <core> [core/dns_cache.c:527]: _dns_hash_find():
(_sips._tcp.df7jal23ls0d.invalid(31), 33), h=232
3(19341) DEBUG: <core> [core/resolve.c:967]: get_record(): skipping 1 NS
(p=0x561007b83e71, end=0x561007b83ebc)
3(19341) DEBUG: <core> [core/resolve.c:980]: get_record(): parsing 0 ARs
(p=0x561007b83ebc, end=0x561007b83ebc)
3(19341) DEBUG: <core> [core/dns_cache.c:761]: dns_cache_mk_bad_entry():
(_sips._tcp.df7jal23ls0d.invalid, 33, 60, 1)
3(19341) DEBUG: <core> [core/dns_cache.c:701]: dns_cache_add(): adding
_sips._tcp.df7jal23ls0d.invalid(31) 33 (flags=1) at 232
3(19341) DEBUG: <core> [core/dns_cache.c:527]: _dns_hash_find():
(df7jal23ls0d.invalid(20), 1), h=139
3(19341) DEBUG: <core> [core/resolve.c:967]: get_record(): skipping 1 NS
(p=0x561007b83e66, end=0x561007b83eb1)
3(19341) DEBUG: <core> [core/resolve.c:980]: get_record(): parsing 0 ARs
(p=0x561007b83eb1, end=0x561007b83eb1)
3(19341) DEBUG: <core> [core/dns_cache.c:761]: dns_cache_mk_bad_entry():
(df7jal23ls0d.invalid, 1, 60, 1)
3(19341) DEBUG: <core> [core/dns_cache.c:701]: dns_cache_add(): adding
df7jal23ls0d.invalid(20) 1 (flags=1) at 139
3(19341) ERROR: <core> [core/resolve.c:1698]: sip_hostport2su(): could not
resolve hostname: "df7jal23ls0d.invalid"
3(19341) ERROR: tm [ut.h:309]: uri2dst2(): failed to resolve
"df7jal23ls0d.invalid"
3(19341) ERROR: tm [t_fwd.c:1735]: t_forward_nonack(): failure to add
branches
3(19341) DEBUG: tm [t_funcs.c:334]: t_relay_to(): t_forward_nonack
returned error -478 (-478)
3(19341) DEBUG: tm [t_funcs.c:352]: t_relay_to(): -478 error reply
generation delayed
3(19341) exec: *** cfgtrace:request_route=[RELAY]
c=[/usr/local/etc/kamailio/kamailio.cfg] l=287 a=24 n=sl_reply_error
3(19341) ERROR: sl [sl_funcs.c:372]: sl_reply_error(): stateless error
reply used: Unresolvable destination (478/SL)
3(19341) exec: *** cfgtrace:request_route=[RELAY]
c=[/usr/local/etc/kamailio/kamailio.cfg] l=289 a=2 n=exit
3(19341) DEBUG: <core> [core/receive.c:353]: receive_msg(): request-route
executed in: 12632 usec
3(19341) DEBUG: tm [t_lookup.c:1490]: t_unref(): delayed error reply
generation(-478)
3(19341) DEBUG: tm [t_reply.c:1650]: cleanup_uac_timers(): RETR/FR timers
reset
3(19341) DEBUG: tm [t_reply.c:596]: _reply_light(): reply sent out.
buf=0x7fbb0f2571f0: SIP/2.0 478 Unresolv..., shmem=0x7fbb0b1e7860: SIP/2.0
478 Unresolv
3(19341) DEBUG: tm [t_reply.c:607]: _reply_light(): finished
Looks I missed some thing in message routing, But cannot find what.
Please point me how to properly route call for this case.