diff options
author | Holger Hans Peter Freyther <zecke@selfish.org> | 2013-04-07 20:17:30 +0200 |
---|---|---|
committer | Holger Hans Peter Freyther <zecke@selfish.org> | 2013-04-07 20:17:30 +0200 |
commit | e1f164dd2f1e67f34cf92e43c3e8888eb5646016 (patch) | |
tree | 46094f8cb775a57fb0bbd1b10e1b8af67fccbf42 /src/gsm/lapd_core.c | |
parent | b64b2b031344b354b7a59f1eb4c1f97d457613f3 (diff) | |
parent | b36ad2debed2906674b0dc92062437d38994901e (diff) |
Merge branch 'zecke/jolly-lapdm-fixes'
* Squashed fix and testcase into one.
Diffstat (limited to 'src/gsm/lapd_core.c')
-rw-r--r-- | src/gsm/lapd_core.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/gsm/lapd_core.c b/src/gsm/lapd_core.c index b33cf6eb..f351308d 100644 --- a/src/gsm/lapd_core.c +++ b/src/gsm/lapd_core.c @@ -820,7 +820,12 @@ static int lapd_rx_u(struct msgb *msg, struct lapd_msg_ctx *lctx) "frame established state\n"); /* If link is lost on the remote side, we start over * and send DL-ESTABLISH indication again. */ - if (dl->v_send != dl->v_recv) { + /* Additionally, continue in case of content resoltion + * (GSM network). This happens, if the mobile has not + * yet received UA or another mobile (collision) tries + * to establish connection. The mobile must receive + * UA again. */ + if (!dl->cont_res && dl->v_send != dl->v_recv) { LOGP(DLLAPD, LOGL_INFO, "Remote reestablish\n"); mdl_error(MDL_CAUSE_SABM_MF, lctx); break; @@ -831,7 +836,8 @@ static int lapd_rx_u(struct msgb *msg, struct lapd_msg_ctx *lctx) #ifdef TEST_CONTENT_RESOLUTION_NETWORK dl->cont_res->data[0] ^= 0x01; #endif - if (memcmp(dl->cont_res, msg->data, length)) { + if (memcmp(dl->cont_res->data, msg->data, + length)) { LOGP(DLLAPD, LOGL_INFO, "Another SABM " "with diffrent content - " "ignoring!\n"); |