Skip to content

Commit 8a1d3c6

Browse files
authored
Merge pull request #60 from Zach1113/fix/UDR-panic-and-crash-fix
fix: UDR panic/crash paths for #919 #920 #922 #923
2 parents 754d23b + ee01c8d commit 8a1d3c6

3 files changed

Lines changed: 24 additions & 16 deletions

File tree

‎internal/sbi/processor/callback.go‎

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,7 @@ func PreHandleInfluenceDataUpdateNotification(influenceId string, original, modi
8181
func SendOnDataChangeNotify(ueId string, notifyItems []models.NotifyItem) {
8282
defer func() {
8383
if p := recover(); p != nil {
84-
// Print stack for panic to log. Fatalf() will let program exit.
85-
logger.HttpLog.Fatalf("panic: %v\n%s", p, string(debug.Stack()))
84+
logger.HttpLog.Errorf("panic: %v\n%s", p, string(debug.Stack()))
8685
}
8786
}()
8887

@@ -94,12 +93,15 @@ func SendOnDataChangeNotify(ueId string, notifyItems []models.NotifyItem) {
9493
if ueId == subscriptionDataSubscription.UeId {
9594
onDataChangeNotifyUrl := subscriptionDataSubscription.CallbackReference
9695

97-
dataChangeReq := DataRepository.SubscriptionDataSubscriptionsOnDataChangePostRequest{}
98-
dataChangeReq.DataChangeNotify.UeId = ueId
99-
dataChangeReq.DataChangeNotify.OriginalCallbackReference = []string{
100-
subscriptionDataSubscription.OriginalCallbackReference,
96+
dataChangeReq := DataRepository.SubscriptionDataSubscriptionsOnDataChangePostRequest{
97+
DataChangeNotify: &models.DataChangeNotify{
98+
UeId: ueId,
99+
OriginalCallbackReference: []string{
100+
subscriptionDataSubscription.OriginalCallbackReference,
101+
},
102+
NotifyItems: notifyItems,
103+
},
101104
}
102-
dataChangeReq.DataChangeNotify.NotifyItems = notifyItems
103105
rsp, err := client.SubsToNotifyCollectionApi.SubscriptionDataSubscriptionsOnDataChangePost(
104106
context.TODO(), onDataChangeNotifyUrl, &dataChangeReq)
105107

@@ -133,7 +135,6 @@ func SendPolicyDataChangeNotification(policyDataChangeNotification models.Policy
133135
policyDataChangeNotification,
134136
},
135137
}
136-
137138
rsp, err := client.PolicyDataSubscriptionsCollectionApi.
138139
CreateIndividualPolicyDataSubscriptionPolicyDataChangeNotificationPost(context.TODO(),
139140
policyDataChangeNotificationUrl, &req)
@@ -171,7 +172,6 @@ func SendInfluenceDataUpdateNotification(resUri string, original, modified *mode
171172
req := DataRepository.CreateIndividualInfluenceDataSubscriptionTrafficInfluenceDataChangeNotificationPostRequest{
172173
RequestBody: []interface{}{trafficInfluDataNotif},
173174
}
174-
175175
rsp, err := client.InfluenceDataSubscriptionsCollectionApi.
176176
CreateIndividualInfluenceDataSubscriptionTrafficInfluenceDataChangeNotificationPost(
177177
context.TODO(), influenceDataChangeNotificationUrl, &req)
@@ -190,7 +190,6 @@ func SendInfluenceDataUpdateNotification(resUri string, original, modified *mode
190190
req := DataRepository.CreateIndividualInfluenceDataSubscriptionTrafficInfluenceDataChangeNotificationPostRequest{
191191
RequestBody: []interface{}{trafficInfluDataNotif},
192192
}
193-
194193
rsp, err := client.InfluenceDataSubscriptionsCollectionApi.
195194
CreateIndividualInfluenceDataSubscriptionTrafficInfluenceDataChangeNotificationPost(
196195
context.TODO(), influenceDataChangeNotificationUrl, &req)

‎internal/sbi/processor/event_amf_subscription_info_document.go‎

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,22 +51,28 @@ func (p *Processor) CreateAMFSubscriptionsProcedure(c *gin.Context, subsId strin
5151
func (p *Processor) RemoveAmfSubscriptionsInfoProcedure(c *gin.Context, subsId string, ueId string) {
5252
udrSelf := udr_context.GetSelf()
5353
value, ok := udrSelf.UESubsCollection.Load(ueId)
54-
var pd *models.ProblemDetails = nil
54+
var pd *models.ProblemDetails
5555

5656
if !ok {
5757
pd = util.ProblemDetailsNotFound("USER_NOT_FOUND")
5858
logger.DataRepoLog.Errorf("RemoveAmfSubscriptionsInfoProcedure err: %s", pd.Detail)
59+
c.Set(sbi.IN_PB_DETAILS_CTX_STR, pd.Cause)
60+
c.JSON(int(pd.Status), pd)
61+
return
5962
}
6063

6164
UESubsData := value.(*udr_context.UESubsData)
62-
_, ok = UESubsData.EeSubscriptionCollection[subsId]
65+
eeSub, ok := UESubsData.EeSubscriptionCollection[subsId]
6366

6467
if !ok {
6568
pd = util.ProblemDetailsNotFound("SUBSCRIPTION_NOT_FOUND")
6669
logger.DataRepoLog.Errorf("RemoveAmfSubscriptionsInfoProcedure err: %s", pd.Detail)
70+
c.Set(sbi.IN_PB_DETAILS_CTX_STR, pd.Cause)
71+
c.JSON(int(pd.Status), pd)
72+
return
6773
}
6874

69-
if UESubsData.EeSubscriptionCollection[subsId].AmfSubscriptionInfos == nil {
75+
if eeSub == nil || eeSub.AmfSubscriptionInfos == nil {
7076
pd = util.ProblemDetailsNotFound("AMFSUBSCRIPTION_NOT_FOUND")
7177
}
7278

‎internal/sbi/processor/provisioned_data_document.go‎

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,14 +118,17 @@ func (p *Processor) QueryProvisionedDataProcedure(c *gin.Context, ueId string, s
118118
c.JSON(http.StatusInternalServerError, problemDetails)
119119
return
120120
}
121-
for _, smData := range tmp {
122-
dnnConfigurations := smData.DnnConfigurations
121+
for i := range tmp {
122+
dnnConfigurations := tmp[i].DnnConfigurations
123123
tmpDnnConfigurations := make(map[string]models.DnnConfiguration)
124124
for escapedDnn, dnnConf := range dnnConfigurations {
125125
dnn := util.UnescapeDnn(escapedDnn)
126126
tmpDnnConfigurations[dnn] = dnnConf
127127
}
128-
smData.DnnConfigurations = tmpDnnConfigurations
128+
tmp[i].DnnConfigurations = tmpDnnConfigurations
129+
}
130+
if provisionedDataSets.SmData == nil {
131+
provisionedDataSets.SmData = &models.SmSubsData{}
129132
}
130133
provisionedDataSets.SmData.IndividualSmSubsData = tmp
131134
}

0 commit comments

Comments
 (0)