@@ -1281,7 +1281,13 @@ def generateDiameterResponse(self, binaryData: str) -> str:
12811281 self .logTool .log (service = 'HSS' , level = 'debug' , message = f"[diameter.py] [generateDiameterResponse] [{ diameterApplication .get ('requestAcronym' , '' )} ] Successfully generated response: { response } " , redisClient = self .redisMessaging )
12821282 except Exception as e :
12831283 self .logTool .log (service = 'HSS' , level = 'error' , message = f"[diameter.py] [generateDiameterResponse] [{ diameterApplication .get ('requestAcronym' , '' )} ] Error generating response: { traceback .format_exc ()} " , redisClient = self .redisMessaging )
1284- return ''
1284+ try :
1285+ response = self .Respond_ResultCode (packet_vars , avps , 5012 )
1286+ self .logTool .log (service = 'HSS' , level = 'warning' , message = f"[diameter.py] [generateDiameterResponse] [{ diameterApplication .get ('requestAcronym' , '' )} ] Returning DIAMETER_UNABLE_TO_COMPLY (5012) due to unhandled error" , redisClient = self .redisMessaging )
1287+ return response
1288+ except Exception as fallbackError :
1289+ self .logTool .log (service = 'HSS' , level = 'error' , message = f"[diameter.py] [generateDiameterResponse] [{ diameterApplication .get ('requestAcronym' , '' )} ] Failed to generate fallback error response: { traceback .format_exc ()} " , redisClient = self .redisMessaging )
1290+ return ''
12851291 break
12861292 except Exception as e :
12871293 continue
@@ -3034,8 +3040,13 @@ def Answer_16777216_300(self, packet_vars, avps):
30343040 username = self .get_avp_data (avps , 1 )[0 ]
30353041 username = binascii .unhexlify (username ).decode ('utf-8' )
30363042 self .logTool .log (service = 'HSS' , level = 'debug' , message = "Username AVP is present, value is " + str (username ), redisClient = self .redisMessaging )
3037- imsi = username .split ('@' )[0 ] #Strip Domain
3038- domain = username .split ('@' )[1 ] #Get Domain Part
3043+ if '@' in username :
3044+ imsi = username .split ('@' )[0 ]
3045+ domain = username .split ('@' )[1 ]
3046+ else :
3047+ self .logTool .log (service = 'HSS' , level = 'warning' , message = f"[diameter.py] [Answer_16777216_300] [UAR] Username '{ username } ' missing '@' domain separator, using username as IMSI" , redisClient = self .redisMessaging )
3048+ imsi = username
3049+ domain = binascii .unhexlify (self .OriginRealm ).decode ('utf-8' )
30393050 self .logTool .log (service = 'HSS' , level = 'debug' , message = "Extracted imsi: " + str (imsi ) + " now checking backend for this IMSI" , redisClient = self .redisMessaging )
30403051 ims_subscriber_details = self .database .Get_IMS_Subscriber (imsi = imsi )
30413052 except Exception as E :
@@ -3291,9 +3302,16 @@ def Answer_16777216_303(self, packet_vars, avps):
32913302 self .logTool .log (service = 'HSS' , level = 'debug' , message = "Got MAR for public_identity : " + str (public_identity ), redisClient = self .redisMessaging )
32923303 username = self .get_avp_data (avps , 1 )[0 ]
32933304 username = binascii .unhexlify (username ).decode ('utf-8' )
3294- imsi = username .split ('@' )[0 ] #Strip Domain
3295- domain = username .split ('@' )[1 ] #Get Domain Part
32963305 self .logTool .log (service = 'HSS' , level = 'debug' , message = "Got MAR username: " + str (username ), redisClient = self .redisMessaging )
3306+
3307+ if '@' in username :
3308+ imsi = username .split ('@' )[0 ]
3309+ domain = username .split ('@' )[1 ]
3310+ else :
3311+ self .logTool .log (service = 'HSS' , level = 'warning' , message = f"[diameter.py] [Answer_16777216_303] [MAR] Username '{ username } ' missing '@' domain separator, using OriginRealm as domain fallback" , redisClient = self .redisMessaging )
3312+ imsi = username
3313+ domain = binascii .unhexlify (self .OriginRealm ).decode ('utf-8' )
3314+
32973315 auth_scheme = ''
32983316
32993317 avp = '' #Initiate empty var AVP
0 commit comments