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.