[Kamailio-Users] presence_dialoginfo context

David kamailio.org at spam.lublink.net
Fri Aug 14 17:35:23 CEST 2009


Hey,

I definitely have an exit(), but even if I didn't most of the message is 
changed, an exit would not change that would it?

David

Klaus Darilion wrote:
> Very strange.
>
> Maybe exit(); is missing after t_relay() loop and both PUBLISHs are 
> processed? I think I forgot the exit() in the config snippet.
>
> Yes, on the server. And please attach the trace as attachment - inline 
> is difficult to read
>
> klaus
>
> David schrieb:
>> Hey,
>>
>> Here is an expert from the /var/log/messsages :
>>
>> Aug 14 10:16:42 kamailio-dev /usr/sbin/kamailio[28924]: New request - 
>> M=PUBLISH RURI=sip:group1.105 at mydomain.tld 
>> F=sip:group1.105 at mydomain.tld T=sip:group1.105 at mydomain.tld 
>> IP=72.55.182.125 ID=7bddec01-28924 at 72.55.182.125
>> Aug 14 10:16:42 kamailio-dev /usr/sbin/kamailio[28924]: Publish 
>> rewritten forwarded for ext=group1.105 
>> ruri=sip:group1.105 at mydomain.tld duri=<null> body=<?xml 
>> version="1.0"?> <dialog-info 
>> xmlns="urn:ietf:params:xml:ns:dialog-info" version="0" state="full" 
>> entity="sip:group1.105 at mydomain.tld">   <dialog 
>> id="5a9207de129fc16f49cafaa425e312f1 at mydomain.tld" 
>> call-id="5a9207de129fc16f49cafaa425e312f1 at mydomain.tld" 
>> local-tag="4fbrxu9548" remote-tag="as4fb63283" 
>> direction="recipient">     <state>early</state>     <remote>       
>> <identity>sip:103 at mydomain.tld</identity>       <target 
>> uri="sip:103 at mydomain.tld"/>     </remote>     <local>       
>> <identity>sip:group1.105 at mydomain.tld</identity>       <target 
>> uri="sip:group1.105 at mydomain.tld"/>     </local>   </dialog> 
>> </dialog-info>
>> Aug 14 10:16:42 kamailio-dev /usr/sbin/kamailio[28932]: New request - 
>> M=PUBLISH RURI=sip:group1.105 at mydomain.tld 
>> F=sip:group1.105 at mydomain.tld T=sip:group1.105 at mydomain.tld 
>> IP=72.55.182.125 ID=7bddec01-28924 at 72.55.182.125
>> Aug 14 10:16:42 kamailio-dev /usr/sbin/kamailio[28932]: Publish 
>> accepted for ext=group1.105 ruri=sip:group1.105 at mydomain.tld 
>> duri=<null> body=<?xml version="1.0"?> <dialog-info 
>> xmlns="urn:ietf:params:xml:ns:dialog-info" version="0" state="full" 
>> entity="sip:105 at mydomain.tld">   <dialog 
>> id="5a9207de129fc16f49cafaa425e312f1 at mydomain.tld" 
>> call-id="5a9207de129fc16f49cafaa425e312f1 at mydomain.tld" 
>> local-tag="4fbrxu9548" remote-tag="as4fb63283" 
>> direction="recipient">     <state>early</state>     <remote>       
>> <identity>sip:103 at mydomain.tld</identity>       <target 
>> uri="sip:103 at mydomain.tld"/>     </remote>     <local>       
>> <identity>sip:105 at mydomain.tld</identity>       <target 
>> uri="sip:105 at mydomain.tld"/>     </local>   </dialog> </dialog-info>
>> Aug 14 10:16:42 kamailio-dev /usr/sbin/kamailio[28932]: 
>> INFO:presence:send_notify_request: NOTIFY sip:group1.101 at mydomain.tld 
>> via sip:group1.101 at phone.ip:57234 on behalf of sip:105 at mydomain.tld 
>> for event dialog
>>
>> But the phone's syslog shows this :
>>
>> Aug 14 10:16:21 linksys [0:57234]<<server.ip:5060
>> Aug 14 10:16:21 linksys [0:57234]<<server.ip:5060
>> Aug 14 10:16:21 linksys NOTIFY sip:group1.101 at phone.ip:57234 
>> SIP/2.0^M Via: SIP/2.0/UDP 
>> 72.55.182.125;branch=z9hG4bK0b0a.9725e23.0^M To: 
>> sip:group1.101 at mydomain.tld;tag=1c32db3af4d889ac^M From: 
>> sip:105 at mydomain.tld;tag=6d6077e15fecee48b2721a5e94bf8883-91a8^M 
>> CSeq: 12 NOTIFY^M Call-ID: 984d4cd2-37b04f4 at 192.168.1.104^M 
>> Content-Length: 655^M User-Agent: Kamailio (1.5.2-tls (i386/linux))^M 
>> Max-Forwards: 70^M Event: dialog^M Contact: <sip:mydomain.tld:5060>^M 
>> Subscription-State: active;expires=1470^M Content-Type: 
>> application/dialog-info+xml^M ^M <?xml version="1.0"?> <dialog-info 
>> xmlns="urn:ietf:params:xml:ns:dialog-info" version="11"          
>> state="full" entity="group1.105 at mydomain.tld">   <dialog 
>> id="0b5776fb2ea599c429038414054eb383 at mydomain.tld" 
>> call-id="0b5776fb2ea599c429038414054eb383 at mydomain.tld" 
>> local-tag="loto7h3i9a" remote-tag="as4f284f05" 
>> direction="recipient">     <state>early</state>     <remote>       
>> <identity>sip:103 at mydomain.tld</identity>       <target uri="
>>
>> Everything is good, but notice the entity is somehow back to group1.105.
>>
>> Where do you want me to run the traceroute? On the server?
>>
>> David
>>
>> Klaus Darilion wrote:
>>>
>>>
>>> David schrieb:
>>>> Hey,
>>>>
>>>> I tried that, but it did not seem to change anything. I saw the 
>>>> message change on the second loop, but it seems that the presence 
>>>> module figure out my tactic and fixed the message.
>>>
>>> That's not possible. The presence module does not alter the received 
>>> body. I think the problem is somewhere else.
>>>
>>> Can you send me a trace?
>>>
>>> ngrep -t -P "" -W byline -d any port 5060
>>>
>>> regards
>>> klaus
>>>
>>>
>>>>
>>>> David
>>>>
>>>> Klaus Darilion wrote:
>>>>> That does not work: presence_server always uses the original 
>>>>> received body, the modifications applied by you are not seen by 
>>>>> the presence server.
>>>>>
>>>>> The workaround would be to "loop" the modified PUBLISH to Kamailio 
>>>>> again, e.g.:
>>>>>
>>>>> listen=.......:5060
>>>>> listen=.......:5050
>>>>>
>>>>> route{
>>>>>  ...
>>>>>  if (is_method("PUBLISH")) {
>>>>>    if (dst_port==5060) {
>>>>>      subst_body('/group1[.]//');
>>>>>      t_relay("udp:127.0.0.1:5050);
>>>>>    } else if (dst_port==5050) {
>>>>>      handle_publish();
>>>>>      t_release();
>>>>>    }
>>>>>  }
>>>>> ...
>>>>> }
>>>>>
>>>>>
>>>>> klaus
>>>>> David schrieb:
>>>>>> Hey,
>>>>>>
>>>>>> I tried doing a subst or replace_body_all to change the entity="" 
>>>>>> value,
>>>>>>
>>>>>> if (is_method("PUBLISH") )
>>>>>> {
>>>>>>       subst_body('/group1[.]//');
>>>>>>       handle_publish();
>>>>>>       t_release();
>>>>>> }
>>>>>>
>>>>>> It did not work, the $rb variable still shows the old body and 
>>>>>> the NOTIFY received on the phone is the old body as well.
>>>>>>
>>>>>> I thought about doing a string replace on the outbound NOTIFY but 
>>>>>> it never hits my routing script, so I can't.
>>>>>>
>>>>>> I read textops and it does not list any limitations relating to me.
>>>>>>
>>>>>> Any ideas?
>>>>>>
>>>>>> David
>>>>>>
>>>>>> Klaus Darilion wrote:
>>>>>>> I think the problem lies within the dialog module. Dialog module 
>>>>>>> stores from/to URI. Both, from and to URI are derived from the 
>>>>>>> headers. We could extend the dialog module to store request-URI 
>>>>>>> in the dialog-info structure too, and add an option to 
>>>>>>> pua_dialoginfo to use RURI instead of To-URI.
>>>>>>>
>>>>>>> regards
>>>>>>> klaus
>>>>>>>
>>>>>>> David schrieb:
>>>>>>>> Hey,
>>>>>>>>
>>>>>>>> I think I am doing something wrong, because here is the NOTIFY 
>>>>>>>> that comes to the phone :
>>>>>>>>
>>>>>>>> NOTIFY sip:group1.101 at my.home.ip:57234 SIP/2.0
>>>>>>>> Via: SIP/2.0/UDP my.kamailio.ip;branch=z9hG4bK3cab.78e494a4.0
>>>>>>>> To: sip:group1.101 at my.kamailio.domain.name;tag=b2514519391e8b4d
>>>>>>>> From: 
>>>>>>>> sip:102 at my.kamailio.domain.name;tag=6d6077e15fecee48b2721a5e94bf8883-f712 
>>>>>>>>
>>>>>>>> CSeq: 12 NOTIFY^M Call-ID: 24db3209-611c031d at 192.168.1.104
>>>>>>>> Content-Length: 298
>>>>>>>> User-Agent: MyServer 1.0
>>>>>>>> Max-Forwards: 70
>>>>>>>> Event: dialog
>>>>>>>> Contact: <sip:my.kamailio.domain.name:5060>
>>>>>>>> Subscription-State: active;expires=1570
>>>>>>>> Content-Type: application/dialog-info+xml
>>>>>>>>
>>>>>>>> <?xml version="1.0"?> <dialog-info 
>>>>>>>> xmlns="urn:ietf:params:xml:ns:dialog-info" 
>>>>>>>> version="11"          state="full" 
>>>>>>>> entity="group1.102 at my.kamailio.domain.name">   <dialog 
>>>>>>>> id="7aaa32e84362a246716009175ad670be at domain.tld" 
>>>>>>>> direction="recipient">     <state>early</state>   </dialog> 
>>>>>>>> </dialog-info>
>>>>>>>>
>>>>>>>> The phone ( I tested with a GXP2000, GXP2020 and SPA962 + 
>>>>>>>> SPA932) does not flash lights or anything. Since you suggested 
>>>>>>>> that a solid kamailio would work out of the box, I suspect that 
>>>>>>>> either I miscommunicated my setup or did something really 
>>>>>>>> wrong. The notify definitely gets to the phone and the phone 
>>>>>>>> replies 200/OK when it receives the NOTIFY. But I think that 
>>>>>>>> the telephone is not understanding the request because it 
>>>>>>>> subscribed to '102' but received a notification for 
>>>>>>>> 'group1.102'. The funny thing is, the From header matches the 
>>>>>>>> subscribe To header, it's just the XML has the full name 
>>>>>>>> instead of the shortened name.
>>>>>>>>
>>>>>>>> To: 
>>>>>>>> <sip:102 at my.kamailio.domain.name>;tag=6d6077e15fecee48b2721a5e94bf8883-f712 
>>>>>>>>
>>>>>>>>
>>>>>>>> I see this in my ( on kamailio ) /var/log/messages :
>>>>>>>>
>>>>>>>> Aug 13 09:55:24 kamailio-dev /usr/sbin/kamailio[25449]: 
>>>>>>>> INFO:presence:send_notify_request: NOTIFY 
>>>>>>>> sip:group1.101 at my.kamailio.domain.name via 
>>>>>>>> sip:group1.101 at my.home.ip.where.phone.is:57234 on behalf of 
>>>>>>>> sip:102 at my.kamailio.domain.name for event dialog
>>>>>>>>
>>>>>>>> I should also mention that the NOTIFY sent out by presence 
>>>>>>>> bypasses my routing scripts. So I have the PUBLISH come through 
>>>>>>>> ( which I leave alone ) and the NOTIFY is sent according to the 
>>>>>>>> location table without ever consulting my routing script.
>>>>>>>>
>>>>>>>> So everything amazingly worked out well, except that the lights 
>>>>>>>> are not changing status which I think is related to the XML 
>>>>>>>> document dialog-info entity attribute containing the group 
>>>>>>>> name, sent from my server.
>>>>>>>>
>>>>>>>> Any ideas or suggestions ?
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>>
>>>>>>>> David
>>>>>>>>
>>>>>>>> Other information :
>>>>>>>>
>>>>>>>> if ( is_method("SUBSCRIBE") )
>>>>>>>>          {
>>>>>>>>               avp_db_query("select groupname from sometable ", 
>>>>>>>> "$avp(s:groupname)");
>>>>>>>>               avp_printf("$ru", 
>>>>>>>> "sip:$avp(s:zone).$tU at my.kamailio.domain.name");
>>>>>>>>               xlog("L_INFO", "Subscribe rewritten from $tU to 
>>>>>>>> $ru - M=$rm \n");
>>>>>>>>               xlog("L_INFO", "Handling SUBSCRIBE - $fU - 
>>>>>>>> $avp(s:zone) - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
>>>>>>>>               handle_subscribe();
>>>>>>>>               t_release();
>>>>>>>>               exit;
>>>>>>>>          }
>>>>>>>>
>>>>>>>> Kamailio compiled from sources :
>>>>>>>>
>>>>>>>> Path: /usr/src/kamailio
>>>>>>>> URL: 
>>>>>>>> https://openser.svn.sourceforge.net/svnroot/openser/branches/1.5
>>>>>>>> Repository Root: 
>>>>>>>> https://openser.svn.sourceforge.net/svnroot/openser
>>>>>>>> Repository UUID: 689a6050-402a-0410-94f2-e92a70836424
>>>>>>>> Revision: 5910
>>>>>>>> Node Kind: directory
>>>>>>>> Schedule: normal
>>>>>>>> Last Changed Author: henningw
>>>>>>>> Last Changed Rev: 5910
>>>>>>>> Last Changed Date: 2009-08-06 13:08:30 -0400 (Thu, 06 Aug 2009)
>>>>>>>>
>>>>>>>>
>>>>>>>> Klaus Darilion wrote:
>>>>>>>>> notifies are generated by the presence module, based on the 
>>>>>>>>> subscription. So, there is nothing you have to do with NOTIFY. 
>>>>>>>>> Also PUBLISHs are created internally. Depending on your 
>>>>>>>>> concrete setup (e.g. format of the SIP user names) it should 
>>>>>>>>> work out of the box.
>>>>>>>>>
>>>>>>>>> klaus
>>>>>>>>>
>>>>>>>>> dlublink schrieb:
>>>>>>>>>> What about the notifies?
>>>>>>>>>>
>>>>>>>>>> Klaus Darilion wrote:
>>>>>>>>>>> dlublink wrote:
>>>>>>>>>>>> Hello,
>>>>>>>>>>>>
>>>>>>>>>>>> I have three different groups of extensions on my kamailio 
>>>>>>>>>>>> I want to be able to separate them, so I prefixed a name to 
>>>>>>>>>>>> the extensions, so I have :
>>>>>>>>>>>>
>>>>>>>>>>>> 1. group1.101
>>>>>>>>>>>> 2. group1.102
>>>>>>>>>>>> 3. group2.101
>>>>>>>>>>>> 4. group2.102
>>>>>>>>>>>> 5. group3.102
>>>>>>>>>>>> 6. group3.103.
>>>>>>>>>>>>
>>>>>>>>>>>> The phones from different groups can not call each other, I 
>>>>>>>>>>>> found a pseudo variable that I use to rewrite the 
>>>>>>>>>>>> destination url, so if user group1.101 dials 102 I rewrite 
>>>>>>>>>>>> it to group1.102.
>>>>>>>>>>>>
>>>>>>>>>>>> I want to do the same thing for presence_dialog info, how 
>>>>>>>>>>>> can I rewrite the subscribe, presence and and notify 
>>>>>>>>>>>> messages to append the appropriate prefix ?
>>>>>>>>>>>
>>>>>>>>>>> Just apply the same rewrite you have already done for the 
>>>>>>>>>>> INVITE also for the SUBSCRIBE
>>>>>>>>>>>
>>>>>>>>>>> regards
>>>>>>>>>>> klaus
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>
>>>>>>>>>>>> David
>>>>>>>>>>>>
>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>> Kamailio (OpenSER) - Users mailing list
>>>>>>>>>>>> Users at lists.kamailio.org
>>>>>>>>>>>> http://lists.kamailio.org/cgi-bin/mailman/listinfo/users
>>>>>>>>>>>> http://lists.openser-project.org/cgi-bin/mailman/listinfo/users 
>>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>
>>>>>>
>>>>
>>





More information about the sr-users mailing list