aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Eversberg <jolly@eversberg.eu>2023-10-20 14:22:40 +0200
committerjolly <andreas@eversberg.eu>2023-10-23 09:07:28 +0000
commit676b361fa7c99ac7437f532af2dea73e48f53ccf (patch)
treeff0c4f967a28db5ce5778b5b8ef1252be5794eb9
parenta59e8d7c1d60953e991384070c3aead45b628fa0 (diff)
LAPDm: Correctly count expiry of T200 during estabishment/release
After T200 expires N200+1 times, the link establishment or relase fails. The counting must be performed prior check. Related: OS#5970 Change-Id: Icf44e26420fc91312e7c8972a2f3ed475e42fc48
-rw-r--r--src/isdn/lapd_core.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/isdn/lapd_core.c b/src/isdn/lapd_core.c
index 6475cb0f..5674c661 100644
--- a/src/isdn/lapd_core.c
+++ b/src/isdn/lapd_core.c
@@ -593,6 +593,8 @@ static void lapd_t200_cb(void *data)
switch (dl->state) {
case LAPD_STATE_SABM_SENT:
/* 5.4.1.3 */
+ /* increment re-transmission counter */
+ dl->retrans_ctr++;
if (dl->retrans_ctr >= dl->n200_est_rel + 1) {
/* flush tx and send buffers */
lapd_dl_flush_tx(dl);
@@ -611,13 +613,13 @@ static void lapd_t200_cb(void *data)
}
/* retransmit SABM command */
lapd_send_resend(dl);
- /* increment re-transmission counter */
- dl->retrans_ctr++;
/* restart T200 (PH-READY-TO-SEND) */
lapd_start_t200(dl);
break;
case LAPD_STATE_DISC_SENT:
/* 5.4.4.3 */
+ /* increment re-transmission counter */
+ dl->retrans_ctr++;
if (dl->retrans_ctr >= dl->n200_est_rel + 1) {
/* send MDL ERROR INIDCATION to L3 */
mdl_error(MDL_CAUSE_T200_EXPIRED, &dl->lctx);
@@ -635,8 +637,6 @@ static void lapd_t200_cb(void *data)
}
/* retransmit DISC command */
lapd_send_resend(dl);
- /* increment re-transmission counter */
- dl->retrans_ctr++;
/* restart T200 (PH-READY-TO-SEND) */
lapd_start_t200(dl);
break;