diff options
Diffstat (limited to 'openbsc/src/libmsc/gsm_04_08.c')
-rw-r--r-- | openbsc/src/libmsc/gsm_04_08.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/openbsc/src/libmsc/gsm_04_08.c b/openbsc/src/libmsc/gsm_04_08.c index 7f38be28e..eea073614 100644 --- a/openbsc/src/libmsc/gsm_04_08.c +++ b/openbsc/src/libmsc/gsm_04_08.c @@ -829,6 +829,9 @@ static int _gsm48_rx_mm_serv_req_sec_cb( struct gsm_subscriber_connection *conn = data; int rc = 0; + /* auth failed or succeeded, the timer was stopped */ + conn->expire_timer_stopped = 1; + switch (event) { case GSM_SECURITY_AUTH_FAILED: /* Nothing to do */ @@ -930,6 +933,9 @@ static int gsm48_rx_mm_serv_req(struct gsm_subscriber_connection *conn, struct m memcpy(subscr->equipment.classmark2, classmark2, classmark2_len); db_sync_equipment(&subscr->equipment); + /* we will send a MM message soon */ + conn->expire_timer_stopped = 1; + return gsm48_secure_channel(conn, req->cipher_key_seq, _gsm48_rx_mm_serv_req_sec_cb, NULL); } @@ -1123,6 +1129,9 @@ static int gsm48_rx_rr_pag_resp(struct gsm_subscriber_connection *conn, struct m memcpy(subscr->equipment.classmark2, classmark2_lv+1, *classmark2_lv); db_sync_equipment(&subscr->equipment); + /* We received a paging */ + conn->expire_timer_stopped = 1; + rc = gsm48_handle_paging_resp(conn, msg, subscr); return rc; } |