[asterisk-bugs] [JIRA] (ASTERISK-22939) Missing/wrong local party in dialog-info NOTIFY body

Pietro Bertera (JIRA) noreply at issues.asterisk.org
Wed Dec 4 11:01:05 CST 2013


     [ https://issues.asterisk.org/jira/browse/ASTERISK-22939?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Pietro Bertera updated ASTERISK-22939:
--------------------------------------

    Description: 
When Asterisk sends the NOTIFY for dialog-info subscriptions the body must contains local end remote parties informations (if notifycid is enabled in sip.conf).

In latest Asterisk certified (1.8.15-cert3) the local party contained into the XML body is wrong:

Here an example:

{code:xml} 
<?xml version="1.0"?>
<dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info" version="3" state="full" entity="sip:151 at 172.16.18.40">
<dialog id="151" call-id="pickup-529f3da7a0f9-kl0tcqsb55r2" local-tag="hd7xevk85l" remote-tag="as5ef372fc" direction="recipient">
<remote>
<identity display="152">sip:152 at 172.16.18.40</identity>
<target uri="sip:152 at 172.16.18.40"/>
</remote>
<local>
<identity display="">sip:@172.16.18.40</identity>
<target uri="sip:@172.16.18.40"/>
</local>
<state>early</state>
</dialog>
</dialog-info>
{code} 

as you can see the extension part is missing from the local/identiy and local/target tags.
You can see as well in the attached pcap trace [^Asterisk-notifycid.pcap] (packet #8)

You can easy reproduce using the below configuration:

*extensions.conf:*

{noformat}
[general]
static=yes
writeprotect=no
clearglobalvars=no

[globals]


[default]

[from-sip]
exten => _X.,hint,SIP/${EXTEN}
exten => _X.,1,Answer()
exten => _X.,n,Dial(SIP/${EXTEN},30)
{noformat}

*sip.conf:*

{noformat}
[general]
allowsubscribe=yes
notifyringing=yes
notifyhold=yes
call-limit=99
notifycid=ignore-context

counteronpeer=no
progressinband=never
pickupgroup=1
canreinvite=yes

[basic](!)
context=from-sip
subscribecontext=from-sip
call-limit=10
progressinband=never
type=friend

[150](basic)
secret=1234
host=dynamic
type=friend

[151](basic)
secret=1234
host=dynamic
type=friend

[152](basic)
secret=1234
host=dynamic
type=friend
{noformat}

*Reproduction steps:*

- register 3 devices (A,B,C) against defined extensions,
- configure a device (A) to subscribe for dialog-info events against extension B
- device B calls device C

Attached patch (written agains 1.8.15-cert3) [^ASTERISK-16735-local-dialoginfo.patch] provides a fallback mechanism in case of extension part is missing due to caller->connected.id.name.valid = false.
Oldest Asterisk versions are not affected (tested 1.8.11).

  was:
When Asterisk sends the NOTIFY for dialog-info subscriptions the body must contains local end remote parties informations (if notifycid is enabled in sip.conf).

In latest Asterisk certified (1.8.15-cert3) the local party contained into the XML body is wrong:

Here an example:

{code:xml} 
<?xml version="1.0"?>
<dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info" version="3" state="full" entity="sip:151 at 172.16.18.40">
<dialog id="151" call-id="pickup-529f3da7a0f9-kl0tcqsb55r2" local-tag="hd7xevk85l" remote-tag="as5ef372fc" direction="recipient">
<remote>
<identity display="152">sip:152 at 172.16.18.40</identity>
<target uri="sip:152 at 172.16.18.40"/>
</remote>
<local>
<identity display="">sip:@172.16.18.40</identity>
<target uri="sip:@172.16.18.40"/>
</local>
<state>early</state>
</dialog>
</dialog-info>
{code} 

as you can see the extension part is missing from the local/identiy and local/target tags.
You can see as well in the attached pcap trace [^Asterisk-notifycid.pcap] (packet #8)

You can easy reproduce using the below configuration:

*extensions.conf:*

{noformat}
[general]
static=yes
writeprotect=no
clearglobalvars=no

[globals]


[default]

[from-sip]
exten => _X.,hint,SIP/${EXTEN}
exten => _X.,1,Answer()
exten => _X.,n,Dial(SIP/${EXTEN},30)
{noformat}

*sip.conf:*

{noformat}
[general]
allowsubscribe=yes
notifyringing=yes
notifyhold=yes
call-limit=99
notifycid=ignore-context

counteronpeer=no
progressinband=never
pickupgroup=1
canreinvite=yes

[basic](!)
context=from-sip
subscribecontext=from-sip
call-limit=10
progressinband=never
type=friend

[150](basic)
secret=1234
host=dynamic
type=friend

[151](basic)
secret=1234
host=dynamic
type=friend

[152](basic)
secret=1234
host=dynamic
type=friend
{noformat}

*Reproduction steps:*

- register 3 devices (A,B,C) against defined extensions,
- configure a device (A) to subscribe for dialog-info events against extension B
- device B calls device C

Attached patch [^ASTERISK-16735-local-dialoginfo.patch] provides a fallback mechanism in case of extension part is missing due to caller->connected.id.name.valid = false.
Oldest Asterisk versions are not affected (tested 1.8.11).

    
> Missing/wrong local party in dialog-info NOTIFY body
> ----------------------------------------------------
>
>                 Key: ASTERISK-22939
>                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-22939
>             Project: Asterisk
>          Issue Type: Bug
>      Security Level: None
>          Components: Channels/chan_sip/Subscriptions
>    Affects Versions: 1.8.15.0, 1.8.24.0
>            Reporter: Pietro Bertera
>         Attachments: ASTERISK-16735-local-dialoginfo.patch, Asterisk-notifycid.pcap
>
>
> When Asterisk sends the NOTIFY for dialog-info subscriptions the body must contains local end remote parties informations (if notifycid is enabled in sip.conf).
> In latest Asterisk certified (1.8.15-cert3) the local party contained into the XML body is wrong:
> Here an example:
> {code:xml} 
> <?xml version="1.0"?>
> <dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info" version="3" state="full" entity="sip:151 at 172.16.18.40">
> <dialog id="151" call-id="pickup-529f3da7a0f9-kl0tcqsb55r2" local-tag="hd7xevk85l" remote-tag="as5ef372fc" direction="recipient">
> <remote>
> <identity display="152">sip:152 at 172.16.18.40</identity>
> <target uri="sip:152 at 172.16.18.40"/>
> </remote>
> <local>
> <identity display="">sip:@172.16.18.40</identity>
> <target uri="sip:@172.16.18.40"/>
> </local>
> <state>early</state>
> </dialog>
> </dialog-info>
> {code} 
> as you can see the extension part is missing from the local/identiy and local/target tags.
> You can see as well in the attached pcap trace [^Asterisk-notifycid.pcap] (packet #8)
> You can easy reproduce using the below configuration:
> *extensions.conf:*
> {noformat}
> [general]
> static=yes
> writeprotect=no
> clearglobalvars=no
> [globals]
> [default]
> [from-sip]
> exten => _X.,hint,SIP/${EXTEN}
> exten => _X.,1,Answer()
> exten => _X.,n,Dial(SIP/${EXTEN},30)
> {noformat}
> *sip.conf:*
> {noformat}
> [general]
> allowsubscribe=yes
> notifyringing=yes
> notifyhold=yes
> call-limit=99
> notifycid=ignore-context
> counteronpeer=no
> progressinband=never
> pickupgroup=1
> canreinvite=yes
> [basic](!)
> context=from-sip
> subscribecontext=from-sip
> call-limit=10
> progressinband=never
> type=friend
> [150](basic)
> secret=1234
> host=dynamic
> type=friend
> [151](basic)
> secret=1234
> host=dynamic
> type=friend
> [152](basic)
> secret=1234
> host=dynamic
> type=friend
> {noformat}
> *Reproduction steps:*
> - register 3 devices (A,B,C) against defined extensions,
> - configure a device (A) to subscribe for dialog-info events against extension B
> - device B calls device C
> Attached patch (written agains 1.8.15-cert3) [^ASTERISK-16735-local-dialoginfo.patch] provides a fallback mechanism in case of extension part is missing due to caller->connected.id.name.valid = false.
> Oldest Asterisk versions are not affected (tested 1.8.11).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.asterisk.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira



More information about the asterisk-bugs mailing list