From: Automerge script Date: Thu, 20 Sep 2012 19:27:45 +0000 (+0000) Subject: Merged revisions 373237,373245 via svnmerge from X-Git-Tag: 10.10.0-digiumphones-rc1~43 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=22c0ba728721e410c72c997c17c1e568a05dd4e2;p=thirdparty%2Fasterisk.git Merged revisions 373237,373245 via svnmerge from file:///srv/subversion/repos/asterisk/branches/10 ................ r373237 | mjordan | 2012-09-20 13:42:51 -0500 (Thu, 20 Sep 2012) | 18 lines When processing RFC 2833 DTMF, accomodate increasing timestamps in End events While endpoints should not be changing the source timestamp between DTMF event packets, the fact is there exists those endpoints that do exactly that. To work around this, we absorb timestamps within the expected re-transmit period. Note that this period only affects End of Event packets, so it should not prevent the detection of new DTMF digits that happen to arrive right on top of each other. (closes issue ASTERISK-20424) Reported by: Vladimir Mikhelson Tested by: mjordan, Vladimir Mikhelson Review: https://reviewboard.asterisk.org/r/2124 ........ Merged revisions 373236 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ................ r373245 | file | 2012-09-20 14:14:31 -0500 (Thu, 20 Sep 2012) | 15 lines Fix incorrect MeetME conference bridge reference count decrementing and sometimes premature destruction. When using the 'e' or 'E' option to MeetMe the configured conference bridges are loaded and examined to see if any are empty. If no conference bridges are empty the caller is prompted to enter the number of one. This operation left around a pointer to the last created conference bridge still containing participants. When the caller that was not able to find any empty conference bridge hung up this pointer was disposed of and the reference count of the conference bridge decremented. If there was only a single participant in the conference bridge it was ultimately destroyed prematurely. (closes issue AST-994) Reported by: John Bigelow ........ Merged revisions 373242 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ................ git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/10-digiumphones@373274 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/apps/app_meetme.c b/apps/app_meetme.c index 8e0bab089a..f734b3e0d8 100644 --- a/apps/app_meetme.c +++ b/apps/app_meetme.c @@ -4329,6 +4329,7 @@ static int conf_exec(struct ast_channel *chan, const char *data) } } AST_LIST_UNLOCK(&confs); + cnf = NULL; if (!found) { /* At this point, we have a confno_tmp (static conference) that is empty */ if ((empty_no_pin && ast_strlen_zero(stringp)) || (!empty_no_pin)) { diff --git a/res/res_rtp_asterisk.c b/res/res_rtp_asterisk.c index 123e652521..53216a21bb 100644 --- a/res/res_rtp_asterisk.c +++ b/res/res_rtp_asterisk.c @@ -1589,8 +1589,9 @@ static void process_dtmf_rfc2833(struct ast_rtp_instance *instance, unsigned cha new_duration = (new_duration & ~0xFFFF) | samples; if (event_end & 0x80) { - /* End event */ - if ((rtp->last_seqno != seqno) && (timestamp > rtp->last_end_timestamp)) { + /* End event. Absorb re-transmits, and account for some endpoints + * that erroneously increment the timestamp during re-transmissions */ + if ((seqno != rtp->last_seqno) && (timestamp > rtp->last_end_timestamp + 320)) { rtp->last_end_timestamp = timestamp; rtp->dtmf_duration = new_duration; rtp->resp = resp; @@ -1600,7 +1601,7 @@ static void process_dtmf_rfc2833(struct ast_rtp_instance *instance, unsigned cha rtp->dtmf_duration = rtp->dtmf_timeout = 0; AST_LIST_INSERT_TAIL(frames, f, frame_list); } else if (rtpdebug) { - ast_debug(1, "Dropping duplicate or out of order DTMF END frame (seqno: %d, ts %d, digit %c)\n", + ast_debug(1, "Dropping re-transmitted, duplicate, or out of order DTMF END frame (seqno: %d, ts %d, digit %c)\n", seqno, timestamp, resp); } } else {