Merged revisions 119071 via svnmerge from
authorTilghman Lesher <tilghman@meg.abyt.es>
Thu, 29 May 2008 20:25:33 +0000 (20:25 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Thu, 29 May 2008 20:25:33 +0000 (20:25 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r119071 | tilghman | 2008-05-29 15:24:11 -0500 (Thu, 29 May 2008) | 7 lines

Call waiting tone occurs too often, because it's getting serviced by both
subchannels.
(closes issue #11354)
 Reported by: cahen
 Patches:
       20080512__bug11354.diff.txt uploaded by Corydon76 (license 14)

........

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@119072 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_zap.c

index 6646ee2..5187685 100644 (file)
@@ -329,10 +329,10 @@ static inline int zt_wait_event(int fd)
 #define MASK_INUSE             (1 << 1)        /*!< Channel currently in use */
 
 #define CALLWAITING_SILENT_SAMPLES     ( (300 * 8) / READ_SIZE) /*!< 300 ms */
-#define CALLWAITING_REPEAT_SAMPLES     ( (10000 * 8) / READ_SIZE) /*!< 300 ms */
+#define CALLWAITING_REPEAT_SAMPLES     ( (10000 * 8) / READ_SIZE) /*!< 10,000 ms */
 #define CIDCW_EXPIRE_SAMPLES           ( (500 * 8) / READ_SIZE) /*!< 500 ms */
 #define MIN_MS_SINCE_FLASH                     ( (2000) )      /*!< 2000 ms */
-#define DEFAULT_RINGT                          ( (8000 * 8) / READ_SIZE)
+#define DEFAULT_RINGT                          ( (8000 * 8) / READ_SIZE) /*!< 8,000 ms */
 
 struct zt_pvt;
 
@@ -5414,8 +5414,10 @@ static struct ast_frame  *zt_read(struct ast_channel *ast)
                        return &p->subs[index].f;
                }
        }
-       if (p->callwaitingrepeat)
+       /* Ensure the CW timer decrements only on a single subchannel */
+       if (p->callwaitingrepeat && zt_get_index(ast, p, 1) == SUB_REAL) {
                p->callwaitingrepeat--;
+       }
        if (p->cidcwexpire)
                p->cidcwexpire--;
        /* Repeat callwaiting */