[svn-commits] rmudgett: tag 1.4.11.4 r1941 - /tags/1.4.11.4/q921.c

SVN commits to the Digium repositories svn-commits at lists.digium.com
Mon Aug 30 17:18:23 CDT 2010


Author: rmudgett
Date: Mon Aug 30 17:18:20 2010
New Revision: 1941

URL: http://svnview.digium.com/svn/libpri?view=rev&rev=1941
Log:
Merged revisions 1845 via svnmerge from 
https://origsvn.digium.com/svn/libpri/branches/1.4

........
  r1845 | rmudgett | 2010-08-03 12:33:54 -0500 (Tue, 03 Aug 2010) | 10 lines
  
  Q921_TIMER_RECOVERY SDL issue in q921_rnr_rx()
  
  Added missing code specified by Q.921 (Figure B.8 Page 85) when receive
  RNR in "Timer Recovery" state.
  
  (closes issue #16791)
  Reported by: alecdavis
  Patches:
        rnr_timer_recovery.diff.txt uploaded by alecdavis (license 585)
........

Modified:
    tags/1.4.11.4/q921.c

Modified: tags/1.4.11.4/q921.c
URL: http://svnview.digium.com/svn/libpri/tags/1.4.11.4/q921.c?view=diff&rev=1941&r1=1940&r2=1941
==============================================================================
--- tags/1.4.11.4/q921.c (original)
+++ tags/1.4.11.4/q921.c Mon Aug 30 17:18:20 2010
@@ -1781,6 +1781,7 @@
 		}
 		break;
 	case Q921_TIMER_RECOVERY:
+		/* Q.921 Figure B.8 Q921 (Sheet 6 of 9) Page 85 */
 		ctrl->peer_rx_busy = 1;
 		if (is_command(ctrl, h)) {
 			if (h->s.p_f) {
@@ -1793,6 +1794,15 @@
 					q921_setstate(ctrl, Q921_AWAITING_ESTABLISHMENT);
 					break;
 				}
+			} else {
+				if (n_r_is_valid(ctrl, h->s.n_r)) {
+					update_v_a(ctrl, h->s.n_r);
+					break;
+				} else {
+					n_r_error_recovery(ctrl);
+					q921_setstate(ctrl, Q921_AWAITING_ESTABLISHMENT);
+					break;
+				}
 			}
 		} else {
 			if (h->s.p_f) {
@@ -1801,6 +1811,15 @@
 					restart_t200(ctrl);
 					q921_invoke_retransmission(ctrl, h->s.n_r);
 					q921_setstate(ctrl, Q921_MULTI_FRAME_ESTABLISHED);
+					break;
+				} else {
+					n_r_error_recovery(ctrl);
+					q921_setstate(ctrl, Q921_AWAITING_ESTABLISHMENT);
+					break;
+				}
+			} else {
+				if (n_r_is_valid(ctrl, h->s.n_r)) {
+					update_v_a(ctrl, h->s.n_r);
 					break;
 				} else {
 					n_r_error_recovery(ctrl);




More information about the svn-commits mailing list