From 3bbc32daf54692abf2226176a3b6babe5890ff51 Mon Sep 17 00:00:00 2001 From: Spencer Sevilla Date: Tue, 15 Nov 2022 15:07:35 -0800 Subject: [PATCH] [smf] idempotently handle second csr message (#56) --- src/smf/gsm-sm.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/smf/gsm-sm.c b/src/smf/gsm-sm.c index 4a2b92b92e..e0a9c8c8a0 100644 --- a/src/smf/gsm-sm.c +++ b/src/smf/gsm-sm.c @@ -767,7 +767,29 @@ void smf_gsm_state_operational(ogs_fsm_t *s, smf_event_t *e) OGS_FSM_TRAN(s, smf_gsm_state_wait_pfcp_deletion); } break; - + case OGS_GTP2_CREATE_SESSION_REQUEST_TYPE: + ogs_warn("received Create Session Request for preexisting session"); + gtp2_cause = smf_s5c_handle_create_session_request(sess, + e->gtp_xact, + &e->gtp2_message->create_session_request); + if (gtp2_cause != OGS_GTP2_CAUSE_REQUEST_ACCEPTED) { + send_gtp_create_err_msg(sess, e->gtp_xact, gtp2_cause); + return; + } + switch (sess->gtp_rat_type) { + case OGS_GTP2_RAT_TYPE_EUTRAN: + if (send_ccr_init_req_gx_gy(sess, e) == true) + OGS_FSM_TRAN(s, smf_gsm_state_wait_epc_auth_initial); + break; + case OGS_GTP2_RAT_TYPE_WLAN: + smf_s6b_send_aar(sess, e->gtp_xact); + OGS_FSM_TRAN(s, smf_gsm_state_wait_epc_auth_initial); + break; + default: + ogs_error("Unknown RAT Type [%d]", sess->gtp_rat_type); + ogs_assert_if_reached(); + } + break; default: ogs_error("Not implemented(type:%d)", gtp2_message->h.type); }