diff --git a/src/amf/amf-sm.c b/src/amf/amf-sm.c index 265115674..b62b5e7b1 100644 --- a/src/amf/amf-sm.c +++ b/src/amf/amf-sm.c @@ -600,6 +600,16 @@ void amf_state_operational(ogs_fsm_t *s, amf_event_t *e) sbi_xact = e->h.sbi.data; ogs_assert(sbi_xact); + sbi_xact = ogs_sbi_xact_cycle(sbi_xact); + if (!sbi_xact) { + /* message was received and put into an event list, + * but not yet processed before timer expiration event + * was put into event list + */ + ogs_error("SBI transaction has already been removed"); + break; + } + sbi_object = sbi_xact->sbi_object; ogs_assert(sbi_object); diff --git a/src/ausf/ausf-sm.c b/src/ausf/ausf-sm.c index 81efab228..a7104997b 100644 --- a/src/ausf/ausf-sm.c +++ b/src/ausf/ausf-sm.c @@ -361,6 +361,16 @@ void ausf_state_operational(ogs_fsm_t *s, ausf_event_t *e) sbi_xact = e->h.sbi.data; ogs_assert(sbi_xact); + sbi_xact = ogs_sbi_xact_cycle(sbi_xact); + if (!sbi_xact) { + /* message was received and put into an event list, + * but not yet processed before timer expiration event + * was put into event list + */ + ogs_error("SBI transaction has already been removed"); + break; + } + stream = sbi_xact->assoc_stream; ogs_assert(stream); diff --git a/src/bsf/bsf-sm.c b/src/bsf/bsf-sm.c index 9689a11cb..bba9e7558 100644 --- a/src/bsf/bsf-sm.c +++ b/src/bsf/bsf-sm.c @@ -345,6 +345,16 @@ void bsf_state_operational(ogs_fsm_t *s, bsf_event_t *e) sbi_xact = e->h.sbi.data; ogs_assert(sbi_xact); + sbi_xact = ogs_sbi_xact_cycle(sbi_xact); + if (!sbi_xact) { + /* message was received and put into an event list, + * but not yet processed before timer expiration event + * was put into event list + */ + ogs_error("SBI transaction has already been removed"); + break; + } + stream = sbi_xact->assoc_stream; /* Here, we should not use ogs_assert(stream) * since 'namf-comm' service has no an associated stream. */ diff --git a/src/pcf/pcf-sm.c b/src/pcf/pcf-sm.c index 7ed547e07..3393622e9 100644 --- a/src/pcf/pcf-sm.c +++ b/src/pcf/pcf-sm.c @@ -591,6 +591,16 @@ void pcf_state_operational(ogs_fsm_t *s, pcf_event_t *e) sbi_xact = e->h.sbi.data; ogs_assert(sbi_xact); + sbi_xact = ogs_sbi_xact_cycle(sbi_xact); + if (!sbi_xact) { + /* message was received and put into an event list, + * but not yet processed before timer expiration event + * was put into event list + */ + ogs_error("SBI transaction has already been removed"); + break; + } + sbi_object = sbi_xact->sbi_object; ogs_assert(sbi_object); diff --git a/src/scp/scp-sm.c b/src/scp/scp-sm.c index 9fce3ea12..1ac121664 100644 --- a/src/scp/scp-sm.c +++ b/src/scp/scp-sm.c @@ -247,6 +247,16 @@ void scp_state_operational(ogs_fsm_t *s, scp_event_t *e) sbi_xact = e->h.sbi.data; ogs_assert(sbi_xact); + sbi_xact = ogs_sbi_xact_cycle(sbi_xact); + if (!sbi_xact) { + /* message was received and put into an event list, + * but not yet processed before timer expiration event + * was put into event list + */ + ogs_error("SBI transaction has already been removed"); + break; + } + stream = sbi_xact->assoc_stream; /* Here, we should not use ogs_assert(stream) * since 'namf-comm' service has no an associated stream. */ diff --git a/src/smf/smf-sm.c b/src/smf/smf-sm.c index 3b0258320..0980cbc9b 100644 --- a/src/smf/smf-sm.c +++ b/src/smf/smf-sm.c @@ -835,6 +835,16 @@ void smf_state_operational(ogs_fsm_t *s, smf_event_t *e) sbi_xact = e->h.sbi.data; ogs_assert(sbi_xact); + sbi_xact = ogs_sbi_xact_cycle(sbi_xact); + if (!sbi_xact) { + /* message was received and put into an event list, + * but not yet processed before timer expiration event + * was put into event list + */ + ogs_error("SBI transaction has already been removed"); + break; + } + stream = sbi_xact->assoc_stream; /* Here, we should not use ogs_assert(stream) * since 'namf-comm' service has no an associated stream. */ diff --git a/src/udm/udm-sm.c b/src/udm/udm-sm.c index 371e21db7..25c03b6d0 100644 --- a/src/udm/udm-sm.c +++ b/src/udm/udm-sm.c @@ -402,6 +402,16 @@ void udm_state_operational(ogs_fsm_t *s, udm_event_t *e) sbi_xact = e->h.sbi.data; ogs_assert(sbi_xact); + sbi_xact = ogs_sbi_xact_cycle(sbi_xact); + if (!sbi_xact) { + /* message was received and put into an event list, + * but not yet processed before timer expiration event + * was put into event list + */ + ogs_error("SBI transaction has already been removed"); + break; + } + stream = sbi_xact->assoc_stream; ogs_assert(stream); diff --git a/tests/af/af-sm.c b/tests/af/af-sm.c index e9ca38054..18780a91b 100644 --- a/tests/af/af-sm.c +++ b/tests/af/af-sm.c @@ -430,6 +430,16 @@ void af_state_operational(ogs_fsm_t *s, af_event_t *e) sbi_xact = e->h.sbi.data; ogs_assert(sbi_xact); + sbi_xact = ogs_sbi_xact_cycle(sbi_xact); + if (!sbi_xact) { + /* message was received and put into an event list, + * but not yet processed before timer expiration event + * was put into event list + */ + ogs_error("SBI transaction has already been removed"); + break; + } + stream = sbi_xact->assoc_stream; /* Here, we should not use ogs_assert(stream) * since 'namf-comm' service has no an associated stream. */