Skip to content

Commit d93faaf

Browse files
authored
complete overhaul of SDP IP/Ports store/retrieval to better hanldels MidCall/Early Phase SDP Changes
complete overhaul of SDP IP/Ports store/retrieval to better handle MidCall/Early Phase SDP Changes. rewrite the way the Ports are stored and retrieved and taking in account Request Direction. Currently only in-Dialog INVITEs are covered, but it can be later extended to UPDATEs PRACKs ..etc with SDP. This will also stop srsRAN complaining about the QoS Syntax, we love srsRAN now you should be happy :)
1 parent e6cdacf commit d93faaf

1 file changed

Lines changed: 134 additions & 75 deletions

File tree

pcscf/route/mt.cfg

Lines changed: 134 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,51 @@ route[MT_indialog] {
120120
#!ifdef WITH_N5
121121
# N5 PATCH Request for updating AppSession context
122122
if (is_method("INVITE")) {
123-
xlog("L_INFO"," InDialog SDP Change. Sending N5 Request to update appSession context\n");
124-
route(N5_PATCH_MT_REQ);
123+
xlog("L_INFO","MT InDialog SDP Change. Sending N5 Request to update appSession context\n");
124+
125+
if (is_direction("downstream")) {
126+
xlog("L_INFO","in-dialog MT request from caller $fU to callee $tU (downstream) ($rm)\n");
127+
$var(midcall_sdp_ip_mt) = $sdp(c:ip);
128+
$var(sdp_vid_port_mt) = $(rb{line.sw,m=video}{s.select,1, });
129+
$var(rtcp_vid_plus_mt) = 1;
130+
$var(sdp_vid_rtcp_port_mt) = $var(rtcp_vid_plus_mt) + $var(sdp_vid_port_mt);
131+
# Store the Video SDP Info in the hash table associated with the UE
132+
# RTP
133+
$var(user_id_sdp_port_vid_mt) = $ci;
134+
$sht(user_sdps_port_vid=>$var(user_id_sdp_port_vid_mt)) = $var(sdp_vid_port_mt);
135+
# RTCP
136+
$var(user_id_sdp_rtcp_port_vid_mt) = $ci;
137+
$sht(user_sdps_rtcp_port_vid=>$var(user_id_sdp_rtcp_port_vid_mt)) = $var(sdp_vid_rtcp_port_mt);
138+
if(sdp_with_media("video")) {
139+
xlog("L_INFO", "MT VidCall To Downstream SDP Info for ($rm): IP: $var(midcall_sdp_ip_mt) RTP: $var(sdp_vid_port_mt): RTCP: $var(sdp_vid_rtcp_port_mt)\n");
140+
}
141+
} else {
142+
xlog("L_INFO","Alt-Mode in-dialog MT request from callee $fU to caller $tU (upstream) ($rm)\n");
143+
$var(midcall_sdp_ip_mt) = $sdp(c:ip);
144+
$var(midcall_id_ip_mt) = $ci;
145+
$sht(user_sdps_midcall_ips=>$var(midcall_id_ip_mt)) = $var(midcall_sdp_ip_mt);
146+
# Collecting Video SDP Info
147+
$var(sdp_vid_port_mt) = $(rb{line.sw,m=video}{s.select,1, });
148+
$var(rtcp_vid_plus_mt) = 1;
149+
$var(sdp_vid_rtcp_port_mt) = $var(rtcp_vid_plus_mt) + $var(sdp_vid_port_mt);
150+
# Store the Video SDP Info in the hash table associated with the UE
151+
# RTP
152+
$var(user_id_sdp_port_vid_mt) = $ci;
153+
$sht(user_sdps_port_vid=>$var(user_id_sdp_port_vid_mt)) = $var(sdp_vid_port_mt);
154+
# RTCP
155+
$var(user_id_sdp_rtcp_port_vid) = $ci;
156+
$sht(user_sdps_rtcp_port_vid=>$var(user_id_sdp_rtcp_port_vid)) = $var(sdp_vid_rtcp_port_mt);
157+
if(sdp_with_media("video")) {
158+
xlog("L_INFO", "MT VidCall To Upstream SDP Info for ($rm): IP: $var(midcall_sdp_ip_mt) RTP: $var(sdp_vid_port_mt): RTCP: $var(sdp_vid_rtcp_port_mt)\n");
159+
}
160+
# INVIDE SDP IP for later use in flow filter, as we dont own the Request SDP, so we need special proccesing
161+
$var(midcall_sdp_port_mt) = $(rb{line.sw,m=audio}{s.select,1, });
162+
$var(midcall_id_port_mt) = $ci;
163+
$sht(user_sdps_midcall_ports=>$var(midcall_id_port_mt)) = $var(midcall_sdp_port_mt);
164+
xlog("L_INFO", "MT MidCall To Upstream SDP Info for ($rm): $var(midcall_sdp_ip_mt):$var(midcall_sdp_port_mt)\n");
165+
}
166+
167+
#route(N5_PATCH_MT_REQ);
125168
}
126169

127170
# Terminating N5 AppSession after BYE
@@ -234,12 +277,12 @@ route[N5_INIT_MT_REQ] {
234277
xlog("L_INFO", "SIP Connection Info for Term UE $var(term_ue_ip) $var(term_sip_ue_port)\n");
235278
xlog("L_INFO", "SIP Connection Info for P-CSCF is: $var(pcscf_sip_ip) $var(pcscf_sip_port)\n");
236279

237-
$var(term_user_id_req_ip) = $tU;
280+
$var(term_user_id_req_ip) = $ci;
238281
# Store the IP in the hash table associated with the UE
239282
$sht(user_sip_ips=>$var(term_user_id_req_ip)) = $var(term_ue_ip);
240283
xlog("L_INFO", "SIP/SDP IP Info for Term UE MSISDN $var(term_user_id_req_ip): $var(term_ue_ip)\n");
241284

242-
$var(term_user_id_req_port) = $tU;
285+
$var(term_user_id_req_port) = $ci;
243286
# Store the Port in the hash table associated with the UE
244287
$sht(user_sip_ports=>$var(term_user_id_req_port)) = $var(term_sip_ue_port);
245288
xlog("L_INFO", "SIP Port Info for UE MSISDN $var(term_user_id_req_port): $var(term_sip_ue_port)\n");
@@ -248,10 +291,11 @@ route[N5_INIT_MT_REQ] {
248291
# Retrieving SDP Connection Info and Media Port for UE
249292
$var(sdp_src_ip) = $sdp(c:ip);
250293
$var(sdp_src_port) = $sdp(m0:rtp:port);
251-
$var(orig_ue_sdp_rtcp_port) = $sdp(m0:rtcp:port);
294+
$var(just_being_funny) = 1;
295+
$var(orig_ue_sdp_rtcp_port) = $var(just_being_funny) + $var(sdp_src_port);
252296
$var(sdp_mline_raw) = $sdp(m0:raw);
253297

254-
xlog("L_INFO", "SDP Info From INVITE: $sdp(c:ip) -- $sdp(m0:rtp:port) -- $sdp(m0:rtcp:port)\n");
298+
xlog("L_INFO", "SDP Info From INVITE: $sdp(c:ip) -- $sdp(m0:rtp:port) -- $var(orig_ue_sdp_rtcp_port)\n");
255299

256300
$var(call_id_sdp_ip) = $ci;
257301
# Store the SDP IP in the hash table associated with the Call-Id
@@ -314,44 +358,8 @@ route[N5_INIT_MT_REQ] {
314358
jansson_set("obj", "1", "$var(medSubComp2)", "$var(medSubComps)");
315359
jansson_set("obj", "medSubComps", "$var(medSubComps)", "$var(medComp)");
316360

317-
# Now in case of an initial Invite with Video, we need to update the N5 QoS Request with the Video Flow Info
318-
if(sdp_with_media("video")) {
319-
xlog("L_INFO", "Video Call has been started, adding Video N5 QoS...");
320-
321-
# Set medComponents for Video Flow
322-
jansson_set("integer", "medCompN", 2, "$var(medComp_vid)");
323-
jansson_set("string", "qosReference", "qosVoNR", "$var(medComp_vid)");
324-
jansson_set("string", "medType", "VIDEO", "$var(medComp_vid)");
325-
jansson_set("array", "codecs", "[\"downlink\\noffer\\n\", \"uplink\\nanswer\\n\"]", "$var(medComp_vid)");
326-
327-
# RTP for Video Flow
328-
jansson_set("integer", "fNum", 1, "$var(medSubComp_vid1)");
329-
jansson_set("array", "fDescs", "[\"permit out 17 from any to any\", \"permit in 17 from any to any\"]", "$var(medSubComp_vid1)");
330-
jansson_set("string", "fStatus", "ENABLED", "$var(medSubComp_vid1)");
331-
jansson_set("string", "marBwDl", "5000 Kbps", "$var(medSubComp_vid1)");
332-
jansson_set("string", "marBwUl", "3000 Kbps", "$var(medSubComp_vid1)");
333-
jansson_set("string", "flowUsage", "NO_INFO", "$var(medSubComp_vid1)");
334-
335-
336-
# RTCP for Video Flow
337-
jansson_set("integer", "fNum", 2, "$var(medSubComp_vid2)");
338-
jansson_set("array", "fDescs", "[\"permit out 17 from any to any\", \"permit in 17 from any to any\"]", "$var(medSubComp_vid2)");
339-
jansson_set("string", "fStatus", "ENABLED", "$var(medSubComp_vid2)");
340-
jansson_set("string", "marBwDl", "5000 Kbps", "$var(medSubComp_vid2)");
341-
jansson_set("string", "marBwUl", "3000 Kbps", "$var(medSubComp_vid2)");
342-
jansson_set("string", "flowUsage", "RTCP", "$var(medSubComp_vid2)");
343-
344-
# Merging the flows under MediaSubComponent for Video Flow
345-
jansson_set("obj", "2", "$var(medSubComp_vid1)", "$var(medSubComps_vid)");
346-
jansson_set("obj", "3", "$var(medSubComp_vid2)", "$var(medSubComps_vid)");
347-
jansson_set("obj", "medSubComps", "$var(medSubComps_vid)", "$var(medComp_vid)");
348-
} # End if Video
349-
350361
# Merging all Flows under MediaComponent
351362
jansson_set("obj", "0", "$var(medComp)", "$var(medComponents)");
352-
if(sdp_with_media("video")) {
353-
jansson_set("obj", "1", "$var(medComp_vid)", "$var(medComponents)");
354-
}
355363
jansson_set("obj", "medComponents", "$var(medComponents)", "$var(payload)");
356364

357365
xlog("L_INFO","DEBUG: Set evSubsc\n");
@@ -429,9 +437,9 @@ route[N5_INIT_MT_REQ] {
429437
# Extract the substring after the last slash
430438
$var(mtc_app_session) = $(var(url){s.substr,$var(start_pos),$var(substring_length)});
431439

432-
xlog("L_INFO", "AppSession Id for user $tU is: $var(mtc_app_session)\n");
440+
xlog("L_INFO", "AppSession Id for $ci is: $var(mtc_app_session)\n");
433441

434-
$var(term_user_id) = $tU;
442+
$var(term_user_id) = $ci;
435443

436444
# Store the AppSession Id in the hash table associated with the UE
437445
$sht(user_data=>$var(term_user_id)) = $var(mtc_app_session);
@@ -457,19 +465,70 @@ route[N5_PATCH_MT_REQ] {
457465
$var(orig_ue_sdp_port) = $sht(user_sdps_port=>$var(sdp_call_id_port));
458466
xlog("L_INFO", "SDP RTP Port for UE with MSISDN $fU Call-ID $var(sdp_call_id_port) is: $var(orig_ue_sdp_port)\n");
459467

460-
$var(sdp_call_id_rtcp_port) = $ci;
461-
$var(orig_ue_sdp_rtcp_port) = $sht(user_sdps_rtcp_port=>$var(sdp_call_id_rtcp_port));
462-
xlog("L_INFO", "SDP RTCP Port for UE with MSISDN $fU Call-ID $var(sdp_call_id_rtcp_port) is: $var(orig_ue_sdp_rtcp_port)\n");
463-
464-
# Retrieve SDP Connection Info from SDP Answer
465-
$var(sdp_answ_ip) = $sdp(c:ip);
466-
$var(sdp_answ_port) = $sdp(m0:rtp:port);
467-
$var(sdp_answ_rtcp_port) = $sdp(m0:rtcp:port);
468-
$var(sdp_answ_codec) = $(rb{line.sw,a=rtpmap}{s.select,1, });
469-
xlog("L_INFO", "SDP Answer connection Info is: $var(sdp_answ_ip), RTP port $var(sdp_answ_port), RTCP Port $var(sdp_answ_rtcp_port) and codec is $var(sdp_answ_codec)\n");
470-
468+
$var(rtcp_funny_one)= 1;
469+
$var(orig_ue_sdp_rtcp_port) = $var(rtcp_funny_one) + $var(orig_ue_sdp_port);
470+
471+
# Checcking if we have the currect IPs accounrding to direction and then retrieve SDP Connection Info from SDP Answer
472+
$var(sdp_answ_ip_mt) = $sdp(c:ip);
473+
$var(sdp_answ_port_mt) = $(rb{line.sw,m=audio}{s.select,1, });
474+
$var(rtcp_aud_plus_mt) = 1;
475+
$var(sdp_answ_rtcp_port_mt) = $var(rtcp_aud_plus_mt) + $var(sdp_answ_port_mt);
476+
$var(sdp_answ_codec_mt) = $(rb{line.sw,a=rtpmap}{s.select,1, });
477+
478+
if ($var(sdp_answ_ip_mt) == $var(orig_ue_sdp_ip)) {
479+
$var(msisdn_mt) = $fU;
480+
$var(sdp_answ_codec_mt) = $(rb{line.sw,a=rtpmap}{s.select,1, });
481+
$var(sdp_id_answ_ip_mt) = $ci;
482+
$var(sdp_answ_ip_mt) = $sht(user_sdps_midcall_ips=>$var(sdp_id_answ_ip_mt));
483+
$var(sdp_id_ue_port_mt) = $ci;
484+
$var(sdp_answ_port_mt) = $sht(user_sdps_midcall_ports=>$var(sdp_id_ue_port_mt));
485+
$var(rtcp_aud_plus_mt) = 1;
486+
$var(sdp_answ_rtcp_port_mt) = $var(rtcp_aud_plus_mt) + $var(sdp_answ_port_mt);
487+
xlog("L_INFO", "Alt-Mode: Audio SDP Info is: $var(sdp_answ_ip_mt), RTP port $var(sdp_answ_port_mt), RTCP Port $var(sdp_answ_rtcp_port_mt)\n");
488+
489+
# Retrieve Video SDP Info
490+
# If Video is started
491+
if(sdp_with_media("video")) {
492+
# Retrieving RTP Port
493+
$var(sdp_id_ue_port_vid_mt) = $ci;
494+
$var(vid_rtp_mt_2) = $sht(user_sdps_port_vid=>$var(sdp_id_ue_port_vid_mt));
495+
# Retrieving RTCP
496+
$var(sdp_id_ue_rtcp_port_vid_mt) = $ci;
497+
$var(vid_rtcp_mt_2) = $sht(user_sdps_rtcp_port_vid=>$var(sdp_id_ue_rtcp_port_vid_mt));
498+
499+
# Retrieve SDP Connection Info from SDP Answer for Video
500+
$var(vid_rtp_mt_1) = $(rb{line.sw,m=video}{s.select,1, });
501+
$var(rtcp_vid_plus_mt) = 1;
502+
$var(vid_rtcp_mt_1) = $var(rtcp_vid_plus_mt) + $var(vid_rtp_mt_1);
503+
xlog("L_INFO", "Alt-Mode MT Video SDP request is: Video RTP port $var(vid_rtp_mt_2), RTCP Port $var(vid_rtcp_mt_2)\n");
504+
xlog("L_INFO", "Alt-Mode MT Video SDP Answer is: Video RTP port $var(vid_rtp_mt_1), RTCP Port $var(vid_rtcp_mt_1)\n");
505+
}
506+
507+
} else {
508+
$var(msisdn_mt) = $tU;
509+
# Retrieve Video SDP Info
510+
# If Video is started
511+
if(sdp_with_media("video")) {
512+
# Retrieving RTP Port for Request
513+
$var(sdp_id_ue_port_vid_mt) = $ci;
514+
$var(vid_rtp_mt_1) = $sht(user_sdps_port_vid=>$var(sdp_id_ue_port_vid_mt));
515+
# Retrieving RTCP
516+
$var(sdp_id_ue_rtcp_port_vid_mt) = $ci;
517+
$var(vid_rtcp_mt_1) = $sht(user_sdps_rtcp_port_vid=>$var(sdp_id_ue_rtcp_port_vid_mt));
518+
519+
# Retrieve SDP Connection Info from SDP Answer for Video
520+
$var(vid_rtp_mt_2) = $(rb{line.sw,m=video}{s.select,1, });
521+
$var(rtcp_vid_plus_mt) = 1;
522+
$var(vid_rtcp_mt_2) = $var(rtcp_vid_plus_mt) + $var(vid_rtp_mt_2);
523+
$var(sdp_answ_codec_vid) = $(rb{line.sw,a=rtpmap}{s.select,1, });
524+
xlog("L_INFO", "Alt-Mode MT Video SDP request is: Video RTP port $var(vid_rtp_mt_1), RTCP Port $var(vid_rtcp_mt_1)\n");
525+
xlog("L_INFO", "Alt-Mode MT Video SDP Answer is: Video RTP port $var(vid_rtp_mt_2), RTCP Port $var(vid_rtcp_mt_2)\n");
526+
527+
}
528+
}
529+
471530
# Retrieve AppSession
472-
$var(mtc_resp_app_id) = $tU;
531+
$var(mtc_resp_app_id) = $ci;
473532
$var(user_appsess_mtc_rep) = $sht(user_data=>$var(mtc_resp_app_id));
474533
xlog("L_INFO", "Stored MTC AppSession for user $var(mtc_resp_app_id): $var(user_appsess_mtc_rep)\n");
475534

@@ -493,15 +552,15 @@ route[N5_PATCH_MT_REQ] {
493552

494553
# RTP for Audio Flow
495554
jansson_set("integer", "fNum", 1, "$var(medSubComp1)");
496-
jansson_set("array", "fDescs", "[\"permit out 17 from $var(orig_ue_sdp_ip) $var(orig_ue_sdp_port) to $var(sdp_answ_ip) $var(sdp_answ_port)\", \"permit in 17 from $var(sdp_answ_ip) $var(sdp_answ_port) to $var(orig_ue_sdp_ip) $var(orig_ue_sdp_port)\"]", "$var(medSubComp1)");
555+
jansson_set("array", "fDescs", "[\"permit out 17 from $var(orig_ue_sdp_ip) $var(orig_ue_sdp_port) to $var(sdp_answ_ip_mt) $var(sdp_answ_port_mt)\", \"permit in 17 from $var(sdp_answ_ip_mt) $var(sdp_answ_port_mt) to $var(orig_ue_sdp_ip) $var(orig_ue_sdp_port)\"]", "$var(medSubComp1)");
497556
jansson_set("string", "fStatus", "ENABLED", "$var(medSubComp1)");
498557
jansson_set("string", "marBwDl", "5000 Kbps", "$var(medSubComp1)");
499558
jansson_set("string", "marBwUl", "3000 Kbps", "$var(medSubComp1)");
500559
jansson_set("string", "flowUsage", "NO_INFO", "$var(medSubComp1)");
501560

502561
# RTCP for Audio Flow
503562
jansson_set("integer", "fNum", 2, "$var(medSubComp2)");
504-
jansson_set("array", "fDescs", "[\"permit out 17 from $var(orig_ue_sdp_ip) $var(orig_ue_sdp_rtcp_port) to $var(sdp_answ_ip) $var(sdp_answ_rtcp_port)\", \"permit in 17 from $var(sdp_answ_ip) $var(sdp_answ_rtcp_port) to $var(orig_ue_sdp_ip) $var(orig_ue_sdp_rtcp_port)\"]", "$var(medSubComp2)");
563+
jansson_set("array", "fDescs", "[\"permit out 17 from $var(orig_ue_sdp_ip) $var(orig_ue_sdp_rtcp_port) to $var(sdp_answ_ip_mt) $var(sdp_answ_rtcp_port_mt)\", \"permit in 17 from $var(sdp_answ_ip_mt) $var(sdp_answ_rtcp_port_mt) to $var(orig_ue_sdp_ip) $var(orig_ue_sdp_rtcp_port)\"]", "$var(medSubComp2)");
505564
jansson_set("string", "fStatus", "ENABLED", "$var(medSubComp2)");
506565
jansson_set("string", "marBwDl", "6000 Kbps", "$var(medSubComp2)");
507566
jansson_set("string", "marBwUl", "5000 Kbps", "$var(medSubComp2)");
@@ -525,7 +584,7 @@ route[N5_PATCH_MT_REQ] {
525584

526585
# RTP for Video Flow
527586
jansson_set("integer", "fNum", 1, "$var(medSubComp_vid1)");
528-
jansson_set("array", "fDescs", "[\"permit out 17 from any to any\", \"permit in 17 from any to any\"]", "$var(medSubComp_vid1)");
587+
jansson_set("array", "fDescs", "[\"permit out 17 from $var(orig_ue_sdp_ip) $var(vid_rtp_mt_1) to $var(sdp_answ_ip_mt) $var(vid_rtp_mt_2)\", \"permit in 17 from $var(sdp_answ_ip_mt) $var(vid_rtp_mt_2) to $var(orig_ue_sdp_ip) $var(vid_rtp_mt_1)\"]", "$var(medSubComp_vid1)");
529588
jansson_set("string", "fStatus", "ENABLED", "$var(medSubComp_vid1)");
530589
jansson_set("string", "marBwDl", "5000 Kbps", "$var(medSubComp_vid1)");
531590
jansson_set("string", "marBwUl", "3000 Kbps", "$var(medSubComp_vid1)");
@@ -534,7 +593,7 @@ route[N5_PATCH_MT_REQ] {
534593

535594
# RTCP for Video Flow
536595
jansson_set("integer", "fNum", 2, "$var(medSubComp_vid2)");
537-
jansson_set("array", "fDescs", "[\"permit out 17 from any to any\", \"permit in 17 from any to any\"]", "$var(medSubComp_vid2)");
596+
jansson_set("array", "fDescs", "[\"permit out 17 from $var(orig_ue_sdp_ip) $var(vid_rtcp_mt_1) to $var(sdp_answ_ip_mt) $var(vid_rtcp_mt_2)\", \"permit in 17 from $var(sdp_answ_ip_mt) $var(vid_rtcp_mt_2) to $var(orig_ue_sdp_ip) $var(vid_rtcp_mt_1)\"]", "$var(medSubComp_vid2)");
538597
jansson_set("string", "fStatus", "ENABLED", "$var(medSubComp_vid2)");
539598
jansson_set("string", "marBwDl", "5000 Kbps", "$var(medSubComp_vid2)");
540599
jansson_set("string", "marBwUl", "3000 Kbps", "$var(medSubComp_vid2)");
@@ -569,9 +628,9 @@ route[N5_PATCH_MT_REQ] {
569628
# Set other parameters in payload
570629
jansson_set("string", "notifUri", "http://N5_BIND_IP:N5_BIND_PORT", "$var(payload)");
571630
jansson_set("string", "sponStatus", "SPONSOR_DISABLED", "$var(payload)");
572-
jansson_set("string", "gpsi", "msisdn-$tU", "$var(payload)");
631+
jansson_set("string", "gpsi", "msisdn-$var(msisdn_mt)", "$var(payload)");
573632
jansson_set("string", "suppFeat", "2", "$var(payload)");
574-
jansson_set("string", "ueIpv4", "$si", "$var(payload)");
633+
jansson_set("string", "ueIpv4", "$var(sdp_answ_ip_mt)", "$var(payload)");
575634

576635
# Assemble the final JSON request
577636
jansson_set("obj", "ascReqData", "$var(payload)", "$var(json_request)");
@@ -609,30 +668,30 @@ route[N5_PATCH_MT_REQ] {
609668
}
610669

611670
route[N5_MTC_TERM] {
612-
xlog("L_ALERT","Terminating AppSession For Call for User $tU due to call END\n");
671+
xlog("L_ALERT","Terminating AppSession For Call $ci due to call END\n");
613672
# Retrieve appSession based on To URI
614-
$var(mtc_resp_app_id) = $tU;
673+
$var(mtc_resp_app_id) = $ci;
615674
$var(user_appsess_mtc_rep) = $sht(user_data=>$var(mtc_resp_app_id));
616-
if $var(user_appsess_mtc_rep) == 0 {
617-
xlog("L_INFO", "No AppSession Id found to terminate. Trying using From URI\n");
618-
619-
# Retrieve appSession based on From URI
620-
$var(mtc_resp_app_id) = $fU;
621-
$var(user_appsess_mtc_rep) = $sht(user_data=>$var(mtc_resp_app_id));
622-
xlog("L_INFO", "Alt-Method : Terminating Stored AppSession for user $var(mtc_resp_app_id): $var(user_appsess_mtc_rep)\n");
623-
} else {
675+
#if $var(user_appsess_mtc_rep) == 0 {
676+
# xlog("L_INFO", "No AppSession Id found to terminate. Trying using From URI\n");
677+
#
678+
# # Retrieve appSession based on From URI
679+
# $var(mtc_resp_app_id) = $fU;
680+
# $var(user_appsess_mtc_rep) = $sht(user_data=>$var(mtc_resp_app_id));
681+
# xlog("L_INFO", "Alt-Method : Terminating Stored AppSession for user $var(mtc_resp_app_id): $var(user_appsess_mtc_rep)\n");
682+
#} else {
624683
xlog("L_INFO", "Normal Method : MTC AppSession for user $var(mtc_resp_app_id): $var(user_appsess_mtc_rep)\n");
625-
}
684+
#}
626685

627-
$var(headers) = "X-SIP-Status: De-Registration\r\n";
686+
$var(headers) = "X-SIP-Status: Call-End-MT\r\n";
628687
$var(headers) = $var(headers) + "3gpp-sbi-discovery-target-nf-type: PCF\r\n";
629688
$var(headers) = $var(headers) + "accept: application/json\r\n";
630689
$var(headers) = $var(headers) + "accept: application/problem+json\r\n";
631690
$var(headers) = $var(headers) + "3gpp-sbi-max-rsp-time: 10000\r\n";
632691
$var(headers) = $var(headers) + "3gpp-sbi-discovery-service-names: npcf-policyauthorization\r\n";
633692
$var(headers) = $var(headers) + "3gpp-sbi-sender-timestamp: " + $var(time_now);
634693

635-
http_client_request_v2pk("POST", "http://SCP_BIND_IP:SCP_BIND_PORT/npcf-policyauthorization/v1/app-sessions/$var(user_appsess_mtc_rep)/delete", "$var(json_request)", "$var(headers)", "$var(result)" );
694+
http_client_request_v2pk("POST", "http://SCP_BIND_IP:SCP_BIND_PORT/npcf-policyauthorization/v1/app-sessions/$var(user_appsess_mtc_rep)/delete", "", "$var(headers)", "$var(result)" );
636695
xlog("L_INFO", "cURL header: $curlerror(error)\n");
637696
xlog("L_INFO", "HTTP response: $rc\n");
638697
}

0 commit comments

Comments
 (0)