Hello,
you said that the publish is created by the phones in your case, not by
kamailio with pua_dialoginfo, right?
If yes, then one question for Klaus D. in this case ... the body is
build in pua_dialoginfo with the placeholder and presence_dialoginfo
expects that? I had not dug in the code yet, just double-checking here.
Thanks,
Daniel
On 3/31/11 11:03 AM, Klaus Feichtinger wrote:
Hello Daniel,
The problem is, that the format shown in the original email message below
isn’t original. Some space characters are deleted. I will write it in
another form:
Party A:
A-1) initial notification to a Subscribe message was without body (because
no information about the subscribed party was available)
A-2) publication of a dialog state with PUBLISH:
<dialog-info xmlns=[..] version="4" state="full" entity[..]>
A-3) publication of a dialog state with PUBLISH:
<dialog-info xmlns=[..] version="5" state="full" entity[..]>
A-4) second notification to a dialog state change (confirmed, PUBLISHed
with PUBLISH ad B-4 below):
<dialog-info xmlns=[..] version="1" ll" entity[..]>
Party B:
B-1) Initial notification to a Subscribe message:
<dialog-info xmlns=[..] version="00000000000" state="full" entity[..]>
B-2) second notification to a dialog state change (confirmed, PUBLISHed
with PUBLISH ad A-2 above):
<dialog-info xmlns=[..] version="1" state="full" entity[..]>
B-3) third notification to a dialog state change (terminated, PUBLISHed
with PUBLISH ad A-3 above):
<dialog-info xmlns=[..] version="2" state="full" entity[..]>
B-4) publication of a dialog state with PUBLISH:
<dialog-info xmlns=[..] version="4" state="full" entity[..]>
So here you can (should) see that the full string-length of the
placeholder is used all time and in the situations above filled with space
characters.
Regards,
Klaus
Hello,
On 3/30/11 3:01 PM, Klaus Feichtinger wrote:
Hello list,
I have a special situation in which string characters of the
"root-line" of the notify-body are overwritten by Kamailio. In detail:
the root-line of the NOTIFY message sent to the subscriber looks like:
<dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info" version="1"
ll" entity="sip:[email protected]"> instead of
<dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info" version="1"
state="full" entity="sip:[email protected]"> In other words: the
string state="full" is overwritten by space characters.
Is it by space or by the versios="1"? Maybe the email body encoding ate
the spaces, above looks like one space before 'll"'.
Cheers,
Daniel
Therefore the message
is no longer "valid" and the parser of the subscriber-user agent has
problems....
The exact scenario in my use case is, that user agents can subscribe
the events "presence" and "dialog" on Kamailio. The information about
presence and dialog-states is published to Kamailio by PUBLISH
messages from the user agents themselves. Kamailio does not have to
generate this information itself. In the following lines I have an
excerpt of the signalisation: 1) initial subscription of party A, 2)
the responded notification (without body) 3) subscription of party B
4) the responded notification (with body) 5) a publish message of the
subscribed party B with actual dialog information and 6) the
notification with body to the subscriber A.
1) Initial SUBSCRIBE message of party A:
======================================SUBSCRIBE sip:[email protected]
SIP/2.0 Via: SIP/2.0/UDP
10.16.10.93:5060;rport;branch=z9hG4bK1411449981
From:<sip:[email protected]>;tag=2453899634-24035392-1301468026894
To:<sip:[email protected]>
Call-ID: [email protected]
CSeq: 20 SUBSCRIBE
Contact:<sip:[email protected]:5060>
Max-Forwards: 70
User-Agent: SipTapi
Expires: 3600
Event: dialog
Content-Length: 0
2) Responded NOTIFY message from Kamailio:
========================================NOTIFY
sip:[email protected]:5060 SIP/2.0 Via: SIP/2.0/UDP
10.16.10.99;branch=z9hG4bK7cc7.08e060b6000000000000000000000000.0 To:
sip:[email protected];tag=2453899634-24035392-1301468026894 From:
sip:[email protected];tag=a23c71953194c2c72e41c4d20e4f7127-86e1 CSeq:
1 NOTIFY
Call-ID: [email protected]
Content-Length: 0
User-Agent: kamailio (3.1.2 (i386/linux))
Max-Forwards: 70
Event: dialog
Contact:<sip:10.16.10.99:5060>
Subscription-State: active;expires=3670
3) Initial SUBSCRIBE message of party B:
======================================SUBSCRIBE sip:[email protected]
SIP/2.0 Via: SIP/2.0/UDP
10.16.10.90:5060;rport;branch=z9hG4bK4016956575
From:<sip:[email protected]>;tag=2605346227-26329880-1301468174702
To:<sip:[email protected]>
Call-ID: [email protected]
CSeq: 20 SUBSCRIBE
Contact:<sip:[email protected]:5060>
Max-Forwards: 70
User-Agent: SipTapi
Expires: 3600
Event: dialog
Content-Length: 0
4) Responded NOTIFY message from Kamailio (with version number
"00000000000"!!!!):
==============================================================================NOTIFY
sip:[email protected]:5060 SIP/2.0 Via: SIP/2.0/UDP
10.16.10.99;branch=z9hG4bK10e8.31cb2284000000000000000000000000.0 To:
sip:[email protected];tag=2605346227-26329880-1301468174702 From:
sip:[email protected];tag=a23c71953194c2c72e41c4d20e4f7127-5f56 CSeq:
1 NOTIFY
Call-ID: [email protected]
Content-Length: 593
User-Agent: kamailio (3.1.2 (i386/linux))
Max-Forwards: 70
Event: dialog
Contact:<sip:10.16.10.99:5060>
Subscription-State: active;expires=3670
Content-Type: application/dialog-info+xml
<?xml version="1.0"?>
<dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info"
version="00000000000" state="full" entity="[email protected]">
<dialog id="[email protected]"
call-id="[email protected]"
direction="initiator">
<state>terminated</state>
<remote>
<identity>sip:[email protected]</identity>
<target uri="sip:[email protected]"/>
</remote>
<local>
<identity>sip:[email protected]</identity>
<target uri="sip:[email protected]"/>
</local>
</dialog>
</dialog-info>
5) The subscribed party is sending a PUBLISH message with following
information:
============================================================================PUBLISH
sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP
10.16.10.90:5060;rport;branch=z9hG4bK348084694
From:<sip:[email protected]>;tag=3644648667-26329880-1301468223499
To:<sip:[email protected]>
Call-ID: [email protected]
CSeq: 20 PUBLISH
Max-Forwards: 70
User-Agent: SipTapi
Content-Disposition: render;handling=required
Expires: 3600
Event: dialog
Content-Type: application/dialog-info+xml
Content-Length: 592
<?xml version="1.0"?>
<dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info" version="4"
state="full" entity="sip:[email protected]">
<dialog id="[email protected]"
call-id="[email protected]"
direction="initiator">
<state>confirmed</state>
<remote>
<identity><sip:[email protected]></identity>
<target uri="<sip:[email protected]>"/>
</remote>
<local>
<identity>sip:[email protected]</identity>
<target uri="sip:[email protected]"/>
</local>
</dialog>
</dialog-info>
6) Status informative NOTIFY message from Kamailio (built from the
PUBLISH message above - with correct version but string
overwriting!!!):
=======================================================================================================================================NOTIFY
sip:[email protected]:5060 SIP/2.0 Via: SIP/2.0/UDP
10.16.10.99;branch=z9hG4bK4cc7.faa8dc87000000000000000000000000.0 To:
sip:[email protected];tag=2453899634-24035392-1301468026894 From:
sip:[email protected];tag=a23c71953194c2c72e41c4d20e4f7127-86e1 CSeq:
2 NOTIFY
Call-ID: [email protected]
Content-Length: 592
User-Agent: kamailio (3.1.2 (i386/linux))
Max-Forwards: 70
Event: dialog
Contact:<sip:10.16.10.99:5060>
Subscription-State: active;expires=3570
Content-Type: application/dialog-info+xml
<?xml version="1.0"?>
<dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info" version="1"
ll" entity="sip:[email protected]">
<dialog id="[email protected]"
call-id="[email protected]"
direction="initiator">
<state>confirmed</state>
<remote>
<identity><sip:[email protected]></identity>
<target uri="<sip:[email protected]>"/>
</remote>
<local>
<identity>sip:[email protected]</identity>
<target uri="sip:[email protected]"/>
</local>
</dialog>
</dialog-info>
Debug information of Kamailio and information in the source code show
that the version number "00000000000" is a placeholder only, which
should be replaced with a valid version number. However, it seems that
there is a problem in handling these strings. The version number is
replaced, but in case that the version id is only one character long,
ten space characters are inserted- overwriting other information......
Can anybody comment this problem? Is this a bug of the
presence_dialoginfo- or another module?
Thanks in advance!
Regards,
Klaus
P.S. additional information from source code an debug output of
kamailio:
notify_body.c:
[...]
/* The version must be increased for each new document and is a 32bit
int.
As the version is different for each watcher, we can not set here
the
correct value. Thus, we just put here a placeholder which will be
replaced by the correct value in the aux_body_processing callback.
Thus we have CPU intensive XML aggregation only once and can use quick
search&replace in the per-watcher aux_body_processing callback. We use
11 chracters as an signed int (although RFC says unsigned int we use
signed int as presence module stores "version" in DB as
signed int) has max. 10 characters + 1 character for the sign
*/
[...]
Debug information from Kamailio:
Ad 4)
SipSrv1 /usr/sbin/kamailio[26764]: DEBUG: presence_dialoginfo
[notify_body.c:67]: [pres_user]=117093 [pres_domain]= 10.16.10.99,
[n]=1 SipSrv1 /usr/sbin/kamailio[26764]: DEBUG: presence_dialoginfo
[notify_body.c:107]: [pres_user]=117093 [pres_domain]= 10.16.10.99,
[n]=1 SipSrv1 /usr/sbin/kamailio[26764]: DEBUG: presence_dialoginfo
[notify_body.c:199]: node type: Element, name: dialog
SipSrv1 /usr/sbin/kamailio[26764]: DEBUG: presence_dialoginfo
[notify_body.c:73]: [n_body]=0x835fe54
SipSrv1 /usr/sbin/kamailio[26764]: DEBUG: presence_dialoginfo
[notify_body.c:76]: [*n_body]=<?xml version="1.0"?>#012<dialog-info
xmlns="urn:ietf:params:xml:ns:dialog-info" version="00000000000"
state="full" entity="[email protected]">#012<dialog
id="[email protected]"
call-id="[email protected]" direction="recipient">#012
<state>confirmed</state>#012<remote>#012
<identity>sip:[email protected]</identity>#012<target
uri="sip:[email protected]"/>#012</remote>#012<local>#012
<identity>sip:[email protected]</identity>#012<target
uri="sip:[email protected]"/>#012</local>#012
</dialog>#012</dialog-info>#012
SipSrv1 /usr/sbin/kamailio[26764]: DEBUG: presence_dialoginfo
[notify_body.c:328]: replace version with "1"
SipSrv1 /usr/sbin/kamailio[26764]: DEBUG: presence [notify.c:1461]:
dialog info:
SipSrv1 /usr/sbin/kamailio[26764]: DEBUG: presence [notify.c:122]:
#012#011[pres_uri]=
sip:[email protected]#012#011[to_user]117093#011[to_domain]=
10.16.10.99#012#011[w_user]=
117090#011[w_domain]10.16.10.99#012#011[event]=
dialog#012#011[status]=
active#012#011[expires]3519#012#011[callid][email protected]#011[local_cseq]=1#012#011[to_tag
]=
a23c71953194c2c72e41c4d20e4f7127-7529#011[from_tag]2282475328-8635704-1301477522967#012#011[contact]sip:[email protected]:5060#011[record_route]SipSrv1
/usr/sbin/kamailio[26764]: DEBUG: presence [notify.c:234]: expires
3519 SipSrv1 /usr/sbin/kamailio[26764]: DEBUG: presence
[notify.c:1555]: headers:#012Max-Forwards: 70#015#012Event:
dialog#015#012Contact:
<sip:10.16.10.99:5060>#015#012Subscription-State:
active;expires=3570#015#012Content-Type:
application/dialog-info+xml#015#012 SipSrv1 /usr/sbin/kamailio[26764]:
DEBUG: presence [notify.c:940]: CONTACT sip:[email protected]:5060
SipSrv1 /usr/sbin/kamailio[26764]: DEBUG:<core> [socket_info.c:501]:
grep_sock_info - checking if host==us: 11==11&& [10.16.10.99]
=[10.16.10.99] SipSrv1 /usr/sbin/kamailio[26764]: DEBUG:<core>
[socket_info.c:504]: grep_sock_info - checking if port 5060 matches
port 5060
SipSrv1 /usr/sbin/kamailio[26764]: DEBUG: presence [notify.c:1729]:
==22/6/37 SipSrv1 /usr/sbin/kamailio[26764]: DEBUG: tm [uac.c:240]:
DEBUG:tm:t_uac: next_hop=<sip:[email protected]:5060>
SipSrv1 /usr/sbin/kamailio[26764]: DEBUG: tm [uac.c:181]: DEBUG:
dlg2hash: 27355
SipSrv1 /usr/sbin/kamailio[26764]: DEBUG:<core> [usr_avp.c:646]:
DEBUG:destroy_avp_list: destroying list (nil)
SipSrv1 /usr/sbin/kamailio[26764]: DEBUG:<core> [usr_avp.c:646]:
DEBUG:destroy_avp_list: destroying list (nil)
SipSrv1 /usr/sbin/kamailio[26764]: DEBUG:<core> [usr_avp.c:646]:
DEBUG:destroy_avp_list: destroying list (nil)
SipSrv1 /usr/sbin/kamailio[26764]: DEBUG:<core> [usr_avp.c:646]:
DEBUG:destroy_avp_list: destroying list (nil)
SipSrv1 /usr/sbin/kamailio[26764]: DEBUG:<core> [usr_avp.c:646]:
DEBUG:destroy_avp_list: destroying list (nil)
SipSrv1 /usr/sbin/kamailio[26764]: DEBUG:<core> [usr_avp.c:646]:
DEBUG:destroy_avp_list: destroying list (nil)
SipSrv1 /usr/sbin/kamailio[26764]: INFO: presence [notify.c:1586]:
NOTIFY sip:[email protected] via sip:[email protected]:5060 on
behalf of sip:[email protected] for event dialog
Ad 6)
SipSrv1 /usr/sbin/kamailio[26764]: DEBUG: presence_dialoginfo
[notify_body.c:67]: [pres_user]=117093 [pres_domain]= 10.16.10.99,
[n]=1 SipSrv1 /usr/sbin/kamailio[26764]: DEBUG: presence_dialoginfo
[notify_body.c:107]: [pres_user]=117093 [pres_domain]= 10.16.10.99,
[n]=1 SipSrv1 /usr/sbin/kamailio[26764]: DEBUG: presence_dialoginfo
[notify_body.c:199]: node type: Element, name: dialog
SipSrv1 /usr/sbin/kamailio[26764]: DEBUG: presence_dialoginfo
[notify_body.c:73]: [n_body]=0x835fcb0
SipSrv1 /usr/sbin/kamailio[26764]: DEBUG: presence_dialoginfo
[notify_body.c:76]: [*n_body]=<?xml version="1.0"?>#012<dialog-info
xmlns="urn:ietf:params:xml:ns:dialog-info" version="00000000000"
state="full" entity="[email protected]">#012<dialog
id="[email protected]"
call-id="[email protected]" direction="recipient">#012
<state>terminated</state>#012<remote>#012
<identity>sip:[email protected]</identity>#012<target
uri="sip:[email protected]"/>#012</remote>#012<local>#012
<identity>sip:[email protected]</identity>#012<target
uri="sip:[email protected]"/>#012</local>#012
</dialog>#012</dialog-info>#012
SipSrv1 /usr/sbin/kamailio[26764]: DEBUG: presence_dialoginfo
[notify_body.c:328]: replace version with "2"
SipSrv1 /usr/sbin/kamailio[26764]: DEBUG: presence [notify.c:1461]:
dialog info:
SipSrv1 /usr/sbin/kamailio[26764]: DEBUG: presence [notify.c:122]:
#012#011[pres_uri]=
sip:[email protected]#012#011[to_user]117093#011[to_domain]=
10.16.10.99#012#011[w_user]=
117090#011[w_domain]10.16.10.99#012#011[event]=
dialog#012#011[status]=
active#012#011[expires]3242#012#011[callid][email protected]#011[local_cseq]=2#012#011[to_tag
]=
a23c71953194c2c72e41c4d20e4f7127-7529#011[from_tag]2282475328-8635704-1301477522967#012#011[contact]sip:[email protected]:5060#011[record_route]=
SipSrv1 /usr/sbin/kamailio[26764]: DEBUG: presence [notify.c:234]:
expires 3242 SipSrv1 /usr/sbin/kamailio[26764]: DEBUG: presence
[notify.c:1555]: headers:#012Max-Forwards: 70#015#012Event:
dialog#015#012Contact:
<sip:10.16.10.99:5060>#015#012Subscription-State:
active;expires=3270#015#012Content-Type:
application/dialog-info+xml#015#012 SipSrv1 /usr/sbin/kamailio[26764]:
DEBUG: presence [notify.c:940]: CONTACT sip:[email protected]:5060
SipSrv1 /usr/sbin/kamailio[26764]: DEBUG:<core> [socket_info.c:501]:
grep_sock_info - checking if host==us: 11==11&& [10.16.10.99]
=[10.16.10.99] SipSrv1 /usr/sbin/kamailio[26764]: DEBUG:<core>
[socket_info.c:504]: grep_sock_info - checking if port 5060 matches
port 5060
SipSrv1 /usr/sbin/kamailio[26764]: DEBUG: presence [notify.c:1729]:
==22/6/37 SipSrv1 /usr/sbin/kamailio[26764]: DEBUG: tm [uac.c:240]:
DEBUG:tm:t_uac: next_hop=<sip:[email protected]:5060>
SipSrv1 /usr/sbin/kamailio[26764]: DEBUG: tm [uac.c:181]: DEBUG:
dlg2hash: 27356
SipSrv1 /usr/sbin/kamailio[26764]: DEBUG:<core> [usr_avp.c:646]:
DEBUG:destroy_avp_list: destroying list (nil)
SipSrv1 /usr/sbin/kamailio[26764]: DEBUG:<core> [usr_avp.c:646]:
DEBUG:destroy_avp_list: destroying list (nil)
SipSrv1 /usr/sbin/kamailio[26764]: DEBUG:<core> [usr_avp.c:646]:
DEBUG:destroy_avp_list: destroying list (nil)
SipSrv1 /usr/sbin/kamailio[26764]: DEBUG:<core> [usr_avp.c:646]:
DEBUG:destroy_avp_list: destroying list (nil)
SipSrv1 /usr/sbin/kamailio[26764]: DEBUG:<core> [usr_avp.c:646]:
DEBUG:destroy_avp_list: destroying list (nil)
SipSrv1 /usr/sbin/kamailio[26764]: DEBUG:<core> [usr_avp.c:646]:
DEBUG:destroy_avp_list: destroying list (nil)
SipSrv1 /usr/sbin/kamailio[26764]: INFO: presence [notify.c:1586]:
NOTIFY sip:[email protected] via sip:[email protected]:5060 on
behalf of sip:[email protected] for event dialog
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing
list [email protected]
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
--
Daniel-Constantin Mierla
http://www.asipto.com
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
[email protected]
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
--
Daniel-Constantin Mierla
http://www.asipto.com
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
[email protected]
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users