[OpenSER-Users] Problems with SIMPLE-XMPP presence

Pablo Guijarro Enríquez pge at moviquity.com
Tue May 6 17:42:45 CEST 2008


Oops, you are right, I compared the tags of the wrong messages :S

Anyway, it was a problem in my configuration file, as you figured out:
subscribes that had to tag and were not towards xmpp gateway were discarded.

Now it works fine and messages exchanged are normal. Thanks a lot for that.

There are still a couple of things I find strange. Every time a XMPP user,
to which someone is subscribed, changes its presence status, a new entry is
inserted in the presentity table with that presence information. Is that
normal? With users from the SIP domain it does not happen, and there is
always just one row per user.

Also, a new entry appear in pua table, with apparently not much information:

| 62672 | sip:pge354*tid.es at gw    |         |     1 | 1210089978 |
0 |    8 | a.1210083226.24736.78.0  |            |                      |
|                        |                                       |    0 |
|                      |       0 |               |


The differences between the new rows inserted and the already existing ones
are the Id, e-tag, expires and, sometimes, the tuple-id. Is that normal too?
Maybe it has to do with the way XMPP works? If not, how can I fix it?

Looking forward to your always accurate support,
Pablo


-----Mensaje original-----
De: Anca Vamanu [mailto:anca at voice-system.ro] 
Enviado el: martes, 06 de mayo de 2008 15:15
Para: Pablo Guijarro Enríquez
CC: users at lists.openser.org
Asunto: Re: [OpenSER-Users] Problems with SIMPLE-XMPP presence

Hello Paul,

The to tags are not different, they are identical.
The 404 Not Here reply has nothing to do with a tag mismatch but with an 
error in the configuration file. The Subscribe inside a dialog goes on a 
wrong branch in the configuration file. Search where the 404 reply is 
sent from the script.

regards,
Anca

Pablo Guijarro Enríquez wrote:
> I forgot to post the response to the original subscribe, where the to-tag
is
> set. Now you can see that it is different from the one that appears in the
> subscribe that is sent when the presence status change.
>
>
> SIP/2.0 202 OK
> Via: SIP/2.0/UDP 10.95.43.31;branch=z9hG4bKe5a9.a616d022.0
> To: sip:354 at openser.domain;tag=10.20757.1209988007.20
> From:
> sip:pge354*xmpp.domain at xmpp-gw;tag=533cb9e91f4b999cf76861cbb9ed54ed-be94
> CSeq: 10 SUBSCRIBE
> Call-ID: 7d71efef-20757 at 10.95.43.31
> Expires: 473
> Contact: <sip:10.95.43.31>
> Server: OpenSER (1.3.1-notls (i386/linux))
> Content-Length: 0
>
>
> Thanks again,
> Pablo
>
>
> -----Mensaje original-----
> De: Pablo Guijarro Enríquez [mailto:pge at moviquity.com] 
> Enviado el: lunes, 05 de mayo de 2008 14:11
> Para: 'Anca Vamanu'
> CC: 'users at lists.openser.org'
> Asunto: RE: [OpenSER-Users] Problems with SIMPLE-XMPP presence
>
> Well, I have made some tests and I think I have found what could be a
wrong
> behaviour of the pua_xmpp module, leading to the situation described in
the
> previous post. I will try to explain it better here.
>
> Every time a XMPP client changes its presence status, pua_xmpp sends what
> seems to be re-subscribes for each of its contacts belonging to the SIP
> domain. The problem is that they are not linked with the original
suscribes
> because they don't have the same To-Tag (neither have they the same branch
> in Via header, but I don't think that's important). For example:
>
>
> - PREVIOUS SUBSCRIBE:
>
> SUBSCRIBE sip:354 at openser.domain SIP/2.0
> Via: SIP/2.0/UDP 10.95.43.31;branch=z9hG4bKe5a9.a616d022.0
> To: sip:354 at openser.domain
> From:
> sip:pge354*xmpp.domain at xmpp-gw;tag=533cb9e91f4b999cf76861cbb9ed54ed-be94
> CSeq: 10 SUBSCRIBE
> Call-ID: 7d71efef-20757 at 10.95.43.31
> Content-Length: 0
> User-Agent: OpenSER (1.3.1-notls (i386/linux))
> Max-Forwards: 70
> Event: presence
> Contact: <sip:pge354*xmpp.domain at xmpp-gw>
> Expires: 473
>
>
> - NEW SUBSCRIBE AFTER STATUS CHANGE:
>
> SUBSCRIBE sip:354 at openser.domain SIP/2.0
> Via: SIP/2.0/UDP 10.95.43.31;branch=z9hG4bKf5a9.e1802f23.0
> To: sip:354 at openser.domain;tag=10.20757.1209988007.20
> From:
> sip:pge354*xmpp.domain at xmpp-gw;tag=533cb9e91f4b999cf76861cbb9ed54ed-be94
> CSeq: 11 SUBSCRIBE
> Call-ID: 7d71efef-20757 at 10.95.43.31
> Content-Length: 0
> User-Agent: OpenSER (1.3.1-notls (i386/linux))
> Max-Forwards: 70
> Event: presence
> Contact: <sip:pge354*xmpp.domain at xmpp-gw>
> Expires: 3610
>
>
> As a result, the later subscribe request is rejected with a 404 Not Here
> response. The pua_xmpp, upon receiving the response, sends a brand new
> subscribe request, that has nothing to do with the others and is accepted
by
> openser.
>
> When this is done for every contact the XMPP client has, I can see in
> database how presentity table has one more row that it had before (showing
> the last status change) and how active_watchers table has grown as many
rows
> as contacts have been involved (one for each new suscribe). And they keep
> growing every time there is a change in the presence status of the XMPP
> client.
>
> So, please, let me know whether I am right and this is something to be
> fixed.
>
> Thank you,
> Pablo
>
>
> -----Mensaje original-----
> De: Pablo Guijarro Enríquez [mailto:pge at moviquity.com] 
> Enviado el: jueves, 17 de abril de 2008 17:56
> Para: 'Anca Vamanu'
> Asunto: RE: [OpenSER-Users] Problems with SIMPLE-XMPP presence
>
> Thanks, Anca, that was it :)
>
> Now presence information is shown in both the SIP and the XMPP client, but
> there are still some estrange behaviours in openser.
>
> First, when I start the SIP client with the XMPP client already online,
some
> kind of loop occurs, as you can see in the log attached. The following
> NOTIFY message is sent again and again for a while, changing just the
> from-tag, branch and call-id:
>
> NOTIFY sip:pge354*xmpp.domain at xmpp-gw SIP/2.0
> Via: SIP/2.0/UDP 10.95.43.31;branch=z9hG4bK1d12.1b727435.0
> To:
sip:pge354*xmpp.domain at xmpp-gw;tag=533cb9e91f4b999cf76861cbb9ed54ed-38b3
> From: sip:354354 at openser.domain;tag=10.1700.1208442687.20
> CSeq: 2 NOTIFY
> Call-ID: 6ce7eb86-1701 at 10.95.43.31
> Content-Length: 471
> User-Agent: OpenSER (1.3.1-notls (i386/linux))
> Max-Forwards: 70
> Event: presence
> Contact: <sip:10.95.43.31>
> Subscription-State: active;expires=2631
> Content-Type: application/pidf+xml
> <...>
>
>
> The first couple of them get the following response, but not all the
others,
> that get no answer:
>
> SIP/2.0 200 OK
> Via: SIP/2.0/UDP 10.95.43.31;branch=z9hG4bK1d12.1b727435.0
> To:
sip:pge354*xmpp.domain at xmpp-gw;tag=533cb9e91f4b999cf76861cbb9ed54ed-38b3
> From: sip:354354 at openser.domain;tag=10.1700.1208442687.20
> CSeq: 2 NOTIFY
> Call-ID: 6ce7eb86-1701 at 10.95.43.31
> Server: OpenSER (1.3.1-notls (i386/linux))
> Content-Length: 0
>
>
> It seems that the responses are not taken into account, or maybe it is
> related with the other thing I find weird, the fact that pua and
presentity
> tables in Mysql database grows continuously with registries that are much
> like already existing ones. Sample of the pua table:
>
> | 18432 | sip:pge354*xmpp.domain at xmpp-gw    |         |     1 | 1208449465
|
> 0 |    8 | a.1208441749.1702.41.0 |            |                      |
> |                       |                                       |    0 |
> |                      |       0 |               |
>
> | 18428 | sip:pge354*xmpp.domain at xmpp-gw    |         |     1 | 1208449357
|
> 0 |    8 | a.1208441749.1701.25.0 | 0xbf9787bc |                      |
> |                       |                                       |    0 |
> NULL         |                      |       0 |               |
>
> | 18429 | sip:354354 at openser.domain |         |     1 | 1208449356 |
> 0 |   16 |                        |            |
> sip:pge354*xmpp.domain at xmpp-gw | 6ce7eb87-1700 at 10.95.43.31 |
> 10.1700.1208445755.35 | 533cb9e91f4b999cf76861cbb9ed54ed-9c6c |   10 |
NULL
> |                      |       0 |               |
>
> | 18420 | sip:pge354*xmpp.domain at xmpp-gw    |         |     1 | 1208446132
|
> 0 |    8 | a.1208441749.1700.12.0 | 0xbf9787bc |                      |
> |                       |                                       |    0 |
> |                      |       0 |               |
>
> | 18427 | sip:800094 at openser.domain |         |     1 | 1208449357 |
> 1208449345 |   16 |                        |            |
> sip:pge354*xmpp.domain at xmpp-gw | 6ce7eb87-1701 at 10.95.43.31 |
> 10.1703.1208445756.21 | 533cb9e91f4b999cf76861cbb9ed54ed-463c |   10 |
> |                      |       0 |               |
>
> | 18426 | sip:800094 at openser.domain |         |     1 | 1208449357 |
> 1208449355 |   16 |                        |            |
> sip:pge354*xmpp.domain at xmpp-gw | 6ce7eb9f                  |
> 10.1700.1208445756.36 | 533cb9e91f4b999cf76861cbb9ed54ed-6582 |   10 |
> | sip:pge354*xmpp.domain at xmpp-gw |       0 |               |
>
> | 18423 | sip:pge354*xmpp.domain at xmpp-gw    |         |     1 | 1208446287
|
> 0 |    8 | a.1208441749.1701.17.0 |            |                      |
> |                       |                                       |    0 |
> |                      |       0 |               |
>
> | 18425 | sip:354354 at openser.domain |         |     1 | 1208449228 |
> 0 |   16 |                        |            |
> sip:pge354*xmpp.domain at xmpp-gw | 6ce7eb98                  |
> 10.1700.1208445628.32 | 533cb9e91f4b999cf76861cbb9ed54ed-da39 |   10 |
> | sip:pge354*xmpp.domain at xmpp-gw |       0 |               |
>
> | 18438 | sip:354354 at openser.domain |         |     1 | 1208449387 |
> 0 |   16 |                        |            |
> sip:pge354*xmpp.domain at xmpp-gw | 6ce7eb91-1703 at 10.95.43.31 |
> 10.1703.1208445918.32 | 533cb9e91f4b999cf76861cbb9ed54ed-7095 |   10 |
NULL
> |                      |       0 |               
>
>
> Every time the XMPP client changes its presence state, one registry is
added
> to the presentity table. Sample:
>
> | 783 | pge354*xmpp.domain | xmpp-gw           | presence |
> a.1208441749.1701.36.1 | 1208449478 |    1208445878 | <?xml
version="1.0"?>
> <presence xmlns="urn:ietf:params:xml:ns:pidf"
> xmlns:dm="urn:ietf:params:xml:ns:pidf:data-model"
> xmlns:rpid="urn:ietf:params:xml:ns:pidf:rpid"
> xmlns:c="urn:ietf:params:xml:ns:pidf:cipid"
> entity="pres:pge354*xmpp.domain at xmpp-gw">
>   <tuple id="0xbf9787bc">
>     <status>
>       <basic>open</basic>
>     </status>
>   </tuple>
> </presence>
>  
> |
> | 785 | pge354*xmpp.domain | xmpp-gw           | presence |
> a.1208441749.1702.45.0 | 1208449517 |    1208445917 | <?xml
version="1.0"?>
> <presence xmlns="urn:ietf:params:xml:ns:pidf"
> xmlns:dm="urn:ietf:params:xml:ns:pidf:data-model"
> xmlns:rpid="urn:ietf:params:xml:ns:pidf:rpid"
> xmlns:c="urn:ietf:params:xml:ns:pidf:cipid"
> entity="pres:pge354*xmpp.domain at xmpp-gw">
>   <tuple id="0xbf9787bc">
>     <status>
>       <basic>open</basic>
>     </status>
>   </tuple>
> </presence>
>  
> |
> | 786 | pge354*xmpp.domain | xmpp-gw           | presence |
> a.1208441749.1702.52.1 | 1208450140 |    1208446540 | <?xml
version="1.0"?>
> <presence xmlns="urn:ietf:params:xml:ns:pidf"
> xmlns:dm="urn:ietf:params:xml:ns:pidf:data-model"
> xmlns:rpid="urn:ietf:params:xml:ns:pidf:rpid"
> xmlns:c="urn:ietf:params:xml:ns:pidf:cipid"
> entity="pres:pge354*xmpp.domain at xmpp-gw">
>   <tuple id="0xbf9787bc">
>     <status>
>       <basic>open</basic>
>     </status>
>   </tuple>
>   <note>away</note>
>   <person id="0xbf9787bc">
>     <activities/>
>     <note>away</note>
>   </person>
> </presence>
>
>
> How can I solve all this issues?
>
> Regards,
> Pablo
>
>
> -----Mensaje original-----
> De: Anca Vamanu [mailto:anca at voice-system.ro] 
> Enviado el: jueves, 17 de abril de 2008 11:13
> Para: Pablo Guijarro Enríquez
> CC: users at lists.openser.org
> Asunto: Re: [OpenSER-Users] Problems with SIMPLE-XMPP presence
>
> Hello,
>
> There is something missing in your configuration file. See econfig 
> example from version 1.3 (etc/openser.cfg, line 214). You should add 
> something like this on the else branch for in dialog requests:
> if (is_method("SUBSCRIBE|NOTIFY") && ($rd == "your.server.ip.address"| 
> $rd=="xmpp-gw"))
> {
> # in-dialog subscribe requests
> route(2);
> exit;
> }
>
> The way you have it now, all in dialog requests are not allowed, that is 
> all Notifies and the in dialog Subscribes.
>
> regards,
> Anca Vamanu
>
>
> Pablo Guijarro Enríquez wrote:
>   
>> Hi again,
>>
>> Sorry about the delay and thanks for your support. I did so, but it still
>> does not work. The fact is that the subscription to the XMPP user is sent
>> from the SIP user and reaches openser, which sends back a notify request
>> with no presence information at all. In between there is not exchange of
>> information with the XMPP either.
>>
>> Then openser sends itself the couple of subscribe requests mentioned in
my
>> later post (now both with sip:10.95.43.31 as contact header), the first
of
>> which is rejected (due to the to-tag, I suppose), while the second one is
>> accepted. As a result of that request, a notify is sent towards itself,
>>     
> but
>   
>> it is rejected with a 404 Not Here response. This one do carry some
>>     
> presence
>   
>> information, but nothing interesting:
>>
>> Content-Type: application/watcherinfo+xml
>>
>> <?xml version="1.0"?>
>> <watcherinfo xmlns="urn:ietf:params:xml:ns:watcherinfo" version="0"
>> state="full">
>>   <watcher-list resource="sip:pge354*xmpp-domain at xmpp-gw"
>> package="presence"/>
>> </watcherinfo>
>>
>> Let me know whether that behaviour is the expected one or not, and what
>>     
> the
>   
>> reason could be for it not to work (see log attached).
>>
>> Regards,
>> Pablo
>>
>>
>> -----Mensaje original-----
>> De: Anca Vamanu [mailto:anca at voice-system.ro] 
>> Enviado el: viernes, 11 de abril de 2008 15:51
>> Para: Pablo Guijarro Enríquez
>> CC: users at lists.openser.org
>> Asunto: Re: [OpenSER-Users] Problems with SIMPLE-XMPP presence
>>
>> Hi,
>>
>> You need to add a host alias for 'xmpp-gw' on the machine running 
>> openser. OpenSER does dns lookup to figure out if the destination is it, 
>> and the R-URI has a special meaning in presence so it should be kept 
>> with that key.
>> As for the contact, please change the parameter to 'sip:10.95.43.31 '
>>
>> regards,
>> Anca
>>
>> Pablo Guijarro Enríquez wrote:
>>   
>>     
>>> Yes, you were right. Now errors have disappeared, but still there is not
>>> exchange of information between servers.
>>>
>>> In the log there are a couple of things that I find strange. The first
>>>       
> one
>   
>>> is that at some point openser tries to resolve xmpp-gw, which is only
the
>>> key to mark users from the xmpp domain.
>>>
>>> The second is that, upon receiving the subscription from the client,
>>>     
>>>       
>> openser
>>   
>>     
>>> first sends itself a subscription request, with the IP address
>>>       
> established
>   
>>> in the pua_xmpp server_address parameter as Contact header value, which
>>>       
> is
>   
>>> answered with a 404 response, and then it sends the same request but
>>> changing the Contact header to the URI sip:openser.domain:5060, which is
>>> accepted with a 200 response (see both below). Is that OK? Or should I
>>> change that parameter to the URI, despite the instructions given in the
>>> module documentation?
>>>
>>>
>>> SUBSCRIBE sip:pge*xmpp.domain at xmpp-gw SIP/2.0
>>> Via: SIP/2.0/UDP 10.95.43.31;branch=z9hG4bKbca.c6e4c5f1.0
>>> To: sip:pge*xmpp.domain at xmpp-gw;tag=10.12575.1207664296.3
>>> From:
>>>     
>>>       
>> sip:pge*xmpp.domain at xmpp-gw;tag=533cb9e91f4b999cf76861cbb9ed54ed-2ab3
>>   
>>     
>>> CSeq: 11 SUBSCRIBE
>>> Call-ID: 77e00002-12580 at 10.95.43.31
>>> Content-Length: 0
>>> User-Agent: OpenSER (1.3.1-notls (i386/linux))
>>> Max-Forwards: 70
>>> Event: presence.winfo
>>> Contact: <10.95.43.31>
>>> Expires: 3610
>>>
>>>
>>> SUBSCRIBE sip:pge*xmpp.domain at xmpp-gw SIP/2.0
>>> Via: SIP/2.0/UDP 10.95.43.31;branch=z9hG4bKafa2.9020b137.0
>>> To: sip:pge*xmpp.domain at xmpp-gw
>>> From: sip:
>>>     
>>>       
>> pge*xmpp.domain at xmpp-gw;tag=533cb9e91f4b999cf76861cbb9ed54ed-5c38
>>   
>>     
>>> CSeq: 10 SUBSCRIBE
>>> Call-ID: 77e00001-12581 at 10.95.43.31
>>> Content-Length: 0
>>> User-Agent: OpenSER (1.3.1-notls (i386/linux))
>>> Max-Forwards: 70
>>> Event: presence.winfo
>>> Contact: <sip:openser.domain:5060>
>>> Expires: 3610
>>>
>>>
>>> Thanks again,
>>> Paul
>>>
>>>
>>> -----Mensaje original-----
>>> De: Anca Vamanu [mailto:anca at voice-system.ro] 
>>> Enviado el: martes, 08 de abril de 2008 16:07
>>> Para: Pablo Guijarro Enríquez
>>> CC: users at lists.openser.org
>>> Asunto: Re: [OpenSER-Users] Problems with SIMPLE-XMPP presence
>>>
>>> Try compiling the pua_xmpp module; it has some references in pua module 
>>> that I guess have been broken.
>>>
>>> Anca
>>>
>>> Pablo Guijarro Enríquez wrote:
>>>   
>>>     
>>>       
>>>> Thanks Anca,
>>>>
>>>> I tried what you told me. The message about not sending subscribe is no
>>>>     
>>>>       
>>>>         
>>> more
>>>   
>>>     
>>>       
>>>> shown, but some new errors appear and presence does not work yet.
>>>>
>>>> Regards,
>>>> Paul
>>>>
>>>> -----Mensaje original-----
>>>> De: Anca Vamanu [mailto:anca at voice-system.ro] 
>>>> Enviado el: martes, 08 de abril de 2008 14:30
>>>> Para: Pablo Guijarro Enríquez
>>>> CC: users at lists.openser.org
>>>> Asunto: Re: [OpenSER-Users] Problems with SIMPLE-XMPP presence
>>>>
>>>> Hi Pablo,
>>>>
>>>> There was an optimization in pua version included in 1.3.1 release that

>>>> sometimes prevented the presence sip-xmpp gateway from working (
related
>>>>         
>
>   
>>>> to the message "Found previous request for unlimited subscribe- do not 
>>>> send subscribe") from the log.
>>>> This was removed in the svn version of the branch. I advise you to take

>>>> the pua module from svn 1.3 branch.
>>>>
>>>> regards,
>>>> Anca Vamanu
>>>>
>>>>
>>>> Pablo Guijarro Enríquez wrote:
>>>>   
>>>>     
>>>>       
>>>>         
>>>>> Hi everybody,
>>>>>
>>>>> I have some problems to get presence information exchanged between SIP

>>>>> users and xmpp ones. SIP clients (X-Lite) depend on an openser server 
>>>>> v1.3.1, with all necessary modules working within it, and xmpp clients

>>>>> (Psi) rely on an xmpp server (ejabberd) which is in the same machine.
>>>>>
>>>>> The link between both sip and xmpp servers is established when openser

>>>>> starts, and the exchange of instant messages between sip and xmpp 
>>>>> users works fine. So does presence too, as long as there are only sip 
>>>>> users or only xmpp users involved, but it does not work between the 
>>>>> two “worlds” in any direction. Moreover, I do not see any packet being

>>>>> exchanged between the sip and the xmpp servers when a user from one 
>>>>> domain subscribe to one from the other, or when they change their
>>>>>         
>>>>>           
>> status.
>>   
>>     
>>>>> I don’t know what the problem can be. No errors appear in the log and 
>>>>> I thought adding xmpp presence to openser would be straightforward 
>>>>> once the IM was already working.
>>>>>
>>>>> Openser config file and part of the log file (the subscription to an 
>>>>> xmpp user) are attached. Hope someone can give me some clue.
>>>>>
>>>>> Thanks in advance!
>>>>>
>>>>> Paul
>>>>>
>>>>>
>>>>>           
> ------------------------------------------------------------------------
>   
>>>>> _______________________________________________
>>>>> Users mailing list
>>>>> Users at lists.openser.org
>>>>> http://lists.openser.org/cgi-bin/mailman/listinfo/users
>>>>>   
>>>>>     
>>>>>       
>>>>>         
>>>>>           
>>>>   
>>>>     
>>>>       
>>>>         
>>>   
>>>     
>>>       
>>   
>>     
>
>
>   






More information about the Users mailing list