Hi,

 

Thank you for your answer. It seems to be a bug in Asterisk, I have opened a 
issues.

 

Best regards,

 

Cyrille

 

De : sr-users [mailto:[email protected]] De la part de M S
Envoyé : vendredi 16 février 2018 15:51
À : Kamailio (SER) - Users Mailing List <[email protected]>
Objet : Re: [SR-Users] PUBLISH and ETag

 

First, RFCs related to SIP presence are quite confusing sometimes and often not 
fully implemented by presence servers and endpoints.

Secondly, dialog presence event for first call has already completed its 
life-cycle i.e. It has been terminated by second publish from Asterisk. You can 
not change dialog state AFTER it has been terminated. Thus, third publish is 
rejected by kamailio. Asterisk is suppose to send third publish without 
sip-if-match header since it is new call and thus a new dialog, completely 
unrelated to previous call and dialog.

Hope this helps.



On Fri 16. Feb 2018 at 13:40, Cyrille Demaret <[email protected] 
<mailto:[email protected]> > wrote:

Hi,

 

I’m using Kamailio with presence enabled and Asterisk PJSIP and 
outbound-publish. My problem is happening when I place 2 consecutive calls from 
Asterisk :

 

When I make a first call Asterisk sent the following:

 

PUBLISH sip:[email protected] <mailto:sip%[email protected]>  SIP/2.0

Via: SIP/2.0/UDP 
192.168.100.37:5080;rport;branch=z9hG4bKPj4f9c19eb-26d8-4bb1-8f00-e69723a61082

From: sip:[email protected] <mailto:sip%[email protected]> 
;tag=a560e088-9e8a-49f2-a9b1-4a0ec31340bf

To: sip:[email protected] <mailto:sip%[email protected]> 

Call-ID: 5adcf0a0-f138-44d6-8c56-eaf7c3b3b183

CSeq: 10697 PUBLISH

Event: dialog

Expires: 180

Max-Forwards: 70

User-Agent: Asterisk PBX 14.6.0

Content-Type: application/dialog-info+xml

Content-Length: 247

 

<?xml version="1.0" encoding="UTF-8"?> early……

 

Kamailio replies :

 

SIP/2.0 200 OK

Via: SIP/2.0/UDP 
192.168.100.37:5080;rport=5080;branch=z9hG4bKPj4f9c19eb-26d8-4bb1-8f00-e69723a61082;received=192.168.100.37

From: sip:[email protected] <mailto:sip%[email protected]> 
;tag=a560e088-9e8a-49f2-a9b1-4a0ec31340bf

To: sip:[email protected] <mailto:sip%[email protected]> 
;tag=b596189c6de9c38f624fd84638f43be6-ff39

Call-ID: 5adcf0a0-f138-44d6-8c56-eaf7c3b3b183

CSeq: 10697 PUBLISH

Expires: 180

SIP-ETag: a.1518775074.19863.16.0

Server: kamailio (5.0.5 (x86_64/linux))

Content-Length: 0

 

When the call is done, Asterisk sent another PUBLISH telling that the call if 
terminated :

 

PUBLISH sip:[email protected] <mailto:sip%[email protected]>  SIP/2.0

Via: SIP/2.0/UDP 
192.168.100.37:5080;rport;branch=z9hG4bKPja93efb01-a518-445e-9e9b-f6f97ab8c752

From: sip:[email protected] <mailto:sip%[email protected]> 
;tag=165fb3b2-ec0e-4786-889f-eb194ad456ce

To: sip:[email protected] <mailto:sip%[email protected]> 

Call-ID: 5adcf0a0-f138-44d6-8c56-eaf7c3b3b183

CSeq: 10698 PUBLISH

Event: dialog

SIP-If-Match: a.1518775074.19863.16.0

Expires: 180

Max-Forwards: 70

User-Agent: Asterisk PBX 14.6.0

Content-Type: application/dialog-info+xml

Content-Length: 230

 

<?xml version="1.0" encoding="UTF-8"?> terminated….

 

And Kamailio replies :

 

SIP/2.0 200 OK

Via: SIP/2.0/UDP 
192.168.100.37:5080;rport=5080;branch=z9hG4bKPja93efb01-a518-445e-9e9b-f6f97ab8c752;received=192.168.100.37

From: sip:[email protected] <mailto:sip%[email protected]> 
;tag=165fb3b2-ec0e-4786-889f-eb194ad456ce

To: sip:[email protected] <mailto:sip%[email protected]> 
;tag=b596189c6de9c38f624fd84638f43be6-48b4

Call-ID: 5adcf0a0-f138-44d6-8c56-eaf7c3b3b183

CSeq: 10698 PUBLISH

Expires: 180

SIP-ETag: a.1518775074.19873.18.1

Server: kamailio (5.0.5 (x86_64/linux))

Content-Length: 0

 

Here, the SIP ETag is a.1518775074.19873.18.1.

 

The problem is if I make a new call before the expiration of the previous 
SUBSCRIBE, Asterisk reuse this SIP ETag according to the RFC :

 

PUBLISH sip:[email protected] <mailto:sip%[email protected]>  SIP/2.0

Via: SIP/2.0/UDP 
192.168.100.37:5080;rport;branch=z9hG4bKPj9d13bb82-31d9-48db-9672-bd4b6b4f22f0

From: sip:[email protected] <mailto:sip%[email protected]> 
;tag=33e6b028-0444-4b3a-8bc2-4a987a291528

To: sip:[email protected] <mailto:sip%[email protected]> 

Call-ID: 5adcf0a0-f138-44d6-8c56-eaf7c3b3b183

CSeq: 10699 PUBLISH

Event: dialog

SIP-If-Match: a.1518775074.19873.18.1

Expires: 180

Max-Forwards: 70

User-Agent: Asterisk PBX 14.6.0

Content-Type: application/dialog-info+xml

Content-Length: 247

 

<?xml version="1.0" encoding="UTF-8"?> early…

 

Kamailio refuse it with this error : “Trying to update an already terminated 
state. Skipping update.” because the call is considered as terminated.

 

The RFC is stating :

 

When updating previously published event state, PUBLISH requests MUST

contain a single SIP-If-Match header field identifying the specific

event state that the request is refreshing, modifying or removing.

This header field MUST contain a single entity-tag that was returned

by the ESC in the SIP-ETag header field of the response to a previous

publication.

 

Why Kamailio is acting like that?

 

Best regards,

 

Cyrille

 

_______________________________________________
Kamailio (SER) - Users Mailing List
[email protected] <mailto:[email protected]> 
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users

_______________________________________________
Kamailio (SER) - Users Mailing List
[email protected]
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users

Reply via email to