Hi, I have a SIP INVITE with “multipart/mixed” Content-Type that’s failing to match iFC for SessionDescription. Below is the log from Sprout.
The fourth SPT in group 0 for SessionDescription’s m line = “message” should evaluate to match, but it’s evaluating to not match. I looked at ifc.cpp file based on the log and it looks like the codeline will only evaluate this if the Content-Type is “application/sdp”: if (msg->body && (!pj_stricmp2(&msg->body->content_type.type, "application")) && (!pj_stricmp2(&msg->body->content_type.subtype, "sdp"))) Shouldn't it also consider multipart body and look for the sdp to run the SPT evaluation? Thank you, Alan Kwon ------------------------------------------------------------------------------------------------------------------------------------------------ 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Verbose sproutletproxy.cpp:2487: Routing Request msg INVITE/cseq=864586 (tdta0x7f66d42a1f80) (2504 bytes) to downstream sproutlet scscf-proxy: --start msg-- INVITE sip:+18152570...@demo.iot1.com SIP/2.0 Route: <sip:sprout.demo.iot1.com;lr;service=scscf-proxy> Record-Route: <sip:scscf.sprout.demo.iot1.com:5054;lr;billing-role=charge-orig> Via: SIP/2.0/TCP scscf.sprout.demo.iot1.com;branch=z9hG4bKPjsQV9J8nikwOXxD.rNAbtVLrTLc7i61DY Via: SIP/2.0/UDP xxx.xx.0.140:5060;received=xxx.xx.0.140;branch=z9hG4bK0cB0af77d08536ec87f From: <tel:+18152579481>;tag=gK0c0b571d To: <sip:+18152570...@demo.iot1.com;user=phone> Call-ID: 786629_134204932@172.27.0.140 CSeq: 864586 INVITE Max-Forwards: 68 Allow: INVITE, ACK, CANCEL, BYE, REGISTER, REFER, INFO, SUBSCRIBE, NOTIFY, UPDATE, OPTIONS, MESSAGE, PUBLISH P-Asserted-Identity: <sip:+18152579...@demo.iot1.com> Contact: <sip:+18152579...@demo.iot1.com:5762;transport=tcp;gr=urn:gsma:imei:35197909-002422->;+sip.instance="<urn:gsma:imei:35197909-002422->";+g.oma.sip-im Record-Route: <sip:xxx.xx.0.140:5060;transport=udp;lr> P-Preferred-Identity: <tel:+18152579481> Allow: INVITE, ACK, BYE, CANCEL, NOTIFY, OPTIONS, MESSAGE, UPDATE Contribution-ID: 6ec6a25a6e2a494ca799b33bd4e39999 Accept-Contact: *;+g.oma.sip-im Subject: Pump Supported: timer, replaces Session-Expires: 3600 Min-SE: 90 MIME-Version: 1.0 P-Asserted-Identity: <tel:+18152579481> Content-Type: multipart/mixed;boundary="sonus-content-delim" Content-Length: 972 --sonus-content-delim Content-Disposition: session; handling=required Content-Length: 422 Content-Type: application/sdp v=0 o=Sonus_UAC 582334 96029 IN IP4 172.27.0.140 s=SIP Media Capabilities c=IN IP4 172.28.0.140 t=0 0 m=message 16559 TCP/MSRP * a=setup:actpass a=path:msrp://172.25.50.95:9/15b04feec8aa494f95cb6bcee06e2d55;tcp a=accept-types:message/cpim application/im-iscomposing+xml a=accept-wrapped-types:text/plain application/vnd.gsma.rcs-ft-http+xml message/imdn+xml application/vnd.gsma.rcspushlocation+xml a=msrp-cema --sonus-content-delim Content-Length: 319 Content-Type: message/cpim NS: imdn <urn:ietf:params:imdn> imdn.Disposition-Notification: positive-delivery, display imdn.Message-ID: MsbsAhPj5lTXmoMSRd81dQqg To: <sip:anonymous@anonymous.invalid> From: <sip:anonymous@anonymous.invalid> DateTime: 2018-06-28T21:34:32.767Z Content-Length: 4 Content-Type: text/plain; charset=utf-8 Pump --sonus-content-delim-- --end msg-- 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Debug sproutletproxy.cpp:2504: Network function boundary: yes ('icscf'->'scscf'/'scscf-proxy') 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Debug sproutletproxy.cpp:2504: Network function boundary: yes ('icscf'->'scscf'/'scscf-proxy') 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Debug sproutletproxy.cpp:2517: Internal network function boundary: yes 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Debug pjutils.cpp:736: Cloned tdta0x7f66d42a1f80 to tdta0x7f66d4365620 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Debug sproutletproxy.cpp:1450: Remove top Route header Route: <sip:sprout.demo.iot1.com;lr;service=scscf-proxy> 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Debug sproutletproxy.cpp:2115: Adding message 0x7f66d4365c30 => txdata 0x7f66d43656c8 mapping 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Verbose sproutletproxy.cpp:1946: scscf-proxy-0x7f66d4255170 pass initial request Request msg INVITE/cseq=864586 (tdta0x7f66d4365620) to Sproutlet 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Info scscfsproutlet.cpp:471: S-CSCF received initial request 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Debug uri_classifier.cpp:139: home domain: false, local_to_node: true, is_gruu: false, enforce_user_phone: false, prefer_sip: true, treat_number_as_phone: false 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Debug uri_classifier.cpp:172: Classified URI as 3 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Debug scscfsproutlet.cpp:945: Route header references this system 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Debug scscfsproutlet.cpp:991: No ODI token, or invalid ODI token, on request - logging ICID marker 739955c0-5d49-1036-00-00-00-50-56-bb-09-00 for B2BUA AS correlation 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Debug scscfsproutlet.cpp:1004: Got our Route header, session case term, OD=None 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Debug uri_classifier.cpp:139: home domain: true, local_to_node: false, is_gruu: false, enforce_user_phone: false, prefer_sip: true, treat_number_as_phone: false 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Debug uri_classifier.cpp:172: Classified URI as 4 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Debug acr.cpp:1797: Create RalfACR for node type S-CSCF with role Terminating 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Debug acr.cpp:24: Created ACR (0x7f66d4211ef0) 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Debug acr.cpp:170: Created S-CSCF Ralf ACR 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Debug sproutletproxy.cpp:342: Possible service name scscf will be used if sprout.demo.iot1.com is a local hostname 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Debug sproutletproxy.cpp:302: Found services param - scscf-proxy 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Debug scscfsproutlet.cpp:1242: Looking up iFCs for sip:+18152570...@demo.iot1.com for new AS chain 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Debug hssconnection.cpp:448: Making Homestead request for /impu/sip%3A%2B18152570701%40demo.iot1.com/reg-data 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Debug a_record_resolver.cpp:57: ARecordResolver::resolve_iter for host dime.demo.iot1.com, port 8888, family 2 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Debug utils.cpp:446: Attempt to parse dime.demo.iot1.com as IP address 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Verbose dnscachedresolver.cpp:468: Check cache for dime.demo.iot1.com type 1 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Debug dnscachedresolver.cpp:578: Pulling 2 records from cache for dime.demo.iot1.com A 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Debug baseresolver.cpp:192: Found 2 A/AAAA records, creating iterator 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Debug utils.cpp:446: Attempt to parse dime.demo.iot1.com as IP address 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Debug baseresolver.cpp:812: Attempting to get 1 targets for host:dime.demo.iot1.com. allowed_host_state = 3 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Debug baseresolver.cpp:587: 172.27.0.52:8888;transport=TCP has state: WHITE 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Debug baseresolver.cpp:587: 172.27.0.51:8888;transport=TCP has state: WHITE 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Debug baseresolver.cpp:587: 172.27.0.52:8888;transport=TCP has state: WHITE 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Debug baseresolver.cpp:883: Added a whitelisted server to targets, now have 1 of 1 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Debug connection_pool.h:207: Request for connection to IP: 172.27.0.52, port: 8888 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Debug connection_pool.h:220: Found existing connection 0x7f6814028970 in pool 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Debug httpclient.cpp:557: Set CURLOPT_RESOLVE: dime.demo.iot1.com:8888:172.27.0.52 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Debug httpclient.cpp:588: Sending HTTP request : http://dime.demo.iot1.com:8888/impu/sip%3A%2B18152570701%40demo.iot1.com/reg-data (trying 172.27.0.52) 28-06-2018 21:34:33.338 UTC [7f670ae0d700] Debug thread_dispatcher.cpp:117: Pausing stopwatch due to HTTP request to http://dime.demo.iot1.com:8888/impu/sip%3A%2B18152570701%40demo.iot1.com/reg-data 28-06-2018 21:34:33.339 UTC [7f670ae0d700] Debug httpclient.cpp:956: Received header http/1.1200ok with value 28-06-2018 21:34:33.339 UTC [7f670ae0d700] Debug httpclient.cpp:957: Header pointer: 0x7f670ae0c3d0 28-06-2018 21:34:33.339 UTC [7f670ae0d700] Debug httpclient.cpp:956: Received header content-length with value 3387 28-06-2018 21:34:33.339 UTC [7f670ae0d700] Debug httpclient.cpp:957: Header pointer: 0x7f670ae0c3d0 28-06-2018 21:34:33.339 UTC [7f670ae0d700] Debug httpclient.cpp:956: Received header content-type with value text/plain 28-06-2018 21:34:33.339 UTC [7f670ae0d700] Debug httpclient.cpp:957: Header pointer: 0x7f670ae0c3d0 28-06-2018 21:34:33.339 UTC [7f670ae0d700] Debug httpclient.cpp:956: Received header with value 28-06-2018 21:34:33.339 UTC [7f670ae0d700] Debug httpclient.cpp:957: Header pointer: 0x7f670ae0c3d0 28-06-2018 21:34:33.339 UTC [7f670ae0d700] Debug thread_dispatcher.cpp:123: Resuming stopwatch after HTTP request to http://dime.demo.iot1.com:8888/impu/sip%3A%2B18152570701%40demo.iot1.com/reg-data 28-06-2018 21:34:33.339 UTC [7f670ae0d700] Debug httpclient.cpp:628: Received HTTP response: status=200, doc=<ClearwaterRegData> <RegistrationState>REGISTERED</RegistrationState> <PreviousRegistrationState>REGISTERED</PreviousRegistrationState> <IMSSubscription xsi="http://www.w3.org/2001/XMLSchema-instance" noNamespaceSchemaLocation="CxDataType.xsd"> <PrivateID>+18152570...@demo.iot1.com</PrivateID> <ServiceProfile> <PublicIdentity> <Identity>sip:+18152570...@demo.iot1.com</Identity> </PublicIdentity> <PublicIdentity> <Identity>tel:+18152570701</Identity> </PublicIdentity> <InitialFilterCriteria> <Priority>0</Priority> <TriggerPoint> <ConditionTypeCNF>0</ConditionTypeCNF> <SPT> <ConditionNegated>0</ConditionNegated> <Group>0</Group> <Method>INVITE</Method> </SPT> <SPT> <ConditionNegated>1</ConditionNegated> <Group>0</Group> <SIPHeader> <Header>User-Agent</Header> <Content>IVC</Content> </SIPHeader> </SPT> <SPT> <ConditionNegated>1</ConditionNegated> <Group>0</Group> <SIPHeader> <Header>P-Preferred-Service</Header> <Content>(callcomposer|callunanswered|sharedmap|sharedsketch)</Content> </SIPHeader> </SPT> <SPT> <ConditionNegated>0</ConditionNegated> <Group>0</Group> <SessionDescription> <Line>m</Line> <Content>message</Content> </SessionDescription> </SPT> <SPT> <ConditionNegated>0</ConditionNegated> <Group>1</Group> <Method>MESSAGE</Method> </SPT> <SPT> <ConditionNegated>1</ConditionNegated> <Group>1</Group> <SIPHeader> <Header>User-Agent</Header> <Content>IVC</Content> </SIPHeader> </SPT> <SPT> <ConditionNegated>0</ConditionNegated> <Group>2</Group> <Method>SUBSCRIBE</Method> </SPT> <SPT> <ConditionNegated>0</ConditionNegated> <Group>2</Group> <SIPHeader> <Header>Event</Header> <Content>conference</Content> </SIPHeader> </SPT> <SPT> <ConditionNegated>0</ConditionNegated> <Group>3</Group> <Method>REFER</Method> </SPT> <SPT> <ConditionNegated>0</ConditionNegated> <Group>3</Group> <SIPHeader> <Header>Accept-Contact</Header> <Content>(g.oma.sip-im|service.ims.icsi.oma.cpm.session)</Content> </SIPHeader> </SPT> </TriggerPoint> <ApplicationServer> <ServerName>sip:sc01.demo.iot1.com:5510;transport=TCP</ServerName> <DefaultHandling>1</DefaultHandling> </ApplicationServer> </InitialFilterCriteria> <InitialFilterCriteria> <Priority>2</Priority> <TriggerPoint> <ConditionTypeCNF>0</ConditionTypeCNF> <SPT> <ConditionNegated>0</ConditionNegated> <Group>0</Group> <Method>REGISTER</Method> <Extension> <RegistrationType>0</RegistrationType> </Extension> </SPT> <SPT> <ConditionNegated>0</ConditionNegated> <Group>1</Group> <Method>REGISTER</Method> <Extension> <RegistrationType>1</RegistrationType> </Extension> </SPT> </TriggerPoint> <ApplicationServer> <ServerName>sip:sc01.demo.iot1.com:5510;transport=TCP</ServerName> <DefaultHandling>1</DefaultHandling> </ApplicationServer> </InitialFilterCriteria> </ServiceProfile> </IMSSubscription> </ClearwaterRegData> 28-06-2018 21:34:33.339 UTC [7f670ae0d700] Debug baseresolver.cpp:672: Successful response from 172.27.0.52:8888;transport=TCP 28-06-2018 21:34:33.339 UTC [7f670ae0d700] Debug connection_pool.h:244: Release connection to IP: 172.27.0.52, port: 8888 to pool 28-06-2018 21:34:33.339 UTC [7f670ae0d700] Debug event_statistic_accumulator.cpp:32: Accumulate 1761 for 0x2d4e720 28-06-2018 21:34:33.339 UTC [7f670ae0d700] Debug event_statistic_accumulator.cpp:32: Accumulate 1761 for 0x2d4e798 28-06-2018 21:34:33.339 UTC [7f670ae0d700] Debug event_statistic_accumulator.cpp:32: Accumulate 1761 for 0x2d53300 28-06-2018 21:34:33.339 UTC [7f670ae0d700] Debug event_statistic_accumulator.cpp:32: Accumulate 1761 for 0x2d533a8 28-06-2018 21:34:33.339 UTC [7f670ae0d700] Debug sprout_xml_utils.cpp:70: Processing Identity node from HSS XML - sip:+18152570...@demo.iot1.com 28-06-2018 21:34:33.339 UTC [7f670ae0d700] Debug sprout_xml_utils.cpp:70: Processing Identity node from HSS XML - tel:+18152570701 28-06-2018 21:34:33.340 UTC [7f670ae0d700] Debug scscfsproutlet.cpp:1248: Successfully looked up iFCs 28-06-2018 21:34:33.340 UTC [7f670ae0d700] Debug aschain.cpp:55: Creating AsChain 0x7f66d4179500 with 2 iFCs and adding to map 28-06-2018 21:34:33.340 UTC [7f670ae0d700] Debug aschain.cpp:57: Attached ACR (0x7f66d4211ef0) to chain 28-06-2018 21:34:33.340 UTC [7f670ae0d700] Debug scscfsproutlet.cpp:1376: S-CSCF sproutlet transaction 0x7f66d4255170 linked to AsChain AsChain-term[0x7f66d4179500]:1/2 28-06-2018 21:34:33.340 UTC [7f670ae0d700] Debug acr.cpp:210: Set record type for P/S-CSCF 28-06-2018 21:34:33.340 UTC [7f670ae0d700] Debug acr.cpp:237: Dialog-initiating INVITE => START_RECORD 28-06-2018 21:34:33.340 UTC [7f670ae0d700] Debug acr.cpp:1596: Found P-Charging-Vector header, store information 28-06-2018 21:34:33.340 UTC [7f670ae0d700] Info scscfsproutlet.cpp:635: Found served user, so apply services 28-06-2018 21:34:33.340 UTC [7f670ae0d700] Debug ifc.cpp:428: SPT class Method: result true 28-06-2018 21:34:33.340 UTC [7f670ae0d700] Debug ifc.cpp:428: SPT class SIPHeader: result false 28-06-2018 21:34:33.340 UTC [7f670ae0d700] Debug ifc.cpp:428: SPT class SIPHeader: result false 28-06-2018 21:34:33.340 UTC [7f670ae0d700] Debug ifc.cpp:428: SPT class SessionDescription: result false 28-06-2018 21:34:33.340 UTC [7f670ae0d700] Debug ifc.cpp:428: SPT class Method: result false 28-06-2018 21:34:33.340 UTC [7f670ae0d700] Debug ifc.cpp:428: SPT class SIPHeader: result false 28-06-2018 21:34:33.340 UTC [7f670ae0d700] Debug ifc.cpp:428: SPT class Method: result false 28-06-2018 21:34:33.340 UTC [7f670ae0d700] Debug ifc.cpp:428: SPT class SIPHeader: result false 28-06-2018 21:34:33.340 UTC [7f670ae0d700] Debug ifc.cpp:428: SPT class Method: result false 28-06-2018 21:34:33.340 UTC [7f670ae0d700] Debug ifc.cpp:428: SPT class SIPHeader: result true 28-06-2018 21:34:33.340 UTC [7f670ae0d700] Debug ifc.cpp:582: iFC does not match 28-06-2018 21:34:33.340 UTC [7f670ae0d700] Debug ifc.cpp:589: AND each SPT match result to determine group result. OR each group result to determine overall iFC match. SPT in group 0 is matched. SPT in group 0 is matched. SPT in group 0 is matched. SPT in group 0 is not matched. SPT in group 1 is not matched. SPT in group 1 is matched. SPT in group 2 is not matched. SPT in group 2 is not matched. SPT in group 3 is not matched. SPT in group 3 is matched. Group 0 is not matched. Group 1 is not matched. Group 2 is not matched. Group 3 is not matched. 28-06-2018 21:34:33.340 UTC [7f670ae0d700] Debug ifc.cpp:428: SPT class Method: result false 28-06-2018 21:34:33.340 UTC [7f670ae0d700] Debug ifc.cpp:428: SPT class Method: result false 28-06-2018 21:34:33.340 UTC [7f670ae0d700] Debug ifc.cpp:582: iFC does not match 28-06-2018 21:34:33.340 UTC [7f670ae0d700] Debug ifc.cpp:589: AND each SPT match result to determine group result. OR each group result to determine overall iFC match. SPT in group 0 is not matched. SPT in group 1 is not matched. Group 0 is not matched. Group 1 is not matched. 28-06-2018 21:34:33.340 UTC [7f670ae0d700] Info scscfsproutlet.cpp:1529: Completed applying terminating services [cid:7E8907A8-95D3-4E42-84B2-4DE94ABAB638]<http://www.interoptechnologies.com/> ALAN KWON Senior Software Engineer T: +1 972-753-1865 (Texas) F: +1 239-425-6845 Confidentiality Notice: The information in this e-mail and in any attachment may contain information which is legally privileged. It is intended only for the attention and use of the named recipient. If you are not the intended recipient, you are not authorized to retain, disclose, copy or distribute the message and/or any of its attachments. If you received this e-mail in error, please notify me and delete this message.
_______________________________________________ Clearwater mailing list Clearwater@lists.projectclearwater.org http://lists.projectclearwater.org/mailman/listinfo/clearwater_lists.projectclearwater.org