Hi, Juha....
Thanks for the tip....
I implemented the suggested logic on the ONREPLY_ROUTE. It is
recognizing the multi part SDP, but when "filter_body" is called, it
returns the following ERROR on the log:
ERROR:textops:filter_body_f: Boundary not found after content
The processed message (a 183 Session Progress with SDP) is bellow. I
looked at the documentation, but didn't realize what to do...
Edson.
==RELEVANT CODE==================================================
if (has_body("multipart/mixed")) {
xlog("L_INFO"," Multipart SDP founded");
xlog("L_INFO","$rb");
if (filter_body("application/sdp")) {
remove_hf("Content-Type");
append_hf("Content-Type: application/sdp\r\n");
xlog("L_INFO"," executing
'force_rtp_proxy'");
force_rtp_proxy();
} else {
xlog("L_INFO", " Multipart SDP, but Body part
application/sdp not found\n");
}
} else {
xlog("L_INFO"," executing
'force_rtp_proxy'");
force_rtp_proxy();
}
==LOG SHOWs=========================================================
Jun 11 22:31:39 Kamailio-151 /sbin/kamailio[11690]: ON-REPLY[1] incoming
reply <100> for <INVITE> <8999>/<pstn-number>
Jun 11 22:31:39 Kamailio-151 /sbin/kamailio[11690]: ON-REPLY[1] incoming
reply <183> for <INVITE> <8999>/<pstn-number>
Jun 11 22:31:39 Kamailio-151 /sbin/kamailio[11690]:
Multipart SDP founded
Jun 11 22:31:39 Kamailio-151 /sbin/kamailio[11690]: --uniqueBoundary
Content-Type: application/sdp v=0 o=CiscoSystemsSIP-GW-UserAgent
6554 7546 IN IP4 200.xxx.xx.yy s=SIP Call c=IN IP4 200.xxx.xx.yy t=0
0 m=audio 18250 RTP/AVP 0 c=IN IP4 200.xxx.xx.yy a=rtpmap:0 PCMU/8000
--uniqueBoundary Content-Type: application/gtd Content-Disposition:
signal;handling=optional CPG, PRN,isdn*,,QSIG*, --uniqueBoundary--
Jun 11 22:31:39 Kamailio-151 /sbin/kamailio[11690]:
ERROR:textops:filter_body_f: Boundary not found after content
Jun 11 22:31:39 Kamailio-151 /sbin/kamailio[11690]: Multipart
SDP, but Body part application/sdp not found
==MESSAGE=========================================================
SIP/2.0 183 Session Progress.
Via: SIP/2.0/UDP 200.xxx.xx.xx;branch=z9hG4bKe54e.5ef97746.0,SIP/2.0/UDP
192.168.1.139:25862;received=189.WW.WWW.WW;branch=z9hG4bK-d8754z-460ee22e063d0246-1---d8754z-;rport=25862.
From: "Edson - Kamailio"<sip:8999@kamailio.X.Y.Z>;tag=7d791c57.
To: "PSTN"<sip:pstn-number@kamailio.X.Y.Z>;tag=E1444EE0-12C9.
Date: Fri, 12 Jun 2009 01:31:39 gmt.
Call-ID: M2UzMjVmYjM1Mjg2N2IwMWYyYWIxOGM1NjJmMTg1YWE..
Server: Cisco-SIPGateway/IOS-12.x.
CSeq: 2 INVITE.
Allow-Events: telephone-event.
Contact: <sip:pstn-number@200.xxx.xx.yy:5060>.
Record-Route: <sip:200.xxx.xx.xx;lr=on;nat=yes>.
MIME-Version: 1.0.
Content-Type: multipart/mixed;boundary=uniqueBoundary.
Content-Length: 378.
.
--uniqueBoundary.
Content-Type: application/sdp.
.
v=0.
o=CiscoSystemsSIP-GW-UserAgent 6554 7546 IN IP4 200.xxx.xx.yy.
s=SIP Call.
c=IN IP4 200.xxx.xx.yy.
t=0 0.
m=audio 18250 RTP/AVP 0.
c=IN IP4 200.xxx.xx.yy.
a=rtpmap:0 PCMU/8000.
--uniqueBoundary.
Content-Type: application/gtd.
Content-Disposition: signal;handling=optional.
.
CPG,.
PRN,isdn*,,QSIG*,.
.
--uniqueBoundary--.
Juha Heinanen escreveu:
Edson - Lists writes:
Maybe, then, someone could point me to how to
disable multipart SDP on
Cisco AS5300 GWs.... I already dig it on Cisco and Google sites, but so
far nothing founded...
instead of disabling multipart in cisco, may be you could use this
textops function hack that i wrote for the purpose:
1.3.16. filter_body(content_type)
Filters multipart body by leaving out all other body parts
except the first body part of given type.
Meaning of the parameters is as follows:
* content_type - Content type to be left in the body.
This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
FAILURE_ROUTE, BRANCH_ROUTE.
Example 1.16. filter_body usage
...
if (has_body("multipart/mixed")) {
if (filter_body("application/sdp") {
remove_hf("Content-Type");
append_hf("Content-Type: application/sdp\r\n");
} else {
xlog("Body part application/sdp not found\n");
}
}
...
-- juha