Skip to content

Commit 268781e

Browse files
committed
fix: second ue release uecontext without authetication
1 parent 9443d1b commit 268781e

File tree

5 files changed

+18
-3
lines changed

5 files changed

+18
-3
lines changed

internal/context/amf_ran.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ func (ran *AmfRan) NewRanUe(ranUeNgapID int64) (*RanUe, error) {
6363
ranUe.RanUeNgapId = ranUeNgapID
6464
ranUe.Ran = ran
6565
ranUe.Log = ran.Log
66+
ranUe.FindAmfUe = nil
6667
ranUe.UpdateLogFields()
6768

6869
if ranUeNgapID != RanUeNgapIdUnspecified {

internal/context/ran_ue.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,9 @@ type RanUe struct {
4747
LastActTime *time.Time
4848

4949
/* Related Context*/
50-
AmfUe *AmfUe
51-
Ran *AmfRan
50+
AmfUe *AmfUe
51+
Ran *AmfRan
52+
FindAmfUe *AmfUe
5253

5354
/* Routing ID */
5455
RoutingID string

internal/gmm/common/user_profile.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,14 @@ func AttachRanUeToAmfUeAndReleaseOldIfAny(ue *context.AmfUe, ranUe *context.RanU
6969
ue.AttachRanUe(ranUe)
7070
}
7171

72+
func ClearHoldingRanUe(ranUe *context.RanUe) {
73+
ranUe.DetachAmfUe()
74+
ranUe.Log.Error("Clear Holding RanUE")
75+
causeGroup := ngapType.CausePresentRadioNetwork
76+
causeValue := ngapType.CauseRadioNetworkPresentReleaseDueToNgranGeneratedReason
77+
ngap_message.SendUEContextReleaseCommand(ranUe, context.UeContextReleaseUeContext, causeGroup, causeValue)
78+
}
79+
7280
func PurgeSubscriberData(ue *context.AmfUe, accessType models.AccessType) error {
7381
logger.GmmLog.Debugln("PurgeSubscriberData")
7482

internal/nas/handler.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@ func HandleNAS(ue *amf_context.RanUe, procedureCode int64, nasPdu []byte, initia
3636
ue.AmfUe.NasPduValue = nasPdu
3737
ue.AmfUe.MacFailed = !integrityProtected
3838

39+
if ue.AmfUe.SecurityContextIsValid() && ue.FindAmfUe != nil {
40+
gmm_common.ClearHoldingRanUe(ue.FindAmfUe.RanUe[ue.Ran.AnType])
41+
ue.FindAmfUe = nil
42+
}
43+
3944
if errDispatch := Dispatch(ue.AmfUe, ue.Ran.AnType, procedureCode, msg); errDispatch != nil {
4045
ue.AmfUe.NASLog.Errorf("Handle NAS Error: %v", errDispatch)
4146
}

internal/ngap/handler.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -498,7 +498,7 @@ func handleInitialUEMessageMain(ran *context.AmfRan,
498498
// Described in TS 23.502 4.2.2.2.2 step 4 (without UDSF deployment)
499499
ranUe.Log.Infof("find AmfUe [%q:%q]", idType, id)
500500
ranUe.Log.Debugf("AmfUe Attach RanUe [RanUeNgapID: %d]", ranUe.RanUeNgapId)
501-
gmm_common.AttachRanUeToAmfUeAndReleaseOldIfAny(amfUe, ranUe)
501+
ranUe.FindAmfUe = amfUe
502502
} else if regReqType != nasMessage.RegistrationType5GSInitialRegistration {
503503
if regReqType == nasMessage.RegistrationType5GSPeriodicRegistrationUpdating ||
504504
regReqType == nasMessage.RegistrationType5GSMobilityRegistrationUpdating {

0 commit comments

Comments
 (0)