]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
4 RCPs were being sent in ECM mode, instead of the specified 3.
authorSteve Underwood <steveu@coppice.org>
Fri, 18 Nov 2011 16:43:00 +0000 (00:43 +0800)
committerSteve Underwood <steveu@coppice.org>
Fri, 18 Nov 2011 16:43:00 +0000 (00:43 +0800)
libs/spandsp/src/t30.c

index 82724920c1c829996b25708235de7f3c2e0f6777..eb3eca248af653053bc84783cbc53866b9521ef8 100644 (file)
@@ -781,11 +781,11 @@ static int send_next_ecm_frame(t30_state_t *s)
         }
         s->ecm_current_tx_frame = s->ecm_frames;
     }
-    if (s->ecm_current_tx_frame <= s->ecm_frames + 3)
+    if (s->ecm_current_tx_frame < s->ecm_frames + 3)
     {
-        /* We have sent all the FCD frames. Send some RCP frames. Three seems to be
-           a popular number, to minimise the risk of a bit error stopping the receiving
-           end from recognising the RCP. */
+        /* We have sent all the FCD frames. Send three RCP frames, as per
+           T.4/A.1 and T.4/A.2. The repeats are to minimise the risk of a bit
+           error stopping the receiving end from recognising the RCP. */
         s->ecm_current_tx_frame++;
         /* The RCP frame is an odd man out, as its a simple 1 byte control
            frame, but is specified to not have the final bit set. It doesn't
@@ -794,7 +794,8 @@ static int send_next_ecm_frame(t30_state_t *s)
         frame[1] = CONTROL_FIELD_NON_FINAL_FRAME;
         frame[2] = T4_RCP;
         send_frame(s, frame, 3);
-        /* In case we are just after a CTC/CTR exchange, which kicked us back to long training */
+        /* In case we are just after a CTC/CTR exchange, which kicked us back
+           to long training */
         s->short_train = TRUE;
         return 0;
     }