vlr_subscr_conn_timeout(): don't fire events to discarded fi
Terminating one of the FSM instances may effect termination and deallocation of the others, as well as the vlr_subscr itself. So, reserve the vlr_subscr locally, and then dispatch events to exactly those FSM instances that exist. The changes in expected output in the msc_vlr_tests shows that the subscriber was deallocated from the first FSM termination, and now sticks around until we've checked both FSMs are gone. Change-Id: I56551ecc10f5295fe75944bdde4b583b1b621811
This commit is contained in:
parent
3ddd7422ea
commit
3bae836310
|
@ -973,8 +973,12 @@ void vlr_subscr_conn_timeout(struct vlr_subscr *vsub)
|
||||||
if (!vsub)
|
if (!vsub)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
vlr_loc_update_conn_timeout(vsub->lu_fsm);
|
vlr_subscr_get(vsub);
|
||||||
vlr_parq_conn_timeout(vsub->proc_arq_fsm);
|
if (vsub->lu_fsm)
|
||||||
|
vlr_loc_update_conn_timeout(vsub->lu_fsm);
|
||||||
|
if (vsub->proc_arq_fsm)
|
||||||
|
vlr_parq_conn_timeout(vsub->proc_arq_fsm);
|
||||||
|
vlr_subscr_put(vsub);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct vlr_instance *vlr_alloc(void *ctx, const struct vlr_ops *ops)
|
struct vlr_instance *vlr_alloc(void *ctx, const struct vlr_ops *ops)
|
||||||
|
|
|
@ -46,6 +46,7 @@ DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||||
llist_count(&net->subscr_conns) == 1
|
llist_count(&net->subscr_conns) == 1
|
||||||
- Total time passed: 5.001598 s
|
- Total time passed: 5.001598 s
|
||||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Timeout of T0
|
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Timeout of T0
|
||||||
|
DREF VLR subscr IMSI:901700000004620 usage increases to: 2
|
||||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Connection timed out
|
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Connection timed out
|
||||||
- sending LU Reject for IMSI:901700000004620, cause 22
|
- sending LU Reject for IMSI:901700000004620, cause 22
|
||||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
|
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
|
||||||
|
@ -67,10 +68,11 @@ DMM msc_subscr_conn_close(vsub=IMSI:901700000004620, cause=2): no conn fsm, rele
|
||||||
- BSSAP Clear --RAN_GERAN_A--> MS
|
- BSSAP Clear --RAN_GERAN_A--> MS
|
||||||
DREF IMSI:901700000004620: MSC conn use - 1 == 0
|
DREF IMSI:901700000004620: MSC conn use - 1 == 0
|
||||||
DRLL subscr IMSI:901700000004620: Freeing subscriber connection
|
DRLL subscr IMSI:901700000004620: Freeing subscriber connection
|
||||||
DREF VLR subscr IMSI:901700000004620 usage decreases to: 0
|
DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
|
||||||
DREF freeing VLR subscr IMSI:901700000004620
|
|
||||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||||
|
DREF VLR subscr IMSI:901700000004620 usage decreases to: 0
|
||||||
|
DREF freeing VLR subscr IMSI:901700000004620
|
||||||
- SUBSCR_CONN_TIMEOUT has passed, conn is gone.
|
- SUBSCR_CONN_TIMEOUT has passed, conn is gone.
|
||||||
bssap_clear_sent == 1
|
bssap_clear_sent == 1
|
||||||
llist_count(&net->subscr_conns) == 0
|
llist_count(&net->subscr_conns) == 0
|
||||||
|
@ -146,6 +148,7 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||||
lu_result_sent == 0
|
lu_result_sent == 0
|
||||||
- Total time passed: 5.001598 s
|
- Total time passed: 5.001598 s
|
||||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Timeout of T0
|
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Timeout of T0
|
||||||
|
DREF VLR subscr MSISDN:46071 usage increases to: 2
|
||||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Connection timed out
|
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Connection timed out
|
||||||
- sending LU Reject for MSISDN:46071, cause 22
|
- sending LU Reject for MSISDN:46071, cause 22
|
||||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_DONE
|
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_DONE
|
||||||
|
@ -167,10 +170,11 @@ DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing di
|
||||||
- BSSAP Clear --RAN_GERAN_A--> MS
|
- BSSAP Clear --RAN_GERAN_A--> MS
|
||||||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||||
DREF VLR subscr MSISDN:46071 usage decreases to: 0
|
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||||
DREF freeing VLR subscr MSISDN:46071
|
|
||||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||||
|
DREF VLR subscr MSISDN:46071 usage decreases to: 0
|
||||||
|
DREF freeing VLR subscr MSISDN:46071
|
||||||
- SUBSCR_CONN_TIMEOUT has passed, conn is gone.
|
- SUBSCR_CONN_TIMEOUT has passed, conn is gone.
|
||||||
bssap_clear_sent == 1
|
bssap_clear_sent == 1
|
||||||
llist_count(&net->subscr_conns) == 0
|
llist_count(&net->subscr_conns) == 0
|
||||||
|
|
|
@ -66,6 +66,7 @@ DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
|
||||||
lu_result_sent == 0
|
lu_result_sent == 0
|
||||||
- Total time passed: 5.001598 s
|
- Total time passed: 5.001598 s
|
||||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Timeout of T0
|
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Timeout of T0
|
||||||
|
DREF VLR subscr IMSI:901700000004620 usage increases to: 2
|
||||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Connection timed out
|
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Connection timed out
|
||||||
- sending LU Reject for IMSI:901700000004620, cause 22
|
- sending LU Reject for IMSI:901700000004620, cause 22
|
||||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
|
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
|
||||||
|
@ -87,10 +88,11 @@ DMM msc_subscr_conn_close(vsub=IMSI:901700000004620, cause=2): no conn fsm, rele
|
||||||
- BSSAP Clear --RAN_GERAN_A--> MS
|
- BSSAP Clear --RAN_GERAN_A--> MS
|
||||||
DREF IMSI:901700000004620: MSC conn use - 1 == 0
|
DREF IMSI:901700000004620: MSC conn use - 1 == 0
|
||||||
DRLL subscr IMSI:901700000004620: Freeing subscriber connection
|
DRLL subscr IMSI:901700000004620: Freeing subscriber connection
|
||||||
DREF VLR subscr IMSI:901700000004620 usage decreases to: 0
|
DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
|
||||||
DREF freeing VLR subscr IMSI:901700000004620
|
|
||||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||||
|
DREF VLR subscr IMSI:901700000004620 usage decreases to: 0
|
||||||
|
DREF freeing VLR subscr IMSI:901700000004620
|
||||||
- SUBSCR_CONN_TIMEOUT has passed, conn is gone.
|
- SUBSCR_CONN_TIMEOUT has passed, conn is gone.
|
||||||
bssap_clear_sent == 1
|
bssap_clear_sent == 1
|
||||||
llist_count(&net->subscr_conns) == 0
|
llist_count(&net->subscr_conns) == 0
|
||||||
|
@ -298,6 +300,7 @@ DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||||
cm_service_result_sent == 0
|
cm_service_result_sent == 0
|
||||||
- Total time passed: 5.001598 s
|
- Total time passed: 5.001598 s
|
||||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Timeout of T0
|
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Timeout of T0
|
||||||
|
DREF VLR subscr MSISDN:46071 usage increases to: 3
|
||||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: Connection timed out
|
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: Connection timed out
|
||||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_TIMEOUT)
|
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_TIMEOUT)
|
||||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
|
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
|
||||||
|
@ -320,9 +323,10 @@ DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing di
|
||||||
- BSSAP Clear --RAN_GERAN_A--> MS
|
- BSSAP Clear --RAN_GERAN_A--> MS
|
||||||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
DREF VLR subscr MSISDN:46071 usage decreases to: 2
|
||||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||||
|
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||||
- SUBSCR_CONN_TIMEOUT has passed, conn is gone.
|
- SUBSCR_CONN_TIMEOUT has passed, conn is gone.
|
||||||
bssap_clear_sent == 1
|
bssap_clear_sent == 1
|
||||||
llist_count(&net->subscr_conns) == 0
|
llist_count(&net->subscr_conns) == 0
|
||||||
|
|
Loading…
Reference in New Issue