Hello,
the error is printed because the parsing of the XML body in PUBLISH fails -- an invalid XML document. Quickly looking at it:
<?xml version="1.0" encoding="UTF-8"?>
<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" entity="User
<sip:USER@HOST>">
<tuple id="sg89ae">
<status><basic>closed</basic></status>
<contact priority="0.8">User
<sip:USER@HOST></contact>
</tuple>
</presence>
Hi! I'm using linphone 3.6.1 as SIP client and Kamailio 4.4.4 as proxy server and registrar. And every time I try to change online status (presence) in linphone client, I see following error messages in kamailio server log: ERROR: presence_xml [add_events.c:167]: xml_publ_handl(): bad body format ERROR: presence [publish.c:443]: handle_publish(): in event specific publish handling ERROR: tm [t_reply.c:533]: _reply_light(): ERROR: _reply_light: can't generate 500 reply when a final 415 was sent out ERROR: sl [sl.c:269]: send_reply(): failed to reply stateful (tm) ERROR: presence [utils_func.c:146]: send_error_reply(): sending 500 Server Internal Error reply ERROR: presence [publish.c:492]: handle_publish(): failed to send error reply So it looks like kamailio is not able to parse presence change which is linphone doing. I captured traffic via tcpdump what linphone sends: 21:58:58.704792 IP (tos 0x68, ttl 64, id 64109, offset 0, flags [DF], proto UDP (17), length 32) LINPHONE_IP_ADDRESS.5060 > KAMAILIO_IP_ADDRESS.5060: SIP 21:58:58.704919 IP (tos 0x68, ttl 64, id 64110, offset 0, flags [DF], proto UDP (17), length 752) LINPHONE_IP_ADDRESS.5060 > KAMAILIO_IP_ADDRESS.5060: SIP, length: 724 PUBLISH sip:USER@HOST SIP/2.0 Via: SIP/2.0/UDP LINPHONE_IP_ADDRESS:5060;rport;branch=z9hG4bK2049418743 From: User <sip:USER@HOST>;tag=184282924 To: User <sip:USER@HOST> Call-ID: 1435474953 CSeq: 26 PUBLISH Content-Type: application/pidf+xml Max-Forwards: 70 User-Agent: Linphone/3.6.1 (eXosip2/4.1.0) Expires: 600 Event: presence Content-Length: 353 <?xml version="1.0" encoding="UTF-8"?> <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" entity="User <sip:USER@HOST>"> <tuple id="sg89ae"> <status><basic>closed</basic></status> <contact priority="0.8">User <sip:USER@HOST></contact> </tuple> </presence> 21:58:58.710097 IP (tos 0x10, ttl 53, id 10255, offset 0, flags [none], proto UDP (17), length 473) KAMAILIO_IP_ADDRESS.5060 > LINPHONE_IP_ADDRESS.5060: SIP, length: 445 SIP/2.0 407 Proxy Authentication Required Via: SIP/2.0/UDP LINPHONE_IP_ADDRESS:5060;rport=5060;branch=z9hG4bK2049418743;received=EXTERNAL_IP_ADDRESS From: User <sip:USER@HOST>;tag=184282924 To: User <sip:USER@HOST>;tag=515cb47c4c34ffa85b598d6b25676122.744d Call-ID: 1435474953 CSeq: 26 PUBLISH Proxy-Authenticate: Digest realm="HOST", nonce="NONCE" Server: kamailio (4.4.4 (x86_64/linux)) Content-Length: 0 21:58:58.718147 IP (tos 0x68, ttl 64, id 64111, offset 0, flags [DF], proto UDP (17), length 940) LINPHONE_IP_ADDRESS.5060 > KAMAILIO_IP_ADDRESS.5060: SIP, length: 912 PUBLISH sip:USER@HOST SIP/2.0 Via: SIP/2.0/UDP LINPHONE_IP_ADDRESS:5060;rport;branch=z9hG4bK1165141043 From: User <sip:USER@HOST>;tag=184282924 To: User <sip:USER@HOST> Call-ID: 1435474953 CSeq: 27 PUBLISH Proxy-Authorization: Digest username="USER", realm="HOST", nonce="NONCE", uri="sip:USER@HOST", response="RESP", algorithm=MD5 Content-Type: application/pidf+xml Max-Forwards: 70 User-Agent: Linphone/3.6.1 (eXosip2/4.1.0) Expires: 600 Event: presence Content-Length: 353 <?xml version="1.0" encoding="UTF-8"?> <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" entity="User <sip:USER@HOST>"> <tuple id="sg89ae"> <status><basic>closed</basic></status> <contact priority="0.8">User <sip:USER@HOST></contact> </tuple> </presence> 21:58:58.781668 IP (tos 0x10, ttl 53, id 10259, offset 0, flags [none], proto UDP (17), length 380) KAMAILIO_IP_ADDRESS.5060 > LINPHONE_IP_ADDRESS.5060: SIP, length: 352 SIP/2.0 415 Unsupported media type Via: SIP/2.0/UDP LINPHONE_IP_ADDRESS:5060;rport=5060;branch=z9hG4bK1165141043;received=EXTERNAL_IP_ADDRESS From: User <sip:USER@HOST>;tag=184282924 To: User <sip:USER@HOST>;tag=97d8e785fdf42bf9622a64c13c504961-3901 Call-ID: 1435474953 CSeq: 27 PUBLISH Server: kamailio (4.4.4 (x86_64/linux)) Content-Length: 0 I replaced ip addresses in packets by KAMAILIO_IP_ADDRESS, LINPHONE_IP_ADDRESS and EXTERNAL_IP_ADDRESS strings and also SIP account by USER@HOST. Maybe it helps you. Any idea why kamailio refuse presence update and reports those error into error log? Or is there any special setting which is needed for linphone or other SIP clients for online status / presence support?
_______________________________________________ Kamailio (SER) - Users Mailing List sr-users@lists.kamailio.org https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
-- Daniel-Constantin Mierla -- www.asipto.com www.twitter.com/miconda -- www.linkedin.com/in/miconda Kamailio World Conference -- www.kamailioworld.com