From 029a3b50453ee9a3cf2801747d6db5bb6b325cb5 Mon Sep 17 00:00:00 2001 From: Carsten Date: Thu, 25 Sep 2025 15:37:08 +0200 Subject: [PATCH] Minor sanity fixes --- lib/database.py | 4 ++++ lib/diameter.py | 17 +++++++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/lib/database.py b/lib/database.py index f810e2d7..d15883fb 100755 --- a/lib/database.py +++ b/lib/database.py @@ -2144,6 +2144,10 @@ def Update_Serving_APN(self, imsi, apn, pcrf_session_id, serving_pgw, subscriber assert(len(serving_pgw) > 0) assert("None" not in serving_pgw) + if ServingAPN and ((subscriber_routing == "None") or (subscriber_routing == "") or (subscriber_routing == "Failed to Decode / Get UE IP") or (subscriber_routing == None)): + json_data['subscriber_routing'] = ServingAPN['subscriber_routing'] + self.logTool.log(service='Database', level='debug', message="Using existing subscriber routing from Serving APN", redisClient=self.redisMessaging) + self.UpdateObj(SERVING_APN, json_data, ServingAPN['serving_apn_id'], True) objectData = self.GetObj(SERVING_APN, ServingAPN['serving_apn_id']) self.handleWebhook(objectData, 'PATCH') diff --git a/lib/diameter.py b/lib/diameter.py index f95ab3e0..11dd100f 100755 --- a/lib/diameter.py +++ b/lib/diameter.py @@ -3756,10 +3756,19 @@ def Answer_16777236_265(self, packet_vars, avps): servingApn = remoteServingApn else: servingApn = self.database.Get_Serving_APN(subscriber_id=subscriberId, apn_id=apnId) - servingPgwPeer = servingApn.get('serving_pgw_peer', None).split(';')[0] - servingPgw = servingApn.get('serving_pgw', None) - servingPgwRealm = servingApn.get('serving_pgw_realm', None) - pcrfSessionId = servingApn.get('pcrf_session_id', None) + + if servingApn: + self.logTool.log(service='HSS', level='debug', message=f"[diameter.py] [Answer_16777236_265] [AAA] Found Serving APN for subscriberId: {subscriberId} and apnId: {apnId}", redisClient=self.redisMessaging) + servingPgwPeer = servingApn.get('serving_pgw_peer', None).split(';')[0] + servingPgw = servingApn.get('serving_pgw', None) + servingPgwRealm = servingApn.get('serving_pgw_realm', None) + pcrfSessionId = servingApn.get('pcrf_session_id', None) + else: + servingPgwPeer = None + servingPgw = None + servingPgwRealm = None + pcrfSessionId = None + raise Exception("No Serving APN found") if not ueIp: ueIp = servingApn.get('subscriber_routing', None)