Hi. I added set_contact_alias() insead process i described previously if(is_method("SUBSCRIBE")) {
xlog("L_INFO", "{$rm} . from external sources contact : $ct . proto is {$pr} "); set_contact_alias(); handle_subscribe(); t_release(); } But i got next error: presence engine tries to check domain of contact via DNS. Offcource it can not because it is lust an ID So set_contact_alias() works but not in this case (works well for all SUBSCRIBES where domain of contact is an IP address:port pair or real domain name) INFO: <script>:{SUBSCRIBE} . from external sources contact : <sip:94e51c30bdf28de52519@d0c20d13-e5b4-4649-821e-9ab8ec94b141;gr=urn:uuid:e117b73f-c43e-42cc-a136-3c36fe65b5fb> . proto is {wss} INFO: <script>: {SUBSCRIBE} . contact : <sip:94e51c30bdf28de52519@d0c20d13-e5b4-4649-821e-9ab8ec94b141;gr=urn:uuid:e117b73f-c43e-42cc-a136-3c36fe65b5fb> . proto is {wss} ERROR: tm [ut.h:296]: uri2dst2(): ERROR: uri2dst: failed to resolve "d0c20d13-e5b4-4649-821e-9ab8ec94b141" :unresolvable A or AAAA request (-7) ERROR: tm [uac.c:443]: t_uac_prepare(): no socket found ERROR: presence [notify.c:1607]: send_notify_request(): in function tmb.t_request_within ERROR: presence [notify.c:1704]: notify(): sending Notify not successful ERROR: presence [notify.c:2763]: notifier_notify(): could not send notify ERROR: presence [notify.c:3040]: process_dialogs(): sending NOTIFY request So in my case i fixed it with mixed scenario (anyway should rewrite contact domain but can not to do it with fix_nated_contact() because nathelper module says that i trying to change contact twice). But think it is better solution that ws previously: if(is_method("SUBSCRIBE")) { if ( $pr == "wss" ) { xlog("L_INFO", "$rm from WSS proto. contact : $ct "); remove_hf("Contact"); append_hf("Contact:<sip:$fU@$si:$sp>\r\n"); msg_apply_changes(); xlog("L_INFO", "New contact : $ct "); } set_contact_alias(); handle_subscribe(); t_release(); } so if you have any other suggestions let me knwo plz but anyway that you for response you really hepled. I didn't know about set_contact_alias() (suppose not read nathepler module documetation since 4.0.x version). 2017-10-12 14:06 GMT+03:00 Yuriy Gorlichenko <ovoshl...@gmail.com>: > Sorry - set_contact_alias() > > On Oct 12, 2017 14:05, "Yuriy Gorlichenko" <ovoshl...@gmail.com> wrote: > >> Yep got it. Looks like add_contact_alias should fix my issue >> >> On Oct 12, 2017 13:37, "Daniel-Constantin Mierla" <mico...@gmail.com> >> wrote: >> >>> You have to use set_contact_alias() instead of add_contact_alias() -- >>> see the readme of nathelper module, there is a different behaviour between >>> the two, which is relevant in this case. >>> >>> Cheers, >>> Daniel >>> >>> On 12.10.17 12:31, Yuriy Gorlichenko wrote: >>> >>> I will try to do also add_contact_alias that you recommend. Will look on >>> result and describe it here >>> >>> On Oct 12, 2017 13:29, "Yuriy Gorlichenko" <ovoshl...@gmail.com> wrote: >>> >>>> No. I used fix_nated_contact for it because use just 2 libs for WS >>>> where notify should be sent and both works well. >>>> >>>> Regarding other staff - i use fix_nated_contact() before send message >>>> to mediaServer ( asterisk/fs) but it also works well. >>>> >>>> But yep i understand that in some cases it should be used as your >>>> suggested. >>>> >>>> On Oct 12, 2017 13:24, "Daniel-Constantin Mierla" <mico...@gmail.com> >>>> wrote: >>>> >>>>> I was traveling and no much time to follow up on mailing list ... >>>>> >>>>> Did you use set_contact_alias() before handling the subscribe with >>>>> presence module? You should not change the contact in the way you do, some >>>>> UA may reject it when receiving requests. >>>>> >>>>> Cheers, >>>>> Daniel >>>>> >>>>> On 11.10.17 23:32, Yuriy Gorlichenko wrote: >>>>> >>>>> Ok. solved >>>>> >>>>> I moved record_route for subscribe to other part of the config file >>>>> and for now if msg_apply_changes() works >>>>> so if someone intrested in solution: >>>>> >>>>> For me it works like this >>>>> >>>>> if(is_method("SUBSCRIBE")) { >>>>> >>>>> if ( $pr == "wss" ) { >>>>> xlog("L_INFO", "$rm from WSS proto. contact : $ct "); >>>>> remove_hf("Contact"); >>>>> append_hf("Contact:<sip:$fU@$si:$sp;transport=ws>\r\n"); >>>>> msg_apply_changes(); >>>>> xlog("L_INFO", "New contact : $ct "); >>>>> $fs = "tls:"+INTERNALIP+":7443"; >>>>> } >>>>> >>>>> handle_subscribe(); >>>>> t_release(); >>>>> >>>>> This code saves valid contact at the active_watchers table for this >>>>> SUBSCRIBE request and generates NOTIFY via correct transport. >>>>> >>>>> >>>>> 2017-10-11 22:00 GMT+03:00 Yuriy Gorlichenko <ovoshl...@gmail.com>: >>>>> >>>>>> Continue talking with myself... )) >>>>>> >>>>>> Found when presence building NOTIFY request it uses entry from >>>>>> active_watchers table for sending NOTIFY >>>>>> When SUBSCRIBE from webPhone receives by kamailio it stors it like >>>>>> this >>>>>> >>>>>> presentity_uri | >>>>>> watcher_username | watcher_domain | to_user >>>>>> | to_domain | event | event_id | >>>>>> to_tag | from_tag | callid >>>>>> | local_cseq | remote_cseq | contact >>>>>> | >>>>>> record_route | expires | status | reason | version | socket_info >>>>>> | local_contact | from_user | from_domain >>>>>> | updated | updated_winfo | flags | user_agent >>>>>> | >>>>>> sip:8dc08f881f2105dD3d75@d0c20d13-e5b4-4649-821e-9ab8ec94b141 | >>>>>> 94e51c30Bdf28de52519 | d0c20d13-e5b4-4649-821e-9ab8ec94b141 | >>>>>> 8dc08f881f2105dD3d75 | d0c20d13-e5b4-4649-821e-9ab8ec94b141 | >>>>>> presence | | 65b96bb6fd203a89fdddc27e45e37497-709f | >>>>>> vbr8o327n1 | 6qgtaasruts2tqsib3rk | 1 | >>>>>> 9634 | >>>>>> sip:94e51c30bdf28de52519@95.29.8.36:55404;gr=urn:uuid:305d99ab-ddf2-46b0-9ec0-74a1eef86595 >>>>>> | | 1507746863 | 1 | | 2 | tls: >>>>>> 172.31.13.191:7443 | sip:1.2.3.4:5060 | 94e51c30Bdf28de52519 | >>>>>> d0c20d13-e5b4-4649-821e-9ab8ec94b141 | -1 | -1 | >>>>>> 0 | SIP.js/0.7.3 | >>>>>> >>>>>> so it says nothing about that watcher at the websockets >>>>>> >>>>>> >>>>>> Then i see it builds NOTIFY request using these params: >>>>>> >>>>>> DEBUG: presence [notify.c:1479]: send_notify_request(): dialog >>>>>> info: >>>>>> DEBUG: presence [notify.c:122]: printf_subs(): pres_uri: >>>>>> sip:8dc08f881f2105dD3d75@d0c20d13-e5b4-4649-821e-9ab8ec94b141 >>>>>> DEBUG: presence [notify.c:123]: printf_subs(): >>>>>> watcher_user@watcher_domain: 94e51c30Bdf28de52519@d0c20d13- >>>>>> e5b4-4649-821e-9ab8ec94b141 >>>>>> DEBUG: presence [notify.c:124]: printf_subs(): to_user@to_domain: >>>>>> 8dc08f881f2105dD3d75@d0c20d13-e5b4-4649-821e-9ab8ec94b141 >>>>>> DEBUG: presence [notify.c:125]: printf_subs(): >>>>>> from_user@from_domain: 94e51c30Bdf28de52519@d0c20d13- >>>>>> e5b4-4649-821e-9ab8ec94b141 >>>>>> DEBUG: presence [notify.c:126]: printf_subs(): >>>>>> callid/from_tag/to_tag: 11ml332armq1sdjjhr4i/adkeanjkn >>>>>> s/65b96bb6fd203a89fdddc27e45e37497-92c7 >>>>>> DEBUG: presence [notify.c:127]: printf_subs(): >>>>>> local_cseq/remote_cseq: 1/9417 >>>>>> DEBUG: presence [notify.c:128]: printf_subs(): >>>>>> local_contact/contact: sip:1.2.3.4:5060/sip:94e51c30b >>>>>> df28de52519@95.29.8.36:63502;gr=urn:uuid:ad169d10-dc89-48e3- >>>>>> 9a83-28635a77f216 >>>>>> DEBUG: presence [notify.c:129]: printf_subs(): record_route: >>>>>> DEBUG: presence [notify.c:130]: printf_subs(): sockinfo_str: tls: >>>>>> 172.31.13.191:7443 >>>>>> DEBUG: presence [notify.c:132]: printf_subs(): event: presence >>>>>> DEBUG: presence [notify.c:133]: printf_subs(): status: active >>>>>> DEBUG: presence [notify.c:134]: printf_subs(): reason: >>>>>> DEBUG: presence [notify.c:135]: printf_subs(): version: 2 >>>>>> DEBUG: presence [notify.c:136]: printf_subs(): expires: 599 >>>>>> >>>>>> >>>>>> So i suppose it sending to UPD because at the contact field at the >>>>>> database stores nothing about transport (like postfix ;transport=ws) >>>>>> And does not matter how I handle contact at NAT (by >>>>>> fix_nated_contact() or add_contact_alias()) because it stores just a >>>>>> source >>>>>> IPaddress and port. >>>>>> >>>>>> fix_nated_register() will not help to fix this issue because it is >>>>>> just updates location and uses avp(RECEIVED) for storing real address and >>>>>> real transport which never have any entry to the "active_watchers" table. >>>>>> >>>>>> So the only way i found to say where to send notify is to change $ct >>>>>> variable with adding postfix ";transport=ws" >>>>>> Because based on it module wil build NOTIFY >>>>>> >>>>>> but here are 2 troubles >>>>>> 1) $ct variable is readonly (remove and append contact header has no >>>>>> any effect for this. msg_apply_changes says: >>>>>> "cannot apply msg changes after adding record-route header >>>>>> - it breaks conditional 2nd header") >>>>>> 2) as i said i can not change anything at the tm:local-request for >>>>>> notify as i wrote at the prevoius messages here. IT changes needed >>>>>> variables but it has no effect on message >>>>>> >>>>>> So main question - how to save real transport at the contct field at >>>>>> the active_watchers table. >>>>>> >>>>>> Will be happy to any suggession. >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> 2017-10-11 13:13 GMT+03:00 Yuriy Gorlichenko <ovoshl...@gmail.com>: >>>>>> >>>>>>> Hi. Got debug 3 information and found next (here is pastebin link >>>>>>> with dump >>>>>>> https://pastebin.com/ALHQkM9E) >>>>>>> >>>>>>> After NOTIFY was created i trying to handle it by tm:local-request >>>>>>> route >>>>>>> and found there one thing afnter changed $fs and $ru with $du >>>>>>> >>>>>>> DEBUG: tm [uac.c:329]: t_run_local_req(): apply new updates without >>>>>>> Via to sip msg >>>>>>> >>>>>>> as i understood it applies changes but not uses it for redirect >>>>>>> request throught needed socket. >>>>>>> Shoud i use msg_apply_changes() or something ike that? >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> 2017-10-04 16:13 GMT+03:00 Yuriy Gorlichenko <ovoshl...@gmail.com>: >>>>>>> >>>>>>>> May be debug=3 level says more? I will try to collect it. I don't >>>>>>>> think it is a bug. I think somethig wrong at my side, but can not find >>>>>>>> anything >>>>>>>> >>>>>>>> 2017-10-04 14:58 GMT+03:00 Yuriy Gorlichenko <ovoshl...@gmail.com>: >>>>>>>> >>>>>>>>> I mean i tried to change $du and print it. It was changed but >>>>>>>>> notify was set to original ruri. I know that it worked for register >>>>>>>>> requests and invite. I built services using it. >>>>>>>>> >>>>>>>>> I found this trouble only with NOTIFY >>>>>>>>> >>>>>>>>> On Oct 4, 2017 14:35, "Daniel-Constantin Mierla" < >>>>>>>>> mico...@gmail.com> wrote: >>>>>>>>> >>>>>>>>>> Can you print $du there and see if it set? looks like it is not >>>>>>>>>> routed by r-uri, but dst uri. >>>>>>>>>> >>>>>>>>>> Cheers, >>>>>>>>>> Daniel >>>>>>>>>> >>>>>>>>>> On 03.10.17 22:58, Yuriy Gorlichenko wrote: >>>>>>>>>> >>>>>>>>>> Found that at the tm:local-request $ru modifies but anyway - >>>>>>>>>> request sent to old RURI. >>>>>>>>>> INFO: NOTIFY to WS, update RURI >>>>>>>>>> >>>>>>>>>> -- here is making >>>>>>>>>> $ru = $ru+";transport=ws"; >>>>>>>>>> --- >>>>>>>>>> >>>>>>>>>> INFO: NOTIFY to WS, new RURI: sip:94e51c30bdf28de52519@93.81 >>>>>>>>>> .99.68:54733;gr=urn:uuid:88b3033f-e65d-4694-ac45-2a1d1a44501 >>>>>>>>>> c;transport=ws >>>>>>>>>> >>>>>>>>>> --- for now $ru is updated >>>>>>>>>> >>>>>>>>>> -- but here also same result: >>>>>>>>>> >>>>>>>>>> INFO: presence [notify.c:1619]: send_notify_request(): NOTIFY >>>>>>>>>> sip:94e51c30Bdf28de52519@d0c20d13-e5b4-4649-821e-9ab8ec94b141 >>>>>>>>>> via sip:94e51c30bdf28de52519@93.81.99.68:54733;gr=urn:uuid:88b30 >>>>>>>>>> 33f-e65d-4694-ac45-2a1d1a44501c on behalf of >>>>>>>>>> sip:8dc08f881f2105dD3d75@d0c20d13-e5b4-4649-821e-9ab8ec94b141 >>>>>>>>>> for event presence : 3biad4n635ugovv7vmjv >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> 2017-10-03 21:31 GMT+03:00 Yuriy Gorlichenko <ovoshl...@gmail.com >>>>>>>>>> >: >>>>>>>>>> >>>>>>>>>>> Can not find any entry of this device at the active watchers. >>>>>>>>>>> Suppose after module found sockets mistmatch and didnt got >>>>>>>>>>> NOTIFY response it removes entry from active watchers... >>>>>>>>>>> >>>>>>>>>>> I added handling at the event route as you sugested and tried to >>>>>>>>>>> do next >>>>>>>>>>> >>>>>>>>>>> Firs i tried fix $ru here but it does not work >>>>>>>>>>> Also tried to force socket but same >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> I see at the logs that first kamailio says about proto mistmatch >>>>>>>>>>> and only then calling event_route[tm:local-request]... >>>>>>>>>>> >>>>>>>>>>> This is my log with most important variables for understanding >>>>>>>>>>> >>>>>>>>>>> INFO: <script>: --------------------------------------- >>>>>>>>>>> INFO: <script>: #012SUBSCRIBE | source: 93.81.99.68:57031, >>>>>>>>>>> INFO: <script>: #012SUBSCRIBE | proto: wss, >>>>>>>>>>> INFO: <script>: #012SUBSCRIBE | RURI: >>>>>>>>>>> sip:8dc08f881f2105dD3d75@d0c20d13-e5b4-4649-821e-9ab8ec94b141, >>>>>>>>>>> INFO: <script>: #012SUBSCRIBE | contact: < >>>>>>>>>>> sip:94e51c30bdf28de52519@d0c20d13-e5b4-4649-821e-9ab8ec94b1 >>>>>>>>>>> 41;gr=urn:uuid:14f23c6c-166f-4649-9b7e-71a66b20450f> >>>>>>>>>>> INFO: <script>: #012SUBSCRIBE | from : 94e51c30Bdf28de52519 >>>>>>>>>>> INFO: <script>: #012SUBSCRIBE | to : 8dc08f881f2105dD3d75 >>>>>>>>>>> INFO: <script>: --------------------------------------- >>>>>>>>>>> INFO: <script>: SUBSCRIBE : fixing nated contact >>>>>>>>>>> INFO: <script>: SUBSCRIBE from WSS proto >>>>>>>>>>> >>>>>>>>>>> ----- Here is handle_subscribe happens >>>>>>>>>>> >>>>>>>>>>> WARNING: <core> [core/forward.c:231]: get_send_socket2(): >>>>>>>>>>> protocol/port mismatch (forced tls:172.31.13.191:7443, to udp: >>>>>>>>>>> 93.81.99.68:57031) >>>>>>>>>>> >>>>>>>>>>> ---- event_route[tm:local-request] >>>>>>>>>>> >>>>>>>>>>> INFO: <script>: --------------------------------------- >>>>>>>>>>> INFO: <script>: #012NOTIFY | source: 172.31.13.191:5060, >>>>>>>>>>> INFO: <script>: #012NOTIFY | proto: udp, >>>>>>>>>>> INFO: <script>: #012NOTIFY | RURI: sip:94e51c30bdf28de52519@93 >>>>>>>>>>> .81.99.68:57031;gr=urn:uuid:14f23c6c-166f-4649-9b7e-71a66b20450 >>>>>>>>>>> f, >>>>>>>>>>> INFO: <script>: #012NOTIFY | contact: <sip:34.192.121.47:5060 >>>>>>>>>>> ;transport=tls> >>>>>>>>>>> INFO: <script>: #012NOTIFY | from : 8dc08f881f2105dD3d75 >>>>>>>>>>> INFO: <script>: #012NOTIFY | to : 94e51c30Bdf28de52519 >>>>>>>>>>> INFO: <script>: --------------------------------------- >>>>>>>>>>> INFO: <script>: NOTIFY to WS, forsing socket to TLS >>>>>>>>>>> >>>>>>>>>>> ---- here is i trying to fix $ru and $fs >>>>>>>>>>> >>>>>>>>>>> INFO: presence [notify.c:1619]: send_notify_request(): NOTIFY >>>>>>>>>>> sip:94e51c30Bdf28de52519@d0c20d13-e5b4-4649-821e-9ab8ec94b141 >>>>>>>>>>> via sip:94e51c30bdf28de52519@93.81.99.68:57031;gr=urn:uuid:14f23 >>>>>>>>>>> c6c-166f-4649-9b7e-71a66b20450f on behalf of >>>>>>>>>>> sip:8dc08f881f2105dD3d75@d0c20d13-e5b4-4649-821e-9ab8ec94b141 >>>>>>>>>>> for event presence : 8n0erm4mtff6pn9ljgdq >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> 2017-10-03 18:43 GMT+03:00 Daniel-Constantin Mierla < >>>>>>>>>>> mico...@gmail.com>: >>>>>>>>>>> >>>>>>>>>>>> Hello, >>>>>>>>>>>> >>>>>>>>>>>> you should use set_contact_alias() for subscribe instead of >>>>>>>>>>>> fixed_nated_contact(), is a better option. >>>>>>>>>>>> >>>>>>>>>>>> Back to the reported topic, can you paste here the db record >>>>>>>>>>>> from active_watchers table? >>>>>>>>>>>> >>>>>>>>>>>> Then, you should be able to update some parts of the local >>>>>>>>>>>> generated requests by having an event_route[tm:local-request] >>>>>>>>>>>> block in your >>>>>>>>>>>> kamailio.cfg. >>>>>>>>>>>> >>>>>>>>>>>> Cheers, >>>>>>>>>>>> Daniel >>>>>>>>>>>> >>>>>>>>>>>> On 03.10.17 10:44, Yuriy Gorlichenko wrote: >>>>>>>>>>>> >>>>>>>>>>>> Also found at the lists some solutions like "accept >>>>>>>>>>>> fix_nated_register() and fix_nated_contact() for REGISTER and >>>>>>>>>>>> SUBSCRIBE" >>>>>>>>>>>> >>>>>>>>>>>> Done it. But still protos mistmatch... >>>>>>>>>>>> >>>>>>>>>>>> kamailio founds tls:myip:myport and forces t to udp... >>>>>>>>>>>> >>>>>>>>>>>> 2017-10-03 10:49 GMT+03:00 Yuriy Gorlichenko < >>>>>>>>>>>> ovoshl...@gmail.com>: >>>>>>>>>>>> >>>>>>>>>>>>> Hi. I have presence server and it works fine for UDP/TCP/TLS >>>>>>>>>>>>> endpoints. >>>>>>>>>>>>> For now i have new one type of endpoints that runs via >>>>>>>>>>>>> WebSockets >>>>>>>>>>>>> >>>>>>>>>>>>> It sends SUBSCRIBE request to the and then after >>>>>>>>>>>>> handle_subscribe() NOTIFY not comes to the subscriber because of >>>>>>>>>>>>> [core/forward.c:231]: get_send_socket2(): protocol/port >>>>>>>>>>>>> mismatch >>>>>>>>>>>>> >>>>>>>>>>>>> I already had some issues regarding this for ACK for example >>>>>>>>>>>>> but i resolved it cimply doing >>>>>>>>>>>>> >>>>>>>>>>>>> $ru = $ru+";transport=wss" >>>>>>>>>>>>> >>>>>>>>>>>>> but NOTIFY sending is internal process and can't be controlled >>>>>>>>>>>>> by config file. So i can not change $ru for NOTIFY directly. >>>>>>>>>>>>> >>>>>>>>>>>>> Any ideas how to fix this? >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>> Kamailio (SER) - Users Mailing >>>>>>>>>>>> Listsr-users@lists.kamailio.orghttps://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> Daniel-Constantin Mierlawww.twitter.com/miconda -- >>>>>>>>>>>> www.linkedin.com/in/miconda >>>>>>>>>>>> Kamailio Advanced Training - www.asipto.com >>>>>>>>>>>> Kamailio World Conference - www.kamailioworld.com >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Daniel-Constantin Mierlawww.twitter.com/miconda -- >>>>>>>>>> www.linkedin.com/in/miconda >>>>>>>>>> Kamailio Advanced Training - www.asipto.com >>>>>>>>>> Kamailio World Conference - www.kamailioworld.com >>>>>>>>>> >>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>>> -- >>>>> Daniel-Constantin Mierlawww.twitter.com/miconda -- >>>>> www.linkedin.com/in/miconda >>>>> Kamailio Advanced Training - www.asipto.com >>>>> Kamailio World Conference - www.kamailioworld.com >>>>> >>>>> >>> -- >>> Daniel-Constantin Mierlawww.twitter.com/miconda -- >>> www.linkedin.com/in/miconda >>> Kamailio Advanced Training - www.asipto.com >>> Kamailio World Conference - www.kamailioworld.com >>> >>>
_______________________________________________ Kamailio (SER) - Users Mailing List sr-users@lists.kamailio.org https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users