2014-09-05 Asterisk Development Team * Certified Asterisk 1.8.28-cert1 Released. 2014-09-05 17:37 +0000 [r422662] Kinsey Moore * funcs/func_presence_state.c: Add missing support level to func_presence_state 2014-09-04 14:41 +0000 [r422582] Kinsey Moore * channels/chan_vpb.cc: Set chan_vpb to be disabled by default 2014-08-15 19:39 +0000 [r421208] Kinsey Moore * apps/app_voicemail.c, apps/app_meetme.c, channels/sip/reqresp_parser.c, main/test.c: Fix build in dev/TEST_FRAMEWORK mode 2014-08-14 17:29 +0000 [r421032-421033] Scott Griepentrog * /, main/config.c: config: inform config hook of change when writing file When updated configuration is written back to the conf file - for example when a user changes their voicemail pin, make sure that any config hook that wants to know of changes is informed. Review: https://reviewboard.asterisk.org/r/3708/ * apps/app_voicemail.c: app_voicemail: use a consistent generator string When updating voicemail.conf when a user changes their pin, change the generator string to be the same as the module name when reading so that the same config_hook will be called. Review: https://reviewboard.asterisk.org/r/3837/ 2014-08-08 17:29 +0000 [r420560] Richard Mudgett * /, channels/chan_sip.c: chan_sip: Replace sip_tls_read() and resolve the large SDP poll issue. Replace sip_tls_read() and sip_tcp_read() with a single function and resolve the poll/wait issue with large SDP payloads. ASTERISK-18345 #close Reported by: Stephane Chazelas Patches: tcptls_pollv4.diff (license #5835) patch uploaded by Elazar Broad Review: https://reviewboard.asterisk.org/r/3882/ ........ Merged revisions 420434 from http://svn.asterisk.org/svn/asterisk/branches/1.8 2014-07-25 23:47 +0000 [r419678] Richard Mudgett * /, main/features.c, main/app.c, apps/app_stack.c, include/asterisk/app.h: features.c: Allow appliationmap to use Gosub. Using DYNAMIC_FEATURES with a Gosub application as the mapped application does not work. It does not work because Gosub just pushes the current dialplan context, exten, and priority onto a stack and sets the specified Gosub location. Gosub does not have a dialplan execution loop to run dialplan like Macro. * Made the DYNAMIC_FEATURES application mapping feature call ast_app_exec_macro() and ast_app_exec_sub() for the Macro and Gosub applications respectively. * Backported ast_app_exec_macro() and ast_app_exec_sub() from v11 to execute dialplan routines from the DYNAMIC_FEATURES application mapping feature. NOTE: This issue does not affect v12+ because it already does what this patch implements. AST-1391 #close Reported by: Guenther Kelleter Review: https://reviewboard.asterisk.org/r/3844/ ........ Merged revisions 419630 from http://svn.asterisk.org/svn/asterisk/branches/1.8 2014-06-13 05:25 +0000 [r415975-416095] Richard Mudgett * include/asterisk/tcptls.h, main/tcptls.c, main/manager.c, /, channels/chan_sip.c, main/http.c: AST-2014-007: Fix of fix to allow AMI and SIP TCP to send messages. ASTERISK-23673 #close Reported by: Richard Mudgett Review: https://reviewboard.asterisk.org/r/3617/ ........ Merged revisions 416066 from http://svn.asterisk.org/svn/asterisk/branches/1.8 * configs/http.conf.sample, include/asterisk/utils.h, main/tcptls.c, main/manager.c, /, channels/chan_sip.c, main/http.c, UPGRADE.txt, main/utils.c, include/asterisk/tcptls.h: AST-2014-007: Fix DOS by consuming the number of allowed HTTP connections. Simply establishing a TCP connection and never sending anything to the configured HTTP port in http.conf will tie up a HTTP connection. Since there is a maximum number of open HTTP sessions allowed at a time you can block legitimate connections. A similar problem exists if a HTTP request is started but never finished. * Added http.conf session_inactivity timer option to close HTTP connections that aren't doing anything. Defaults to 30000 ms. * Removed the undocumented manager.conf block-sockets option. It interferes with TCP/TLS inactivity timeouts. * AMI and SIP TLS connections now have better authentication timeout protection. Though I didn't remove the bizzare TLS timeout polling code from chan_sip. * chan_sip can now handle SSL certificate renegotiations in the middle of a session. It couldn't do that before because the socket was non-blocking and the SSL calls were not restarted as documented by the OpenSSL documentation. * Fixed an off nominal leak of the ssl struct in handle_tcptls_connection() if the FILE stream failed to open and the SSL certificate negotiations failed. The patch creates a custom FILE stream handler to give the created FILE streams inactivity timeout and timeout after a specific moment in time capability. This approach eliminates the need for code using the FILE stream to be redesigned to deal with the timeouts. This patch indirectly fixes most of ASTERISK-18345 by fixing the usage of the SSL_read/SSL_write operations. ASTERISK-23673 #close Reported by: Richard Mudgett ........ Merged revisions 415841 from http://svn.asterisk.org/svn/asterisk/branches/1.8 2014-06-05 19:17 +0000 [r415246-415290] Matthew Jordan * apps/app_ices.c, channels/chan_gtalk.c, cdr/cdr_csv.c, channels/chan_jingle.c, channels/chan_phone.c, funcs/func_pitchshift.c, include/asterisk/custom_control_frame.h (added), apps/app_minivm.c, main/features.c, apps/app_confbridge.c, apps/app_sms.c, configs/sip.conf.sample, include/asterisk/pbx.h, res/res_config_ldap.c, apps/app_voicemail.c, cel/cel_radius.c, apps/app_nbscat.c, apps/app_waitforsilence.c, include/asterisk/config.h, apps/app_dahdiras.c, pbx/pbx_lua.c, res/res_ael_share.c, apps/app_chanisavail.c, cdr/cdr_radius.c, res/res_jabber.c, main/presencestate.c (added), cdr/cdr_tds.c, apps/app_osplookup.c, channels/chan_skinny.c, funcs/func_frame_trace.c, cdr/cdr_sqlite.c, apps/app_amd.c, pbx/pbx_realtime.c, apps/app_url.c, apps/app_externalivr.c, tests/test_config.c, cdr/cdr_odbc.c, include/asterisk/frame.h, res/res_timing_kqueue.c, main/custom_control_frame.c (added), channels/sip/include/sip.h, main/asterisk.c, channels/chan_mgcp.c, tests/test_custom_control.c (added), channels/chan_unistim.c, apps/app_dahdibarge.c, main/pbx.c, res/res_phoneprov.c, include/asterisk/channel.h, cdr/cdr_pgsql.c, include/asterisk/manager.h, apps/app_queue.c, res/res_config_sqlite.c, main/config.c, include/asterisk/callerid.h, include/asterisk/file.h, include/asterisk/app.h, apps/app_waitforring.c, include/asterisk/event_defs.h, formats/format_vox.c, configure, configs/jabber.conf.sample, res/res_timing_pthread.c, include/asterisk/message.h (added), pbx/pbx_ael.c, channels/chan_h323.c, cel/cel_sqlite3_custom.c, main/event.c, formats/format_jpeg.c, apps/app_adsiprog.c, apps/app_jack.c, res/res_ais.c, cdr/cdr_sqlite3_custom.c, res/res_snmp.c, channels/chan_sip.c, apps/app_dictate.c, apps/app_festival.c, cel/cel_tds.c, apps/app_alarmreceiver.c, configs/manager.conf.sample, apps/app_image.c, channels/chan_console.c, include/asterisk/_private.h, apps/app_getcpeid.c, apps/app_talkdetect.c, channels/chan_iax2.c, channels/chan_oss.c, main/channel.c, funcs/func_presence_state.c (added), main/manager.c, apps/app_setcallerid.c, channels/chan_misdn.c, tests/test_voicemail_api.c (added), apps/app_mp3.c, include/asterisk/jabber.h, main/file.c, main/callerid.c, channels/chan_alsa.c, main/app.c, pbx/pbx_dundi.c, channels/chan_nbs.c, apps/app_zapateller.c, main/message.c (added), apps/app_mixmonitor.c, res/res_fax_spandsp.c, cel/cel_pgsql.c, res/res_config_pgsql.c, apps/app_readfile.c, /, apps/app_test.c, include/asterisk/presencestate.h (added), apps/app_morsecode.c: Merge changes for Digium phone support, and default module building. All of these changes were merged from certified/branches/1.8.15/ * / (added): Create branch for Certified Asterisk 1.8.28 2014-05-29 Asterisk Development Team * Asterisk 1.8.28.0 Released. 2014-05-22 Asterisk Development Team * Asterisk 1.8.28.0-rc1 Released. 2014-05-22 15:47 +0000 [r414401] Richard Mudgett * apps/app_meetme.c: app_meetme: Don't interrupt MOH for waitmarked users. Occasionally, when the last marked user leaves the conference, waitmarked users don't get MOH if MOH is supposed to be played while a waitmarked user is waiting for another marked user. * Made not interrupt MOH when the user is a waitmarked user. The waitmarked user doesn't need to hear any leave announcements from the conference as the user would have already heard different leave announcements if they were enabled. Apparently DAHDI occasionally sends unending non-silent streams to these users or a normal user still in the conference has continuous high background noise. These non-silent streams cause MOH to be suspended while the never ending "announcement" is played. Issue caused by ASTERISK-13680. AST-1349 #close Reported by: Tyler Stewart Review: https://reviewboard.asterisk.org/r/3543/ 2014-05-22 13:58 +0000 [r414345] Matthew Jordan * UPGRADE.txt: UPGRADE: Add note for REF_DEBUG flag 2014-05-21 22:01 +0000 [r414269] Richard Mudgett * channels/chan_local.c: chan_local: Only block media frames when a generator is on both ends of a local channel. The fix for ASTERISK-12292 was a bit too aggressive. You could have generators pointed at each other on local channels but need to get other kinds of frames such as DTMF or CONNECTED_LINE frames accross. 2014-05-21 18:58 +0000 [r414214] Scott Griepentrog * funcs/func_strings.c: pbx.c: prevent potential crash from recursive replace() Recurisve usage of replace() resulted in corruption of the temporary string storage and potential crash. By changing the string to be allocated separtely per instance, this is eliminated. ASTERISK-23650 #comment Reported by: Roel van Meer ASTERISK-23650 #close Review: https://reviewboard.asterisk.org/r/3539/ 2014-05-19 13:31 +0000 [r414152] Alexandr Anikin * addons/chan_ooh323.c: chan_ooh323: fix h323_log full path name * fix to use astlogdir option for h323_log file instead of hardcoded ASTERISK-23754 #close Reported by: Igor Goncharovsky Patches: ooh323_logger_patch.diff 2014-05-16 20:00 +0000 [r413991-414067] Richard Mudgett * channels/chan_dahdi.c: chan_dahdi: Fix analog dialtone detection. * Check if waitingfordt (waitfordialtone) is enabled in dahdi_read() to allow the DSP to operate early enough to detect dialtone. * Made use the correct variable in my_check_waitingfordt(). ASTERISK-23709 #close Reported by: Steve Davies Patches: dialtone_detect_fix (license #5012) patch uploaded by Steve Davies Review: https://reviewboard.asterisk.org/r/3534/ * apps/app_meetme.c: app_meetme: Fix overwrite of DAHDI conference data structure. Starting a conference recording using the admin menu overwrites the DAHDI conference data structure used to modify the admin user's conference mute mode. * Made no longer pass the user's DAHDI conference data structure into the menu functions. The menu now uses its own DAHDI conference data structure to start the recording channel. * Moved the unlock conf->playlock to before playing the conf-full message. No sense keeping the lock while that prompt is playing. The user is never going to get into the conference at that point. 2014-05-15 15:32 +0000 [r413949] Walter Doekes * apps/app_dial.c, channels/chan_local.c, UPGRADE.txt: chan_local+app_dial: Propagagate call answered elsewhere over local channels. AST_FLAG_ANSWERED_ELSEWHERE was not propagated back from local channels. It is now. That means that when a call is picked up from a callgroup of local channels, the other channels will now properly see it as "picked up". This occurs when you use a construct like Dial(Local/a@context&Local/b@context) where a@context and b@context dial two chan_sip devices respectively. If one device picks up, the other will not see "1 missed call" anymore. In this respect, it now behaves the same as when doing Dial(SIP/a&SIP/b). Review: https://reviewboard.asterisk.org/r/3540/ 2014-05-14 15:27 +0000 [r413894] Walter Doekes * res/res_musiconhold.c: res_musiconhold: Minor cleanup. Fix a few free()'s that should be ast_free()'s. Reverted an old workaround that isn't necessary. Reorder a tiny bit of code. Remove a bit of commented-out code. Review: https://reviewboard.asterisk.org/r/3536/ 2014-05-13 14:32 +0000 [r413787-413832] Walter Doekes * channels/chan_sip.c: chan_sip+CEL: Add missing ANSWER and PICKUP events to INVITE/w/replaces pickup. When doing a "BLF-style call pickup" -- an INVITE with Replaces: header -- the CEL log would lack the ANSWER and PICKUP events. This patch adds the two missing events to the handle_invite_replaces() function. ASTERISK-22977 #close Review: https://reviewboard.asterisk.org/r/3073/ * main/rtp_engine.c: rtp: Fix case typo in H263+ mime. http://tools.ietf.org/html/rfc3555#section-4.2.6 says the canonical mime subtype is "H263-1998", not "h263-1998". Original code was added in r183101 on 2009-03-19 02:26:50 +0100. This fixes issues with Polycom phones. ASTERISK-23665 #close ASTERISK-23665 #comment Patch r3529.patch uploaded by Guillaume Maudoux, backported by me. Review: https://reviewboard.asterisk.org/r/3529/ 2014-05-12 23:08 +0000 [r413714] Richard Mudgett * configure, include/asterisk/autoconfig.h.in, configure.ac, channels/sig_pri.c: chan_dahdi/sig_pri: Prevent unnecessary PROGRESS events when overlap dialing is enabled. When overlap dialing is enabled, the lack of inband audio available information in the SETUP_ACKNOWLEDGE events causes an interoperability problem with SIP. sig_pri doesn't know if there is dialtone present when a SETUP_ACKNOWLEDGE is received so it assumes it is there and posts an AST_CONTROL_PROGRESS frame. The SIP channel driver then sends out a 183 Session Progress and blocks the desired 180 Ringing message when the ALERTING message comes in. * Made the configure script detect if the installed version of libpri supports the SETUP_ACKNOWLEDGE enhancements. * Using the new API, made generate an AST_CONTROL_PROGRESS frame on an incoming SETUP_ACKNOWLEDGE message when the message indicates inband audio is present instead of assuming that dialtone is present. * Using the new API, made SETUP_ACKNOWLEDGE send out an inband audio available indication only if dialtone is expected. The change also makes the fallback behaviour of sending the PROGRESS message better by sending it only if dialtone is expected. * Changed receiving a PROCEEDING message to not generate an AST_CONTROL_PROGRESS frame if the progress indication ie indicates non-end-to-end-ISDN. This helps interoperability with SIP. * Changed sending a PROCEEDING message in response to an AST_CONTROL_PROCEEDING frame to not indicate inband audio available. It was silly to do so anyway because the channel driver doesn't know if inband audio is even available. This helps interoperability with SIP. This patch and a corresponding change in libpri work together to allow Asterisk to control the inband audio available progress indication ie on the SETUP_ACKNOWLEDGE message when dialtone is present. AST-1338 #close Reported by: Tyler Stewart Review: https://reviewboard.asterisk.org/r/3521/ 2014-05-09 23:02 +0000 [r413586-413592] Kinsey Moore * funcs/func_env.c: Fix 32bit build for func_env * channels/chan_sip.c: Fix 32bit build for chan_sip * channels/chan_dahdi.c, channels/sig_analog.c, include/asterisk/astobj.h, main/event.c, funcs/func_iconv.c, channels/sip/config_parser.c, apps/app_stack.c, res/res_odbc.c, apps/app_adsiprog.c, res/res_calendar.c, main/udptl.c, main/stun.c, main/frame.c, channels/chan_sip.c, apps/app_festival.c, funcs/func_env.c, main/taskprocessor.c, channels/chan_iax2.c, apps/app_getcpeid.c, res/res_monitor.c, res/ael/pval.c, main/channel.c, main/manager.c, formats/format_pcm.c, funcs/func_srv.c, main/file.c, main/callerid.c, main/app.c, channels/chan_alsa.c, main/adsi.c, pbx/pbx_dundi.c, main/stdtime/localtime.c, res/res_fax_spandsp.c, main/sched.c, res/res_rtp_asterisk.c, cel/cel_pgsql.c, cdr/cdr_adaptive_odbc.c, res/res_musiconhold.c, channels/chan_gtalk.c, channels/sig_pri.c, res/res_srtp.c, main/io.c, channels/chan_jingle.c, channels/chan_phone.c, funcs/func_enum.c, res/res_config_odbc.c, apps/app_minivm.c, res/res_agi.c, main/features.c, apps/app_dumpchan.c, main/abstract_jb.c, main/logger.c, apps/app_sms.c, main/audiohook.c, pbx/pbx_config.c, main/bridging.c, main/dsp.c, apps/app_voicemail.c, apps/app_dial.c, res/res_calendar_exchange.c, main/security_events.c, res/res_fax.c, res/res_timing_dahdi.c, funcs/func_sysinfo.c, main/utils.c, main/devicestate.c, res/res_jabber.c, res/res_pktccops.c, main/cli.c, main/data.c, cel/cel_odbc.c, channels/chan_skinny.c, main/asterisk.c, channels/sip/include/sip.h, channels/chan_mgcp.c, main/xmldoc.c, channels/chan_unistim.c, main/pbx.c, res/res_calendar_icalendar.c, channels/chan_local.c, main/rtp_engine.c, main/ccss.c, main/translate.c, res/res_crypto.c, res/res_calendar_caldav.c, main/aoc.c, pbx/dundi-parser.c, main/cel.c, apps/app_queue.c, main/enum.c, channels/iax2-parser.c, main/config.c, res/res_calendar_ews.c, main/netsock.c, main/loader.c: Allow Asterisk to compile under GCC 4.10 This resolves a large number of compiler warnings from GCC 4.10 which cause the build to fail under dev mode. The vast majority are signed/unsigned mismatches in printf-style format strings. 2014-05-08 00:33 +0000 [r413485] Joshua Colp * apps/app_queue.c, main/manager.c: app_queue: Extend documentation for various Manager actions and events. 2014-05-07 17:46 +0000 [r413396] Mark Michelson * res/res_config_odbc.c: Fix encoding of custom prepare extra data. Patches: res_config_odbc-take2.patch by John Hardin (License #6512) 2014-05-06 16:57 +0000 [r413304] Mark Michelson * res/res_config_odbc.c: Ensure that all parts of SQL UPDATEs and DELETEs are encoded. Patches: res_config_odbc.patch by John Hardin (License #6512) 2014-05-02 20:21 +0000 [r413224-413241] Mark Michelson * res/res_config_odbc.c: Prevent crashes in res_config_odbc due to uninitialized string fields. Patches: odbc-crash.patch by John Hardin (License #6512) * res/res_config_pgsql.c: Return the number of rows affected by a SQL insert, rather than an object ID. The realtime API specifies that the store callback is supposed to return the number of rows affected. res_config_pgsql was instead returning an Oid cast as an int, which during any nominal execution would be cast to 0. Returning 0 when more than 0 rows were inserted causes problems to the function's callers. To give an idea of how strange code can be, this is the necessary code change to fix a device state issue reported against chan_pjsip in Asterisk 12+. The issue was that the registrar would attempt to insert contacts into the database. Because of the 0 return from res_config_pgsql, the registrar would think that the contact was not successfully inserted, even though it actually was. As such, even though the contact was query-able and it was possible to call the endpoint, Asterisk would "think" the endpoint was unregistered, meaning it would report the device state as UNAVAILABLE instead of NOT_INUSE. The necessary fix applies to all versions of Asterisk, so even though the bug reported only applies to Asterisk 12+, the code correction is being inserted into 1.8+. Closes issue ASTERISK-23707 Reported by Mark Michelson 2014-04-23 17:47 +0000 [r412922] Richard Mudgett * main/http.c: http: Fix spurious ERROR message in responses with no content. Backport -r411687 and fix the fix because content_length is the length of out plus the length of the file controlled by fd. When a response has an out content length of 0, fwrite would be called to write a buffer with no data in it. This resulted in the following classic error message: [Apr 3 11:49:17] ERROR[26421] http.c: fwrite() failed: Success This patch makes it so that we only attempt to write the content of out if the out string is non-zero. 2014-04-21 17:51 +0000 [r412764-412821] Jonathan Rose * CHANGES: chan_sip: trust_id_outbound CHANGES message improvement (closes issue AST-1301) (closes issue ASTERISK-19465) Reported by: Krzysztof Chmielewski * CHANGES: Typo in CHANGES 2014-04-21 15:50 +0000 [r412745] Kinsey Moore * main/manager.c, main/http.c: HTTP: Add TCP_NODELAY to accepted connections This adds the TCP_NODELAY option to accepted connections on the HTTP server built into Asterisk. This option disables the Nagle algorithm which controls queueing of outbound data and in some cases can cause delays on receipt of response by the client due to how the Nagle algorithm interacts with TCP delayed ACK. This option is already set on all non-HTTP AMI connections and this change would cover standard HTTP requests, manager HTTP connections, and ARI HTTP requests and websockets in Asterisk 12+ along with any future use of the HTTP server. Review: https://reviewboard.asterisk.org/r/3466/ 2014-04-21 15:25 +0000 [r412744] Jonathan Rose * channels/chan_sip.c, configs/sip.conf.sample, CHANGES, channels/sip/include/sip.h: chan_sip: Add sendrpid trust options In r411189, some behavior was changed which made sendrpid behavior act in a more trusting manner by sending full user data for peers set with private caller presence in P-Asserted-Identity headers. Since this changed long time expected behaviors, we decided to pull that patch when that was pointed out by the community. Instead, this patch provides a trust_id_outbound setting which will expose the data per RFC-3325 if set to 'yes' and simply not send the PAI/RPID headers at all if set to 'no'. By default trust_id_outbound will be set to 'legacy' which will preserve the behavior prior to these patches. Extra special thanks to Walter Doekes for providing advice and feedback. (closes issue AST-1301) (closes issue ASTERISK-19465) Reported by: Krzysztof Chmielewski Review: https://reviewboard.asterisk.org/r/3447/ 2014-04-19 01:01 +0000 [r412655] Matthew Jordan * apps/app_sms.c: app_sms: Fix uninitialized values; hangup channel when REL is sent successfully This patch fixes two issues in app_sms: (1) Firstly, the 'flags' field on the stack in sms_exec() is uninitialised, causing it to use the wrong protocol in some cases. This patch correctly initializes the flags fields. (2) Secondly, when disconnect supervision is not working or inbanddisconnect=yes is set in chan_dahdi.conf, app_sms was failing to terminate the call after it sent the REL(ease) message and the peer stopped talking to it. This patch fixes the code to handle the 'bad stop bit' message more gracefully in that case, and hang up the call. Review: https://reviewboard.asterisk.org/r/1392/ ASTERISK-18331 #close Reported by: David Woodhouse patches: asterisk-fix-sms.patch uploaded by David Woodhouse (License 5754) 2014-04-18 17:12 +0000 [r412585] Rusty Newton * sounds/sounds.xml, sounds/Makefile: sounds: Fix Sounds Makefile and XML that didn't support new sound prompt sets In sounds/Makefile 1 Adds and moves some lines necessary for the en_GB core set. I'm just following how the other sets are defined here. 2 removes the ES extra sounds related lines as we don't have ES extra sound sets. In sounds/sounds.xml 3 Adds definitions to all the sound sets as we have these defined in 11,12,Trunk, but not in 1.8 4 Adds member definitons for EN_AU, EN_GB, IT for core sound sets, and EN_GB in extra sound sets ASTERISK-23550 Reported by: Rusty Newton Review: https://reviewboard.asterisk.org/r/3464/ 2014-04-17 20:23 +0000 [r412480] Matthew Jordan * channels/chan_oss.c: channels/chan_oss: Fix compilation problem on SmartOS/Illumos/SunOS THis patch fixes an issue in chan_oss when building on certain platforms. It ensures that soundcard.h is found. Review: https://reviewboard.asterisk.org/r/3426 Note that this patch is a part of the patch on ASTERISK-23576; the Makefile portion only applies to Asterisk 11+. (issue ASTERISK-23576) Reported by: Sebastian Wiedenroth patches: fix-sunos.diff uploaded by Sebastian Wiedenroth (License 6597) 2014-04-15 15:21 +0000 [r412328] Jonathan Rose * configs/sip.conf.sample, channels/chan_sip.c: Reverting r411189 so that it can be put up for public review --- r411189 | jrose | 2014-03-26 10:50:48 -0500 (Wed, 26 Mar 2014) | 12 lines chan_sip: Send real CallerID information with P-Assserted-Identity (RFC-3325) Prior to this patch, the P-Asserted-Identity header would include anonymous caller id information which seems to go against the point of the P-Asserted-Identity header. Now the real caller ID information will be included in this header. Also, no privacy header would be included. This patch adds 'Privacy: id' to outgoing SIP messages that include the P-Asserted-Identity header. (closes issue AST-1301) --- 2014-04-11 21:37 +0000 [r412225] Richard Mudgett * apps/app_stack.c: app_stack: Add missing unlock in off-nominal path of STACK_PEEK function. ASTERISK-23620 #close Reported by: Bradley Watkins Patches: ASTERISK-23620_unlock_oldlist.patch (license #5021) patch uploaded by Bradley Watkins 2014-04-11 01:33 +0000 [r412114] Matthew Jordan * main/utils.c, main/astobj2.c, contrib/scripts/refcounter.py (added), main/asterisk.c, build_tools/cflags.xml, include/asterisk/utils.h, channels/chan_sip.c, include/asterisk/astobj2.h, main/logger.c: main/astobj2: Make REF_DEBUG a menuselect item; improve REF_DEBUG output This patch does the following: (1) It makes REF_DEBUG a meneselect item. Enabling REF_DEBUG now enables REF_DEBUG globally throughout Asterisk. (2) The ref debug log file is now created in the AST_LOG_DIR directory. Every run will now blow away the previous run (as large ref files sometimes caused issues). We now also no longer open/close the file on each write, instead relying on fflush to make sure data gets written to the file (in case the ao2 call being performed is about to cause a crash) (3) It goes with a comma delineated format for the ref debug file. This makes parsing much easier. This also now includes the thread ID of the thread that caused ref change. (4) A new python script instead for refcounting has been added in the contrib/scripts folder. Review: https://reviewboard.asterisk.org/r/3377/ 2014-04-08 21:15 +0000 [r411960-411964] Richard Mudgett * main/asterisk.c: Internal timing: Add notice that the -I and internal_timing option are no longer needed. Add notice messages during execution that the -I command line option and the astersik.conf internal_timing option are no longer needed. The internal timing functionality is now always enabled if there is a timing module loaded. NOTE: Since the command line options and the asterisk.conf config file are processed before the logging system is initialized, the messages are output to stderr. Change requested as a result of asterisk-dev list comments about the commit for ASTERISK-22846 that removed the -I and internal_timing options. Review: https://reviewboard.asterisk.org/r/3423/ * main/config.c: config: Fix CB_ADD_LEN() to work as originally intended. Fix a long standing bug in CB_ADD_LEN() behaving like CB_ADD(). ASTERISK-23546 #close Reported by: Walter Doekes 2014-04-07 14:45 +0000 [r411807] Walter Doekes * configs/res_odbc.conf.sample: configs: Clean up long line and typo in res_odbc.conf.sample. 2014-04-04 18:32 +0000 [r411715] Richard Mudgett * include/asterisk/options.h, main/asterisk.c, main/channel.c, channels/chan_sip.c, configs/asterisk.conf.sample, UPGRADE.txt: internal_timing: Remove the option and always make it enabled if a timing module is loaded. The masquerade supertest frequently fails because either the local channel chain doesn't completely optimize out or the DTMF handshake doesn't completely get accross. Local channel optimization requires frames flowing to trigger when optimization can happen. When optimization happens the media frame that triggered the optimization is dropped. Sending DTMF requires frames to flow in the other direction for timing purposes while sending nothing. If internal timing is not enabled when MOH is playing, Asterisk switches to received timing when an audio frame is received. With optimization dropping media frames and MOH not sending frames unless it receives frames, occasionaly there are no more frames being passed and the test fails. * The asterisk command line -I option and the asterisk.conf internal_timing option are removed. Asterisk now always uses internal timing when needed if any timing module is loaded. The issue ASTERISK-14861 did this quite awhile ago in v1.4 but effectively is broken if other internal timing modules besides DAHDI are used. The ast_read_generator_actions() now only does received timing if it has no choice for frame generators like MOH, silence, and playback streaming. * Cleaned up some code dealing with frame generators in ast_deactivate_generator(), generator_write_format_change(), ast_activate_generator(), and ast_channel_stop_silence_generator(). ASTERISK-22846 #close Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/3414/ 2014-04-01 16:48 +0000 [r411584] Joshua Colp * apps/app_queue.c: app_queue: Fix a bug where realtime members would be deleted during reload causing waiting callers to get ejected. This patch causes realtime queue members to remain in queues during the reload process. Previously these members would be removed causing any waiting callers to be ejected from the queue with a reason of "EXITEMPTY". ASTERISK-23547 #close ASTERISK-23547 #comment Patch app_queue_fix_realtime_reload_1.8_trunk.patch submitted by Italo Rossi (license 6409) Review: https://reviewboard.asterisk.org/r/3404/ 2013-04-23 Asterisk Development Team * Asterisk 1.8.27.0 Released. 2013-04-21 Asterisk Development Team * Asterisk 1.8.27.0-rc2 Released. * chan_sip: Add sendrpid trust options In r411189, some behavior was changed which made sendrpid behavior act in a more trusting manner by sending full user data for peers set with private caller presence in P-Asserted-Identity headers. Since this changed long time expected behaviors, we decided to pull that patch when that was pointed out by the community. Instead, this patch provides a trust_id_outbound setting which will expose the data per RFC-3325 if set to 'yes' and simply not send the PAI/RPID headers at all if set to 'no'. By default trust_id_outbound will be set to 'legacy' which will preserve the behavior prior to these patches. Extra special thanks to Walter Doekes for providing advice and feedback. 2014-03-28 Asterisk Development Team * Asterisk 1.8.27.0-rc1 Released. 2014-03-28 16:16 +0000 [r411462] Scott Griepentrog * main/http.c, main/tcptls.c, main/manager.c: http: response body often missing after specific request This patch works around a problem with the HTTP body being dropped from the response to a specific client and under specific circumstances: a) Client request comes from node.js user agent "Shred" via use of swagger-client library. b) Asterisk and Client are *not* on the same host or TCP/IP stack In testing this problem, it has been determined that the write of the HTTP body is lost, even if the data is written using low level write function. The only solution found is to instruct the TCP stack with the shutdown function to flush the last write and finish the transmission. See review for more details. ASTERISK-23548 #close (closes issue ASTERISK-23548) Reported by: Sam Galarneau Review: https://reviewboard.asterisk.org/r/3402/ 2014-03-28 15:42 +0000 [r411372-411457] Matthew Jordan * UPGRADE.txt: UPGRADE: Note IAX2 compatibility issue between 1.4 and 1.8+ systems. * res/res_config_odbc.c, res/res_odbc.exports.in, UPGRADE.txt, res/res_odbc.c, configs/res_odbc.conf.sample, include/asterisk/res_odbc.h: res_config_odbc/res_odbc: Fix handling of non-text columns updates with empty values. This patch fixes setting nullable integer columns to NULL instead of an empty string, which fails for PostgreSQL, for example. The current code is supposed to do so, but the check is broken. The patch also allows the first column in the list to be a nullable integer. This patch also adds a compatibility setting in res_odbc.conf, allow_empty_string_in_nontext. It is enabled by default. It should be disabled for database backends (such as PostgreSQL) that require NULL instead of an empty string for Integer columns. Review: https://reviewboard.asterisk.org/r/3375 (issue ASTERISK-23459) Reported by: zvision patches: res_config_odbc.diff uploaded by zvision (License 5755) * channels/sip/include/sip.h: chan_sip: Add MESSAGE request to allowed methods The allowed methods advertised by chan_sip did not previously note the MESSAGE request. Even in Asterisk 1.8, we do accept in-dialog MESSAGE requests; we should advertise that we support MESSAGE requests. ASTERISK-23504 #close ASTERISK-23504 #comment Reported by: Martin Kontsek ASTERISK-23504 #comment Patch sip.h_patch.diff uploaded by Martin Kontsek (license 6587) Review: https://reviewboard.asterisk.org/r/3396/ 2014-03-27 19:06 +0000 [r411313] Corey Farrell * funcs/func_groupcount.c, funcs/func_callcompletion.c, funcs/func_pitchshift.c, funcs/func_odbc.c, funcs/func_volume.c, funcs/func_frame_trace.c, funcs/func_channel.c, funcs/func_blacklist.c, funcs/func_callerid.c, apps/app_stack.c, res/res_calendar.c, apps/app_jack.c, funcs/func_speex.c, funcs/func_dialplan.c, channels/chan_sip.c, funcs/func_math.c, apps/app_readexten.c, funcs/func_strings.c, res/res_jabber.c, channels/chan_iax2.c, res/res_mutestream.c, funcs/func_global.c, apps/app_speech_utils.c: Fix dialplan function NULL channel safety issues (closes issue ASTERISK-23391) Reported by: Corey Farrell Review: https://reviewboard.asterisk.org/r/3386/ 2014-03-26 22:43 +0000 [r411243] Joshua Colp * main/say.c: say: Fix a bug where SayNumber in Polish tries to play incorrect sound. This change fixes a bug where calling SayNumber with a number divisible by 100 using the Polish language would cause the code to attempt to play a sound file with an empty name. (closes issue ASTERISK-23509) Reported by: zvision Review: https://reviewboard.asterisk.org/r/3378/ 2014-03-26 15:50 +0000 [r411189] Jonathan Rose * channels/chan_sip.c, configs/sip.conf.sample: chan_sip: Send real CallerID information with P-Assserted-Identity (RFC-3325) Prior too this patch, the P-Asserted-Identity header would include anonymous caller id information which seems to go against the point of the P-Asserted-Identity header. Now the real caller ID information will be included in this header. Also, no privacy header would be included. This patch adds 'Privacy: id' to outgoing SIP messages that include the P-Asserted-Identity header. (closes issue AST-1301) 2014-03-25 15:50 +0000 [r411088] Kinsey Moore * channels/chan_sip.c: chan_sip: Fix incorrect use of timers If update_provisional_keepalive() is called while send_provisional_keepalive_full() is waiting on the PVT lock, then pvt->provisional_keepalive_sched_id will be changed to a new sched_id value by update_provisional_keepalive(), but that new sched_id then may be overwritten with -1 by send_provisional_keepalive_full(), killing the pvt's reference to a schedule and "leaking" the reference. (closes issue ASTERISK-22079) Review: https://reviewboard.asterisk.org/r/3368/ Reported by: Jamuel Starkey, Matteo, Leif Madsen, Steve Davies Patches: provisional_keepalive_fix.diff uploaded by Steve Davies (license 5012) 2014-03-24 21:36 +0000 [r411021] Joshua Colp * channels/chan_sip.c: chan_sip: Always use fromdomain if set for domain, even if callerid is set to restricted. (closes issue ASTERISK-20841) Reported by: Kelly Goedert 2014-03-17 21:54 +0000 [r410710-410748] Russ Meyerriecks * main/callerid.c: !fixup: callerid: Logic error in checksum processing Fixes syntax error in previous commit :-( * main/callerid.c: callerid: Logic error in checksum processing Callerid checksum-ing was being handled incorrectly here. When the checksum is calculated to be 0x00, it will perform 0x100-0x00 which results in 0x100. This value will then fail the otherwise correct callerid message. This patch changes the logic to simply add the calculated checksum to the transmitted 2's compliment checksum. Review: https://reviewboard.asterisk.org/r/3356/ (closes issue ASTERISK-23488) 2014-03-10 17:00 +0000 [r410380] Richard Mudgett * main/http.c: AST-2014-001: Stack overflow in HTTP processing of Cookie headers. Sending a HTTP request that is handled by Asterisk with a large number of Cookie headers could overflow the stack. Another vulnerability along similar lines is any HTTP request with a ridiculous number of headers in the request could exhaust system memory. (closes issue ASTERISK-23340) Reported by: Lucas Molas, researcher at Programa STIC, Fundacion; and Dr. Manuel Sadosky, Buenos Aires, Argentina 2014-03-10 13:15 +0000 [r410308] Kinsey Moore * channels/chan_sip.c: AST-2014-002: chan_sip: Exit early on bad session timers request This change allows chan_sip to avoid creation of the channel and consumption of associated file descriptors altogether if the inbound request is going to be rejected anyway. (closes issue ASTERISK-23373) Reported by: Corey Farrell Patches: chan_sip-earlier-st-1.8.patch uploaded by Corey Farrell (license 5909) chan_sip-earlier-st-11.patch uploaded by Corey Farrell (license 5909) 2014-03-07 22:50 +0000 [r410224] Corey Farrell * channels/chan_sip.c: chan_sip: Fix deadlock of monlock between unload_module and do_monitor Release monlock before calling pthread_join. This ensures do_monitor cannot freeze by locking monlock during module unload. (closes issue ASTERISK-21406) Reported by: Corey Farrell Review: https://reviewboard.asterisk.org/r/3284/ 2014-03-07 04:35 +0000 [r410105] Matthew Jordan * channels/chan_sip.c: chan_sip: Allow static realtime members to be qualified during module load. When a static realtime peer with qualify=yes is loaded, Asterisk will fail to send an OPTIONS request due to the lastms being equal to 0. This results in the peer being unable to receive calls from Asterisk because the status is permanently UNKNOWN. This patch allows an OPTIONS request to be sent during module load by ignoring the lastms value on startup only. Review: https://reviewboard.asterisk.org/r/3294/ (closes issue ASTERISK-17523) Reported by: Maciej Krajewski Tested by: wushumasters patches: realtime_fix_11.7.0.txt uploaded by Trevor Peirce (license 6112) 2014-03-06 23:01 +0000 [r410043] Russell Bryant * res/res_musiconhold.c: moh: fix a refcount error with realtime MOH I observed a crash in res_musiconhold on an Asterisk 11 system using realtime MOH. Investigation of the backtrace showed a corrupt mohclass, implying that it got destroyed before the code expected it to. I went looking for reference counting errors that could have caused this crash and this patch this result. It contains 2 changes. 1) Remove a usless block of code that was impossible to reach. There was even a comment indicating that it was impossible to reach. The conditional includes "!ast_test_flag(global_flags, MOH_CACHERTCLASSES)" and it's inside of an if block with the opposite check "ast_test_flag(global_flags, MOH_CACHERTCLASSES)". There's no good reason to keep it around. 2) A similar block to #1 contained a reference counting error. It stores state->class in the local variable mohclass without increasing its reference count. The reference count on mohclass is decremented at the end of the function. This block of code probably very rarely runs, which would help explain why this system was working fine for many months before experiencing a crash. Review: https://reviewboard.asterisk.org/r/3282/ 2014-03-05 20:31 +0000 [r409916] Kinsey Moore * main/config.c: config: Fix inverted test The test of the result of the stat() call was inverted such that its output was only used if the call failed. This inverts the test so that the output of stat() is used correctly. This was causing full reloads on unchanged files. (closes issue ASTERISK-23383) Reported by: David Woolley 2014-03-05 16:50 +0000 [r409833] David M. Lee * main/config.c, configure, include/asterisk/autoconfig.h.in, configure.ac: Corrected cross-platform stat nanosecond code When nanosecond time resolution was added for identifying config file changes, it didn't cover all of the myriad of ways that one might obtain nanosecond time resolution off of struct stat. Rather than complicate the #if even further figuring out one system from the next, this patch directly tests for the three struct members I know about today, and #ifdef's accordingly. Review: https://reviewboard.asterisk.org/r/3273/ 2014-03-05 12:04 +0000 [r409777] Sean Bright * contrib/scripts/astgenkey, contrib/scripts/astgenkey.8: Fix references to 'keys' CLI commands in astgenkey 2014-03-05 05:10 +0000 [r409705] Igor Goncharovskiy * channels/chan_unistim.c: Add update_peer function to unistim_rtp_glue, improve other unistim_rtp_glue functions conforming to other channel drivers. Do not forget auto-detected and user-selected phone settings on 'unistim reload' 2014-03-04 19:32 +0000 [r409623] Michael L. Young * funcs/func_audiohookinherit.c: func_audiohookinheritance: Check If A Channel Was Specified This patch prevents a crash when using the function audiohookinheritance without setting the channel. (closes issue ASTERISK-23104) Reported by: Joel Vandal Tested by: Joel Vandal Patches: asterisk-23104_audiohook_inherit_no_channel-11.diff uploaded by Michael L. Young (license 5026) Review: https://reviewboard.asterisk.org/r/3272/ 2014-03-04 16:50 +0000 [r409521-409566] Kinsey Moore * main/astobj2.c: AO2: Add an assert for bad objects This adds an assert that will only be active if Asterisk is compiled with DO_CRASH and allows the testsuite to fail tests that would otherwise require log file parsing. * main/rtp_engine.c: rtp_engine: Clean up after a failed remote bridge Upon failure of an INVITE transaction meant to initiate a remote native bridge, rtp_engine.c would not clean up non-reference-counted bridge instance pointers leaving a dangling pointer which was being used to perform a local native bridge after the other channel had hung up. This lead to dereferencing into freed memory and plenty of AO2 errors. This change allows the remote native bridge loop to clean up properly when the bridge fails. (closes issue ASTERISK-23310) Reported by: Jeremy Laine 2014-03-04 14:50 +0000 [r409472] Sean Bright * channels/chan_sip.c: Minor whitespace change to 'sip show peers' output. (closes issue ASTERISK-23406) Reported by: ibercom Tested by: ibercom Patches: asterisk-11.patch uploaded by ibercom 2014-03-04 13:39 +0000 [r409436] Walter Doekes * Makefile: buildsystem: Unbreak 'make -qp' on 1.8. r408083 caused trouble with make -qp. Backport r408193 to 1.8 as well. (closes issue ASTERISK-23382) Reported by: Corey Farrell 2014-03-03 02:06 +0000 [r409361] Matthew Jordan * main/asterisk.c: doxygen: Tweak the link back to ye olde Digium website 2014-03-02 10:58 +0000 [r409308] Tzafrir Cohen * Makefile.rules: Makefile: replace -O6 with -O3 -O6 is not a legal option of gcc. Unofficially gcc considers it to be equivalent of -O3. clang chalks on it, though. This commit sets the default optimization flag to be -O3, like gcc actually considered it. Review: https://reviewboard.asterisk.org/r/3280/ 2014-02-28 21:00 +0000 [r409156-409207] Richard Mudgett * channels/chan_sip.c: chan_sip: Add precautionary p->owner checks. * Add precautionary p->owner checks in sip_hangup(), get_refer_info(), get_also_info(), and interpret_t38_parameters(). * Simplify some tangled logic in get_refer_info(), get_also_info(), and add_rpid(). * Removed some dead code in handle_request_invite(). (closes issue ASTERISK-23323) Reported by: Walter Doekes Patches: issueA23323-more_p_owner_checks-1.8.x.patch (license #5674) uploaded by wdoekes (modified) issueA23323-more_p_owner_checks-11.x.patch (license #5674) uploaded by wdoekes (modified) issueA23323-more_p_owner_checks-12.x.patch (license #5674) uploaded by wdoekes (modified) issueA23323-more_p_owner_checks-trunk.patch (license #5674) uploaded by wdoekes (modified) * channels/chan_sip.c: chan_sip: Fix crash in ast_channel_hangupcause_set(). * Fix crash in ast_channel_hangupcause_set() because p->owner not checked before calling. Regression introduced by the fix for ASTERISK-22621. (closes issue ASTERISK-23135) Reported by: OK (issue ASTERISK-23323) Reported by: Walter Doekes 2014-02-27 16:23 +0000 [r409077] David M. Lee * utils/astman.c: Fix memory stomping bug in astman. This memset complained in dev mod on my Ubuntu box. The memset is both unnecessary and dangerous. At this point, m hasn't been initialized yet, so the memset will write off to whatever address happens to be on the stack at the time. 2014-02-27 15:59 +0000 [r409052] Corey Farrell * res/res_fax.c, configs/res_fax.conf.sample: res_fax: Warn that minrate=2400 is not valid for V.27 instead of failing load. Change minrate from 2400 to 4800 on config reload in response to changes from ASTERISK-22790 only. Any config with minrate of 2400 that would fail before r405693 will still fail. Comment out many settings in res_fax.conf.sample. The defaults are set in res_fax.c, so setting the same value in sample config does nothing but make the sample config more fragile. (closes issue ASTERISK-23231) Reported by: David Brillert Review: https://reviewboard.asterisk.org/r/3261/ 2014-02-27 12:39 +0000 [r409001] Matthew Jordan * include/asterisk/rtp_engine.h, main/rtp_engine.c: rtp_engine: fix crash during remote native bridging when calling get_codecs When two RTP channels are in a remote bridge, the remote bridging loop in rtp_engine will periodically check to see if the two channels can still be bridged. One of the many things it checks is whether or not the codecs have changed on the channel. If the codec has changed, it will break out of the loop to re-determine which type of bridge is appropriate. In order to perform this check, the ast_rtp_glue virtual table's get_codec callback is called for each channel. The callback implementations assume that the channel tech private is valid when called; as such, there has always been some code in place to check whether or not the channel pvt is NULL before calling. However, this check is insufficient. The channels are unlocked during the remote bridging loop. It is possible for a channel to get masqueraded between the check for the pvt being NULL and the actual call to get_codec. When this occurs, the callback is called with a ZOMBIE channel, which now has a NULL pvt. Crash. While this has always been possible in Asterisk 1.8, it is much more likely to occur in Asterisk 11 and later versions due to the timing changes that occur when getting the codec from a channel. Note that this is much more likely to be reproduced on slow, boggy hardware running Asterisk 11 - but fairly rarely otherwise. Also Note: This crash was also caught by the various SIP blind transfer tests, in addition to the bug report Alec filed. Review: https://reviewboard.asterisk.org/r/3247/ (closes issue ASTERISK-21737) Reported by: Alec Davis Tested by: Alec Davis 2014-02-25 17:41 +0000 [r408876] Rusty Newton * configs/voicemail.conf.sample: configs/voicemail.conf.sample - Make mailcmd sample text more explicit Made the wording a bit more explicit. Didn't really change the meaning. 2014-02-22 02:26 +0000 [r408785] Corey Farrell * utils/extconf.c, utils/conf2ael.c, res/ael/pval.c, main/pbx.c: Remove extra defines of AST_PBX_MAX_STACK. * Ensure AST_PBX_MAX_STACK is only defined in extconf.h and pbx.h. * Fix incorrect function parameters in utils/extconf.c. (closes issue ASTERISK-23141) Reported by: Maxim Review: https://reviewboard.asterisk.org/r/3241/ 2014-02-21 20:18 +0000 [r408642-408747] Kevin Harwell * apps/app_forkcdr.c: app_forkcdr: ForkCDR v option does not keep CDR variables for subsequent records When the 'v' option is specified to ForkCDR application, AST_CDR_FLAG_KEEP_VARS flag is set only for the first CDR in the chain. So ForkCDR works fine with this option only once. After the second and further calls to ForkCDR, CDR variables get cleared on all CDRs besides the first one and moved to the newly forked CDR. It always sets the KEEP_VARS flag on the first CDR in the chain, instead of the most recent CDR which is used as a base to fork a new CDR. This patch sets KEEP_VARS flag on the most recent CDR on the stack (the CDR used for forking). (closes issue ASTERISK-23260) Reported by: zvision Patches: app_forkcdr.diff uploaded by zvision (license 5755) * main/rtp_engine.c: rtp_engine: Output mixup in ${CHANNEL(rtpqos,audio,all)} Fixed the output of CHANNEL(rtpqos,audio,all) to use txjitter instead of rxjitter. (closes issue ASTERISK-23261) Reported by: rsw686 Patches: rtpqos.patch uploaded by rsw686 (license 5887) * channels/chan_sip.c, main/channel.c: channel.c: MOH is not working for transferee after attended transfer Updated the code to check to see if MOH is playing on the transferor and if so then start it on the channel that replaces it during a masquerade. Example scenario of the problem: Alice calls Bob and then Bob begins the attended transfer process into a queue. Upon going on hold Alice hears music and so does Bob once he is in the queue. Bob then transfers Alice into the queue and then music for Alice stops even though she should be hearing it since has now replaced Bob in the queue. The problem that was occurring is that once the channel was masqueraded the app (queues, confbridge, etc...) had no way of knowing that the channel had just been swapped out thus it did not start music for the present channel. Credit to Olle Johansson for pointing me in the right direction on this issue. (closes issue ASTERISK-19499) Reported by: Timo Teräs Review: https://reviewboard.asterisk.org/r/3226/ 2014-02-21 10:35 +0000 [r408589] Alexandr Anikin * addons/ooh323c/src/ooCalls.h: Fix type of roundTripDelay variables 2014-02-21 00:46 +0000 [r408536] Michael L. Young * apps/app_chanspy.c: app_chanspy: Documentation Update To Clarify "x" Option When using the "x" option (specify a DTMF digit to exit the application), it is not obvious in the documentation that this only works when spying on a channel. If a channel being used to spy on other channels is waiting to connect to a channel or is no longer attached to a channel, the DTMF is ignored. As noted on the issue tracker, since there are workarounds available and this is a rarely used option we are opting for a documentation change here. (closes issue ASTERISK-22661) Reported by: Chris Hillman Patches: asterisk-22661-doc-clarify-chan_spy.diff uploaded by Michael L. Young (license 5026) Review: https://reviewboard.asterisk.org/r/2990/ 2014-02-20 02:39 +0000 [r408447] Rusty Newton * apps/app_queue.c: apps/app_queue - Fix incorrect Macro parameter documentation Macro is executed on the called channel, not the calling channel. (closes issue ASTERISK-23069) Reported By: Bryan Anderson 2014-02-19 19:01 +0000 [r408387] Richard Mudgett * main/config.c: config: Add file size and nanosecond resolution fields to the cached modified config file information. Repeatedly modifying config files and reloading too fast sometimes fails to reload the configuration because the cached modification timestamp has one second resolution. * Added file size and nanosecond resolution fields to the cached config file modification timestamp information. Now if the file size changes or the file system supports nanosecond resolution the modified file has a better chance of being detected for reload. * Added a missing unlock in an off-nominal code path. (closes issue AST-1303) Review: https://reviewboard.asterisk.org/r/3235/ 2014-02-19 11:30 +0000 [r408328] Alexandr Anikin * addons/ooh323c/src/ooCapability.c, addons/ooh323c/src/ooh245.c: process receiveAndTransmit user input remote caps instead of receive only send receiveAndTransmit user input our caps instead of receive only 2014-02-16 03:14 +0000 [r408200] Matthew Jordan * main/pbx.c: pbx: Handle a completely empty dialplan during a context merge It is highly unlikely, but - at least in Asterisk 12 - theoretically possible to load Asterisk with no dialplan whatsoever. If that occurs, and some other module (that is not a pbx module) attempts to merge its contexts into the dialplan, the existing merge routine will crash. This is because it is not insane, and rightly believes that you provided some sort of dialplan, somewhere. This patch will gracefully merge the contexts in such a case. Note that this is highly unlikely to occur in 1.8/11, as features will most likely provide some dialplan via parking. However, in Asterisk 12, parking is now provided by res_parking, and hence may create its dialplan later. (closes issue ASTERISK-23297) Reported by: CJ Oster Review: https://reviewboard.asterisk.org/r/3222 2014-02-14 21:52 +0000 [r408142] Scott Griepentrog * main/pbx.c: pbx: ast_custom_function_unregister resource leak In pbx.c ast_custom_function_unregister(), a list of escalations being removed from the list wasn't being free'd creating a leak. This patch corrects that by freeing the records. Review: https://reviewboard.asterisk.org/r/3213/ Reported by: Corey Farrell Patches: acf_escalating_leak.patch uploaded by coreyfarrell (license 5909) 2014-02-14 13:25 +0000 [r408083] Walter Doekes * Makefile: buildsystem: Don't force main to depend on everything else. Directory 'main' only needs to depend on embedded modules. If no module embedding is selected, the dependency is dropped. Review: https://reviewboard.asterisk.org/r/3212/ 2014-02-14 01:22 +0000 [r408020] Rusty Newton * configs/agents.conf.sample: configs/agents.conf.sample - Remove example for non-functional "goodbye" parameter The "goodbye" parameter is not implemented in the source code, it does nothing. (closes issue SWP-6518) Reported By: Steve Pitts 2014-02-10 16:33 +0000 [r407873] Walter Doekes * res/res_config_pgsql.c: res_config_pgsql: Fix ast_update2_realtime calls. Fix so multiple updates from a single call works (add missing ','). Remove bogus ast_free's that weren't supposed to be there. Moved a few spaces for readability. Review: https://reviewboard.asterisk.org/r/3194/ 2014-02-09 15:34 +0000 [r407817] Tzafrir Cohen * channels/chan_dahdi.c, /: chan_dahdi: handle DAHDI_EVENT_REMOVED on a pri D-Channel When a DAHDI device is removed at run-time it sends the event DAHDI_EVENT_REMOVED on each channel. This is intended to signal the userspace program to close the respective file handle, as the driver of the device will need all of them closed to properly clean-up. This event has long since been handled in chan_dahdi (chan_zap at the time). However the event that is sent on a D-Channel of a "PRI" (ISDN) span simply gets ignored. This commit adds handling for closing the file descriptor (and shutting down the span, while we're at it). It also adds a CLI command 'pri destroy span ' to destroy the span and its DAHDI channels. Backported from trunk/12. Review: https://reviewboard.asterisk.org/r/726/ ........ Merged revisions 394552 394567 from http://svn.asterisk.org/svn/asterisk/trunk 2014-02-07 20:42 +0000 [r407678-407764] Richard Mudgett * channels/chan_iax2.c: chan_iax2: Add some more iaxs[] NULL checks to a routine already full of them. * channels/chan_iax2.c, include/asterisk/frame.h, configs/iax.conf.sample: chan_iax2: Block unnecessary control frames to/from the wire. Establishing an IAX2 call between Asterisk v1.4 and v1.8 (or later) results in an unexpected call disconnect. The problem happens because newer values in the enum ast_control_frame_type are not consistent between the branch versions of Asterisk. For example: 1) v1.4 calls v1.8 (or later) using IAX2 2) v1.8 answers and sends a connected line update control frame. (on v1.8 AST_CONTROL_CONNECTED_LINE = 22) 3) v1.4 receives the control frame as an end-of-q (on v1.4 AST_CONTROL_END_OF_Q = 22) 4) v1.4 disconnects the call once the receive queue becomes empty. Several things are done by this patch to fix the problem and attempt to prevent it from happening again in the future: * Added a warning at the definition of enum ast_control_frame_type about how to add new control frame values. * Made block sending and receiving control frames that have no reason to go over the wire. * Extended the connectedline iax.conf parameter to also include the redirecting information updates. * Updated the connectedline iax.conf parameter documentation to include a notice that the parameter must be "no" when the peer is an Asterisk v1.4 instance. (closes issue AST-1302) Review: https://reviewboard.asterisk.org/r/3174/ 2014-02-07 12:59 +0000 [r407622] Tzafrir Cohen * configs/indications.conf.sample: indications.conf: add stutter tone; end properly * If the "stutter" (voicemail indication) tone is indeed a stutter tone, and it ends with a constant tone, make sure that it is the dial tone. This was done for India (in), Mexico (mx) and the Philippines (ph). * If no "stutter" tone exists for a country, provide one. This was done for Spain (es), Malaysia (my) and Venezuela (ve). Review: https://reviewboard.asterisk.org/r/3158/ 2014-02-05 22:58 +0000 [r407511] Rusty Newton * formats/format_wav.c: formats/format_wav: enhancing log message "Not a wav file" to be clear on what is supported Modifying the log message to be more specific as to what is supported. Specifically it seems format_wav supports only PCM encoded versions with a lower-case '.wav' extension. (closes issues ASTERISK-22310) Reported by: Jim Credland Review: https://reviewboard.asterisk.org/r/3188/ 2014-02-05 20:30 +0000 [r407455] Kinsey Moore * main/logger.c: Logger: Fix handling of absolute paths This fixes path handling for log files so that an extra / is not appended to the file path when the path is absolute (begins with /). This would previously result in different but functionally equivalent paths in the output of 'logger show channels'. 2014-02-04 19:48 +0000 [r407272-407337] Richard Mudgett * include/asterisk/devicestate.h, main/devicestate.c: devicestate: Make ast_devstate_changed_literal() return value and doxygen consistent. Nothing actually cares about the value anyway. (closes issue ASTERISK-23178) Reported by: Jonathan Rose * configs/sip.conf.sample, main/tcptls.c: tcptls.c: Made TLS handle a certificate chain file. Thanks to Guillaume Martres for doing the necessary research to validate the change. (closes issue ASTERISK-17727) Reported by: LN Patches: use_certificate_chain.patch (license #5864) patch uploaded by st documente_certificate_chain.patch (license #6576) patch uploaded by Guillaume Martres 2014-02-04 02:19 +0000 [r407205] Joshua Colp * res/res_clialiases.c: res_clialiases: Fix crash when reloading and re-aliasing an alias that is in use. The code assumed that unregistering the alias would always succeed while in practice this is not actually true. A common case is the "reload" command itself. If the cli_aliases.conf configuration file was changed and reload executed the command would fail to unregister and ultimately point to freed memory. The reload process now checks whether unregistering succeeded or not and if not the old CLI alias is retained. (closes issue ASTERISK-19773) Reported by: Joel Vandal (closes issue ASTERISK-22757) Reported by: Gareth Blades 2014-02-01 00:22 +0000 [r407100] Corey Farrell * apps/app_stack.c: app_stack: protect against missing parameters to STACK_PEEK and LOCAL_PEEK STACK_PEEK requires 2 parameters and LOCAL_PEEK requires 1 parameter. This protects against situations where those parameters are blank or missing by logging an error and returning. (closes issue ASTERISK-23220) Reported by: James Sharp 2014-01-31 23:18 +0000 [r407041] Matthew Jordan * apps/app_dial.c: app_dial: Allow macro/gosub pre-bridge execution to occur on priorities The parsing for the destination of the macro/gosub uses the '^' character to separate out context, extension, and priority. However, the logic for the macro/gosub execution was written such that it would only do the actual macro/gosub jump if a '^' character existed. This doesn't apply when the macro/gosub jump occurs in a priority/priority label. This patch changes the logic so that the parsing still occurs, but the jump will occur even for priorities/priority labels. (issue ASTERISK-23164) Review: https://reviewboard.asterisk.org/r/3154 2014-01-30 20:26 +0000 [r406933] Corey Farrell * main/udptl.c, res/res_rtp_asterisk.c: res_rtp_asterisk & udptl: fix port selection to work with SELinux restrictions ast_bind to a port reserved for another program by SELinux causes errno == EACCES. This caused random failures when binding rtp or udptl sockets. Treat EACCES as a non-fatal error, try next port. (closes issue ASTERISK-23134) Reported by: Corey Farrell 2014-01-29 00:36 +0000 [r406860] Russell Bryant * configs/queues.conf.sample: queues.conf.sample Fix documented default for persistentmembers Closes issue ASTERISK-22662 2014-01-28 23:02 +0000 [r406801] Kevin Harwell * cel/cel_radius.c, configure, include/asterisk/autoconfig.h.in, configure.ac, cdr/cdr_radius.c: cdr_radius, cel_radius: build agains libfreeradius-client Asterisk's RADIUS module currently build against libradiusclient-ng, but this project has been superseeded by libfreeradius-client. The API is 99% compatible except that the header name has changed, the library name has changed, and the configuration file location has changed. (closes issue ASTERISK-22980) Reported by: Jeremy LainĂ© Patches: freeradius-client.patch uploaded by sharky (license 6561) 2014-01-28 16:36 +0000 [r406721] Scott Griepentrog * main/rtp_engine.c: rtp_engine: improved handling of get_rtp_info failure In ast_rtp_instance_make_compatible(), after a failure of channel tech call get_rtp_info() to return peer_instance, the null pointer would be passed to ao2_ref, producing an error that looked like a refernce counting problem but is not. This patch corrects that and adds helpful LOG_ERROR messages to indicate which failure path occurred. (issue AST-1276) Review: https://reviewboard.asterisk.org/r/3156/ 2014-01-27 20:34 +0000 [r406566-406643] Russell Bryant * main/config.c: Allow nested #includes in extconfig.conf extconfig.conf was hard-coded to not allow nested includes for some reason. The code has been this way since a patch was merged for ASTERISK-3333 (revision 4889), which was a significant update to this code ("Merge config updates"). I can't figure out any good reason why this should be limited. This patch just removes the limit and uses the default nesting depth limit. Closes issue ASTERISK-17837 Review: https://reviewboard.asterisk.org/r/3159/ * main/file.c, include/asterisk/channel.h, main/channel.c: Protect ast_filestream object when on a channel The ast_filestream object gets tacked on to a channel via chan->timingdata. It's a reference counted object, but the reference count isn't used when putting it on a channel. It's theoretically possible for another thread to interfere with the channel while it's unlocked and cause the filestream to get destroyed. Use the astobj2 reference count to make sure that as long as this code path is holding on the ast_filestream and passing it into the file.c playback code, that it knows it's valid. Bug reported by Leif Madsen. Review: https://reviewboard.asterisk.org/r/3135/ 2014-01-26 22:59 +0000 [r406514] Richard Mudgett * main/tcptls.c: tcptls.c: Add missing cleanup on off nominal path. 2014-01-24 22:56 +0000 [r406417] Richard Mudgett * main/cel.c: CEL: Protect data structures during reload and shutdown. The CEL data structures need to be protected during a configuration reload and shutdown. Asterisk crashed during a shutdown because CEL events were still in flight and the CEL data structures were already destroyed. * Protected the appset and linkedids ao2 containers using the reload_lock. * Added NULL checks before use of the appset and linkedids ao2 containers in case the CEL module is already shutdown. * Fixed overloading of the linkedids held objects reference count. During shutdown any held objects would be leaked. * Fixed memory leak of linkedids held objects if the LINKEDID_END is not being tracked. The objects in the linkedids container were not removed if the LINKEDID_END event is not used. * Added access protection to the appset container during the CLI "cel show status" command. * Made CEL config reload not set defaults if the cel.conf file is invalid. (closes issue AST-1253) Reported by: Guenther Kelleter Review: https://reviewboard.asterisk.org/r/3127/ 2014-01-24 20:57 +0000 [r406360] Jonathan Rose * res/res_config_pgsql.c: res_config_pgsql: Fix a memory leak and use RAII_VAR for cleanup when practical Review: https://reviewboard.asterisk.org/r/3141/ 2014-01-24 20:56 +0000 [r406359] Richard Mudgett * main/manager.c: manager: Register atexit shutdown routine only once. * Made register atexit shutdown routine only once in __init_manager(). * Fixed some initial load failure conditions in __init_manager(). * Made reset options to defaults on reload when the reload will actually happen. * Fixed the order of unreferencing a session object in session_destroy(). * Removed unnecessary container traversals of the white/black filters during session_destructor() and manager_free_user(). * ast_free() does not need a NULL check before calling. 2014-01-22 22:16 +0000 [r406241] Scott Griepentrog * utils/extconf.c, main/pbx.c: pbx.c: Pre-initialize timezone to avoid crash on destroy In ast_build_timing, initialize the timezone value to NULL in order to avoid deferencing an uninitialized value later when calling ast_destroy_timing. The timezone value could be uninitialized if ast_build_timing were to fail due to a zero length time string. (closes issue ASTERISK-22861) Reported by: Sebastian Murray-Roberts Review: https://reviewboard.asterisk.org/r/3134/ Patches: ast_build_timing-initialize-timezone.patch uploaded by coreyfarrell (license 5909) 2014-01-22 18:27 +0000 [r406170] Kinsey Moore * channels/chan_sip.c: chan_sip: Decline image streams on unsupported transports This change allows chan_sip to decline individual image streams over unsupported transports in the SDP of the 200 response. Previously, an image stream offer with RTP/AVP as the transport would cause chan_sip to respond with a 488. (closes issue ASTERISK-22988) Reported by: adomjan Original patch by: adomjan 2014-01-21 20:54 +0000 [r406079] Walter Doekes * main/manager.c, configs/manager.conf.sample: manager: Clarify eventfilter documentation. Textual changes only. Review: https://reviewboard.asterisk.org/r/3133/ 2014-01-21 19:58 +0000 [r406037] Kinsey Moore * res/res_pktccops.c, channels/chan_mgcp.c: chan_mgcp: Enforce locking for oseq This restricts direct usage of global oseq so that all accesses are locked and threads are not racing to get oseq values that they did not claim. This also fixes a build error in res_pktccops under dev mode. (closes issue ASTERISK-23100) Reported by: adomjan Patch by: adomjan 2014-01-20 21:58 +0000 [r405926] Richard Mudgett * channels/sig_pri.c: chan_dahdi/PRI: Suppress CONNECTED_LINE updates when nothing in the udpate is valid. * Also simplified some subddress handling code. (closes issue ASTERISK-23008) Reported by: Michael Cargile 2014-01-17 15:39 +0000 [r405791] Rusty Newton * channels/chan_sip.c, doc/asterisk.8, main/features.c, configs/sip.conf.sample, apps/app_queue.c, apps/app_transfer.c, channels/chan_iax2.c: Documentation: doc fixes across various parts of the code for ASTERISK issues 23061,23028,23046,23027 Fixes typos of "transfered" instead of "transferred" in various code. Fixes incorrect gosub param help text for app_queue. Fixes Asterisk man pages containing unquoted minus signs. Adds note about the "textsupport" option in sip.conf.sample. (issue ASTERISK-23061) (issue ASTERISK-23028) (issue ASTERISK-23046) (issue ASTERISK-23027) (closes issue ASTERISK-23061) (closes issue ASTERISK-23028) (closes issue ASTERISK-23046) (closes issue ASTERISK-23027) Reported by: Eugene, Jeremy Laine, Denis Pantsyrev Patches: transferred.patch uploaded by Jeremy Laine (license 6561) hyphen.patch uploaded by Jeremy Laine (license 6561) sip.conf.sample.patch uploaded by Eugene (license 6360) 2014-01-16 18:52 +0000 [r405656-405692] Kevin Harwell * UPGRADE.txt: res_fax: check_modem_rate() returned incorrect rate for V.27 Added some text to UPGRADES.txt about the V.27 mode rate changes in r405656. (issue ASTERISK-22790) Reported by: Paolo Compagnini * res/res_fax.c, configs/res_fax.conf.sample: res_fax: check_modem_rate() returned incorrect rate for V.27 According to the new standard for V.27 and V.32 they are able to transmit at a bit rate of 4,800 or 9,600. The check_mode_rate function needed to be updated to reflect this. Also, because of this change the default 'minrate' value was updated to be 4800. (closes issue ASTERISK-22790) Reported by: Paolo Compagnini Patches: res_fax.txt uploaded by looserouting (license 6548) 2014-01-15 16:34 +0000 [r405581] Joshua Colp * cel/cel_manager.c: cel_manager: Don't crash if configuration file is invalid. The cel_manager module did not properly handle the case where the configuration file was invalid. The module will now output a warning message and disable itself if this occurs. Reported by: Bryan Walters 2014-03-03 Asterisk Development Team * Asterisk 1.8.26.0 Released. 2014-01-14 Asterisk Development Team * Asterisk 1.8.26.0-rc1 Released. 2014-01-14 18:35 +0000 [r405433-405486] Scott Griepentrog * channels/chan_sip.c: chan_sip: No BYE message sent after INVITE with Replaces Setting channel state DOWN is an unnecessary step that was only being done in handle_invite_replaces(). This changes that by removing the call and reducing locking. (closes issue ASTERISK-23010) Reported by: Ryan Tilton Review: https://reviewboard.asterisk.org/r/3116/ * channels/chan_sip.c: chan_sip: fix Local From tag on outbound register regression In ASTERISK-12117, an improvement to insure consistant local from tags on outbound registrations resulted in an undesirable behavior - caused by leftover unexpired sip_pvt dialogs (with the previous cseq number), resulting in many uncessary REGISTER requests. Instead of significant rework of transmit_register(), this change deletes the dialogs after a 200 OK response indiciating a successful registration, keeping the old dialogs from interfering with normal operation. (closes issue ASTERISK-22946) Reported by: Stephan Eisvogel Review: https://reviewboard.asterisk.org/r/3109/ 2014-01-14 15:31 +0000 [r405379] Matthew Jordan * channels/chan_sip.c: chan_sip: Hangup transferer/transferee when transfer to Parking fails When performing a SIP transfer to a Park extension, if the Park fails, chan_sip will currently not hang up either the transferer or the transfer target. This results in the channels being orphaned with no thread to service frames, resulting in stuck channels. This patch immediately hangs up the two channels if a Park fails. (closes issue ASTERISK-22834) Reported by: rsw686 (closes issue ASTERISK-23047) Reported by: Tommy Thompson Review: https://reviewboard.asterisk.org/r/3107 2014-01-09 14:11 +0000 [r405160] Walter Doekes * apps/app_dumpchan.c: "Minimun" typo. 2014-01-08 16:00 +0000 [r405033-405090] Kinsey Moore * configure, configure.ac, pbx/pbx_lua.c: pbx_lua: Add support for Lua 5.2 This adds support for Lua 5.2 in pbx_lua which is available on newer operating systems. (closes issue ASTERISK-23011) Review: https://reviewboard.asterisk.org/r/3075/ Reported by: George Joseph Patch by: George Joseph * UPGRADE.txt: UPGRADE: Add a note about non-functionality Add a note that the "retry on 403 response to REGISTER" for chan_sip is non-functional in the versions in which it was first introduced. * channels/chan_sip.c: Add the missing part of r400140 When the patch to add retry-on-forbidden-response was committed, part of the patch for chan_sip was not committed which caused the feature to be entirely nonfunctional. This corrects the code in question. (closes issue ASTERISK-17138) Review: https://reviewboard.asterisk.org/r/2874 2014-01-06 17:31 +0000 [r404951] Scott Griepentrog * funcs/func_strings.c: func_strings: fix for memmove patch test In r404674 the AST_TEST_DEFINE(test_REPLACE) test was added that made use of a function that doesn't exist in 1.8. This fixes that by reverting to directly accessing chan varshead. Reported by: Tzafrir Cohen (issue ASTERISK-22910) 2014-01-03 22:06 +0000 [r404861] Tzafrir Cohen * main/asterisk.c: asterisk.c: supress live_dangerously warning on rasterisk Even since the fixes of AST-2013-007, Asterisk prints the following warning on startup if the user decided to live dangerously: Privilege escalation protection disabled! See https://wiki.asterisk.org/wiki/x/1gKfAQ for more details. This message is intended for the logs and interactive startup. No need for it to appear on a remote console. This commit removes it from there. (closes issue ASTERISK-23084) Review: https://reviewboard.asterisk.org/r/3101/ 2014-01-03 21:57 +0000 [r404742-404857] Kevin Harwell * cel/cel_pgsql.c: cel_pgsql: module not correctly reloading Upon reload the module unconditionally "unloaded" the module (freeing memory and setting pointers to NULL) and then when attempting a "load" if the config file had not changed then nothing would be reinitialized. By moving the "unload" to occur conditionally (reload only) after an attempted configuration load, but before module "loading" alleviates the issue. The module now loads/unloads/reloads correctly. (closes issue ASTERISK-22871) Reported by: Matteo * channels/chan_dahdi.c: chan_dahdi: dahdi show channels slices PRI channel dnid on output dahdi show channels output slices the callerid (which is dnid copied over on PRI channels). If the channel naming structures look like: 'DAHDI/i1/1408409XXXX-6' then the output slices 1408409XXXX down to 1408409XXX. This patch just opens it up to 15 chars so you can see the whole thing. (closes issue ASTERISK-22918) Reported by: outtolunc Patches: svn_chan_dahdi.c.format12_15.diff.txt uploaded by outtolunc (license 5198) * apps/app_meetme.c, channels/chan_unistim.c: chan_unistim.c, app_meetme: compiler warnings Fixed a couple of compiler warnings (errors in 'dev-mode') given by gcc version 4.8.1. The one in app_meetme involved the 'sizeof-pointer-memaccess' (see: http://gcc.gnu.org/gcc-4.8/porting_to.html) warning. The one in chan_unistim was issuing an array out of bounds message. Fixed both so they would no longer issue warnings and can compile again in 'dev-mode'. Review: https://reviewboard.asterisk.org/r/3098/ 2014-01-02 19:32 +0000 [r404674] Scott Griepentrog * funcs/func_strings.c: func_strings: use memmove to prevent overlapping memory on strcpy When calling REPLACE() with an empty replace-char argument, strcpy is used to overwrite the the matching . However as the src and dest arguments to strcpy must not overlap, it causes other parts of the string to be overwritten with adjacent characters and the result is mangled. Patch replaces call to strcpy with memmove and adds a test suite case for REPLACE. (closes issue ASTERISK-22910) Reported by: Gareth Palmer Review: https://reviewboard.asterisk.org/r/3083/ Patches: func_strings.patch uploaded by Gareth Palmer (license 5169) 2013-12-31 21:25 +0000 [r404603] Kevin Harwell * cel/cel_pgsql.c: cel_pgsql: deadlock on unload and core_event_dispatcher A deadlock can happen between a thread unloading or reloading the cel_pgsql module and the core_event_dispatcher taskprocessor thread. Description of what is happening: Thread 1 (for example, a netconsole thread): a "module reload cel_pgsql" is launched the thread enter the "my_unload_module" function (cel_pgsql.c) the thread acquire the write lock on psql_columns the thread enter the "ast_event_unsubscribe" function (event.c) the thread try to acquire the write lock on ast_event_subs[sub->type] Thread 2 (core_event_dispatcher taskprocessor thread): the taskprocessor pop a CEL event the thread enter the "handle_event" function (event.c) the thread acquire the read lock on ast_event_subs[sub->type] the thread callback the "pgsql_log" function (cel_pgsql.c), since it's a subscriber of CEL events the thread try to acquire a read lock on psql_columns (closes issue ASTERISK-22854) Reported by: Etienne Lessard Patches: cel_pgsql_fix_deadlock_event.patch uploaded by hexanol (license 6394) 2013-12-20 21:12 +0000 [r404456] Scott Griepentrog * main/say.c: say.c: correct time for polish In ast_say_date_with_format_pl(), change ast_say_number() to use tm_sec instead of tm_mn. (closes issue ASTERISK-22856) Reported by: Robert Mordec Review: https://reviewboard.asterisk.org/r/3082/ Patches: say.c.patch uploaded by veilen (license 6555) 2013-12-18 19:47 +0000 [r404212] Richard Mudgett * addons/ooh323c/src/ooq931.c, addons/ooh323c/src/memheap.c, addons/ooh323c/src/ooTimer.c, addons/ooh323c/src/ooCapability.c, addons/ooh323c/src/perutil.c, addons/ooh323cDriver.c, addons/ooh323c/src/ooSocket.c: ooh323c: Fix gcc 4.6.3 compiler warnings. 2013-12-18 11:58 +0000 [r404135] Joshua Colp * res/res_calendar.c: res_calendar: Protect channel when adding datastore. This change adds a missing channel lock when adding a datastore to a channel. 2013-12-18 00:27 +0000 [r404044-404081] Rusty Newton * funcs/func_strings.c: func_strings: Documentation fix for QUOTE() Example output was inaccurate. (issue ASTERISK-22970) (closes issue ASTERISK-22970) Reported by: Gareth Palmer Patches: func_strings.patch uploaded by Gareth Palmer (license 5169) * channels/chan_iax2.c, apps/app_chanspy.c, apps/app_mixmonitor.c, include/asterisk/test.h, main/channel.c: Several components: fixing Typos in comments and code, "avaliable" instead of "available" (issue ASTERISK-23021) (closes issue ASTERISK-23021) Reported by: Jeremy LainĂ© Tested by: Rusty Newton Patches: available.patch uploaded by Jeremy LainĂ© (license 6561) 2013-12-16 16:36 +0000 [r403913] David M. Lee * include/asterisk/pbx.h, main/asterisk.c, funcs/func_realtime.c, main/pbx.c, main/tcptls.c, funcs/func_db.c, README-SERIOUSLY.bestpractices.txt, configs/asterisk.conf.sample, funcs/func_shell.c, funcs/func_env.c, funcs/func_lock.c, UPGRADE.txt: security: Inhibit execution of privilege escalating functions This patch allows individual dialplan functions to be marked as 'dangerous', to inhibit their execution from external sources. A 'dangerous' function is one which results in a privilege escalation. For example, if one were to read the channel variable SHELL(rm -rf /) Bad Things(TM) could happen; even if the external source has only read permissions. Execution from external sources may be enabled by setting 'live_dangerously' to 'yes' in the [options] section of asterisk.conf. Although doing so is not recommended. (closes issue ASTERISK-22905) Review: http://reviewboard.digium.internal/r/432/ 2013-12-16 15:53 +0000 [r403853-403862] Scott Griepentrog * main/pbx.c: pbx.c: put copy of ast_exten.data on stack to prevent memory corruption During dialplan execution in pbx_extension_helper(), the contexts global read lock prevents link list corruption, but was released with a pointer to the ast_exten and data later used in variable substitution. Instead, this patch removes pbx_substitute_variables() and locates a copy of the ast_exten data on the stack before releasing the lock, where ast_exten could get free'd by another thread performing a module reload. (issue AST-1179) Reported by: Thomas Arimont (issue AST-1246) Reported by: Alexander Hömig Review: https://reviewboard.asterisk.org/r/3055/ * apps/app_sms.c: app_sms: BufferOverflow when receiving odd length 16 bit message This patch prevents an infinite loop overwriting memory when a message is received into the unpacksms16() function, where the length of the message is an odd number of bytes. (closes issue ASTERISK-22590) Reported by: Jan Juergens Tested by: Jan Juergens 2013-12-11 19:11 +0000 [r403634] Russell Bryant * channels/chan_sip.c: Reset peer outboundproxy on sip.conf reload If you set a peer's outboundproxy and then removed it from the config, this would not get picked up in a config reload. This patch fixes that by resetting it in set_peer_defaults(). Closes ASTERISK-19454 Review: https://reviewboard.asterisk.org/r/3065/ 2013-12-09 03:10 +0000 [r403449] Matthew Jordan * res/res_fax_spandsp.c: res_fax_spandsp: Always init T.38 session to avoid crashes during state change Prior to this patch, res_fax_spandsp was conservative with how it initialized the spandsp T.38 context. It would only initialize it if the driver thought the current state was a T.38 fax. While this works fine in nominal situations, in certain off nominal situations, res_fax_spandsp can believe that a T.38 fax will not occur when in fact one has started. In particular, this was discovered when res_fax would fall back to audio after timing out on a T.38 upgrade. The SIP channel driver would continue to retry the re-INVITE and - if the remote end responded after res_fax timed out with a 200 OK - a T.38 frame would be delivered to the res_fax stack when it no longer expected it. As it turns out, there does not appear to be any downside to always initializing the T.38 context, other than the actual memory allocation. Since that avoids this off nominal situation (and others which are equally likely hard to predict), this is the safest way to avoid this problem. Much thanks to Torrey as well for providing a scenario that reproduces this issue. (closes issue ASTERISK-21242) Reported by: Ashley Winters Tested by: Torrey Searle patches: always-init-t38.patch uploaded by awinters (License 6477) A_PARTY.xml uploaded by tsearle (License 5334) 2013-11-22 17:10 +0000 [r403014] Joshua Colp * main/translate.c: translate: Move freeing of frame to after it is used. When translating from one format to another it is possible to inform the translation function that the source frame should be freed. This was previously done immediately but shortly afterwards the frame that was freed was accessed and used again. This change moves code around a bit so that the frame is now freed after it has been completely used. (closes issue ASTERISK-22788) Reported by: Corey Farrell Patches: translate-access-after-free-11up.patch uploaded by coreyfarrell (license 5909) translate-access-after-free-1.8.patch uploaded by coreyfarrell (license 5909) 2013-11-12 14:55 +0000 [r402645-402708] Kinsey Moore * channels/chan_dahdi.c: chan_dahdi: Fix crash during caller ID read Asterisk will sometimes core dump during caller id read on analog channels due to a negative return value from the read() in my_get_callerid that slips through as a negative length argument to callerid_feed() if the errno returned by DAHDI is ELAST. This change ensures that the negative return is treated properly even when it is ELAST. (closes issue ASTERISK-22746) Reported by: Michael Walton Patches: chan_dahdi_cid_crash_fix.r401410.patch uploaded by Michael Walton (License 6502) * apps/app_queue.c: app_queue: Honor penalty limits of 0 In the current app_queue code from 1.8 up to trunk the upper and lower penalties can be set to 0 but the value is interpreted to be disabled instead of actually setting limits. This is especially evident if min and max limits are set to 0 and members with penalties of 0 and 1 are in the queue since the member with penalty 1 will still receive calls. This patch adjusts the special disabled value to be INT_MAX instead of 0. (closes issue ASTERISK-20862) Review: https://reviewboard.asterisk.org/r/2995/ Reported by: Schmooze Com 2013-11-08 22:46 +0000 [r402604] Scott Griepentrog * channels/sip/include/sip.h, channels/chan_sip.c: chan_sip: keep same local (from) tag for outgoing register requests For outbound register requests the tag on the From line was updated every 20 seconds prior to a successful registration and also once for each registration renewal. That behavior can possibly cause the registration to be denied because of the different tag, and is not aligned with the intention of RFC 3261 8.1.3.5 "... request constitutes a new transaction and SHOULD have the same value of the Call-ID, To, and From of the previous request...". This updates chan_sip to have a field to keep the local tag in the registration structure and use that tag for registration requests where the callid is also unchanged. (closes issue ASTERISK-12117) Reported by: Pawel Pierscionek Review: https://reviewboard.asterisk.org/r/2988/ 2013-11-05 15:08 +0000 [r402468] Kevin Harwell * channels/chan_sip.c: chan_sip: notify dialog info ignores presentation indicator in callerid The presentation indicator in a callerid (e.g. set by dialplan function Set(CALLERID(name-pres)= ...)) is not checked when SIP Dialog Info Notifies are generated during extension monitoring. Added a check to make sure the name and/or number presentations on the callee (remote identity) are set to allow. If they are restricted then "anonymous" is used instead. (closes issue AST-1175) Reported by: Thomas Arimont Review: https://reviewboard.asterisk.org/r/2976/ 2013-10-31 15:57 +0000 [r402287] Matthew Jordan * main/loader.c: core/loader: Don't call dlclose in a while loop For awhile now, we've noticed continuous integration builds hanging on CentOS 6 64-bit build agents. After resolving a number of problems with symbols, strange locks, and other shenanigans, the problem has persisted. In all cases, gdb shows the Asterisk process stuck in loader.c on one of the infinite while loops that calls dlclose repeatedly until success. The documentation of dlclose states that it returns 0 on success; any other value on error. It does not state that repeatedly calling it will eventually clear those errors. Most likely, the repeated calls to dlclose was to force a close by exhausting the references on the library; however, that will never succeed if: (a) There is some fundamental error at work in the loaded library that precludes unloading it (b) Some other loaded module is referencing a symbol in the currently loaded module This results in Asterisk sitting forever. Since we have matching pairs of dlopen/dlclose, this patch opts to only call dlclose once, and log out as an ERROR if dlclose fails to return success. If nothing else, this might help to determine why on the CentOS 6 64-bit build agent things are not closing successfully. Review: https://reviewboard.asterisk.org/r/2970 2013-10-29 23:41 +0000 [r402224] Rusty Newton * sounds/Makefile: Updates for 1.4.25 core sounds and 1.4.14 extra sounds, plus new en_GB language set The new sound packages relate to issues: ASTERISK-22544, ASTERISK-22411, ASTERISK-21413, ASTERISK-20782 Modified sounds/Makefile for the new sound versions and to account for the new en_GB language set. (issue ASTERISK-22659) (closes issue ASTERISK-22659) (closes issue ASTERISK-22411) (closes issue ASTERISK-22544) 2013-10-29 14:52 +0000 [r402192] David M. Lee * configure, configure.ac, makeopts.in, Makefile: Backport r373119 from 11 to go along with RAII_VAR support. In order to use nested functions on some versions of GCC (e.g. GCC on OS X), the -fnested-functions flag must be passed to the compiler. This patch adds detection logic to ./configure to add the flag if necessary. 2013-10-29 12:40 +0000 [r402150] Matthew Jordan * main/translate.c, main/xmldoc.c, main/channel.c, main/pbx.c: Remove some spammy debug messages; improve clarity of others Debug messages aren't free. Even when the debug level is sufficiently low such that the messages are never evaluated, there is a cost to having to parse Asterisk logs that contain debug messages that (a) fail to convey sufficient information or (b) occur so frequently as to be next to meaningless. Based on having to stare at lots of DEBUG messages, this patch makes the following changes: * channel.c: When copying variables from a parent channel to a child channel, specify the channels involved. Do not log anything for a variable that is not inherited; the fact that it doesn't have an _ or __ already signifies that it won't be inherited. * pbx.c: Specify what function evaluation has occurred that created the result. * translate.c: Bump up the translator path messages to 10. I've never once had to use these debug messages, and for each format that is registered (on startup) and unregistered (on shutdown) the entire f^2 matrix is logged out. For short tests in the Asterisk Test Suite, this should make finding the actual test much easier. * xmldoc.c: The debug message that 'blah' is not found in the tree is expected. Often, description elements - which are not required - are not provided. This debug message adds no additional value, as it is not indicative of an error or helpful in debugging which element did not contain a 'blah' element as a child. If an element is supposed to contain a child element, then that XML tree should have failed validation in the first place. Review: https://reviewboard.asterisk.org/r/2966/ 2013-12-17 Asterisk Development Team * Asterisk 1.8.25.0 Released. 2013-12-16 Asterisk Development Team * Asterisk 1.8.25.0-rc2 Released. * AST-2013-006 - app_sms: BufferOverflow when receiving odd length 16 bit message This patch prevents an infinite loop overwriting memory when a message is received into the unpacksms16() function, where the length of the message is an odd number of bytes. (closes issue ASTERISK-22590) * AST-2013-007 - security: Inhibit execution of privilege escalating functions This patch allows individual dialplan functions to be marked as 'dangerous', to inhibit their execution from external sources. A 'dangerous' function is one which results in a privilege escalation. For example, if one were to read the channel variable SHELL(rm -rf /) Bad Things(TM) could happen; even if the external source has only read permissions. Execution from external sources may be enabled by setting 'live_dangerously' to 'yes' in the [options] section of asterisk.conf. Although doing so is not recommended. (closes issue ASTERISK-22905) 2013-10-28 Asterisk Development Team * Asterisk 1.8.25.0-rc1 Released. 2013-10-25 21:51 +0000 [r401959-402000] Scott Griepentrog * include/asterisk/rtp_engine.h, main/rtp_engine.c: rtp_engine: fix rtp payloads copy and improve argument names In function ast_rtp_instance_early _bridge_make_compatible the use of instance 0/1 as arguments doesn't clearly communicate a direction that the copying of payloads from the source channel to the destination channel will occur, making it more probable to have the arguments to ast_rtp_codecs_payloads_copy() put in the reverse order. This patch renames the arguments with _dst and _src suffixes and corrects the copy direction. * include/asterisk/pbx.h, main/pbx.c: pbx.c: fix confused match caller id that deleted exten still in hash This fixes a bug where a zero length callerid match adjacent to a no match callerid extension entry would be deleted together, which then resulted in hashtable references to free'd memory. A third state of the matchcid value has been added to indicate match to any extension which allows enforcing comparison of matchcid on/off without errors. (closes issue AST-1235) Reported by: Guenther Kelleter Review: https://reviewboard.asterisk.org/r/2930/ 2013-10-25 17:21 +0000 [r401619-401914] Jonathan Rose * utils/clicompat.c: Put clicompat-r2.patch back in We've figured out how to resolve the problems this was causing in 12/trunk, so this can go back in now. (issue ASTERISK-22467) Reported by: Corey Farrell Patches: clicompat-r2.patch uploaded by coreyfarrell (license 5909) * utils/clicompat.c: revert clicompat-r2.patch from r401704 Patch caused the following build errors against testsuite https://bamboo.asterisk.org/bamboo/browse/AST-ATRUNKBUILD4-244 (issue ASTERISK-22467) Reported by: Corey Farrell * main/utils.c: utils: Fix memory leaks and missed unregistration of CLI commands on shutdown Final set of patches in a series of memory leak/cleanup patches by Corey Farrell (closes issue ASTERISK-22467) Reported by: Corey Farrell Patches: main-utils-1.8.patch uploaded by coreyfarrell (license 5909) main-utils-11.patch uploaded by coreyfarrell (license 5909) main-utils-12up.patch uploaded by coreyfarrell (license 5909) * tests/test_linkedlists.c: test_linkedlists: Fix memory leak (issue ASTERISK-22467) Reported by: Corey Farrell Patches: test_linkedlists-1.8.patch uploaded by coreyfarrell (license 5909) test_linkedlists-11up.patch uploaded by coreyfarrell (license 5909) * main/jitterbuf.c: jitterbuf: Fix memory leak on jitter buffer reset (issue ASTERISK-22467) Reported by: Corey Farrell Patches: jitterbuf-jb_reset-leak-1.8.patch jitterbuf-jb_reset-leak-11up.patch * main/astobj2.c: astobj2: Unregister debug CLI commands at exit (issue ASTERISK-22467) Reported by: Corey Farrell Patches: astobj2-clean-debug-cli-1.8-11.patch uploaded by coreyfarrell (license 5909) astobj2-clean-debug-cli-12up.patch uploaded by coreyfarrell (license 5909) * apps/app_voicemail.c: app_voicemail: Memory Leaks against tests (issue ASTERISK-22467) Reported by: Corey Farrell Patches: app_voicemail-1.8.patch uploaded by coreyfarrell (license 5909) app_voicemail-11up.patch uploaded by coreyfarrell (license 5909) * main/asterisk.c, utils/clicompat.c, channels/chan_dahdi.c, codecs/ilbc/doCPLC.c, main/data.c, main/app.c: memory leaks: Memory leak cleanup patch by Corey Farrell (second set) Also covers ast_app_parse_timelen-fail-zero-length.patch, but the patch was replaced with one of my own. (issue ASTERISK-22467) Reported by: Corey Farrell Patches: chan_dahdi-cleanup_push.patch uploaded by coreyfarrell (license 5909) clicompat-r2.patch uploaded by coreyfarrell (license 5909) codecs-ilbc-doCPLC.patch uploaded by coreyfarrell (license 5909) data-cleanup-test-registration.patch uploaded by coreyfarrell (license 5909) main-asterisk-kill-listener.patch uploaded by coreyfarrell (license 5909) * tests/test_dlinklists.c, funcs/func_math.c, channels/sip/reqresp_parser.c, main/test.c, main/editline/readline.c: memory leaks: Memory leak cleanup patch by Corey Farrell (first set) (issue ASTERSIK-22467) Reported by: Corey Farrell Patches: chan_sip-parse_contact_header_test-free-contacts.patch uploaded by coreyfarrell (license 5909) cli-filename-completion-leak.patch uploaded by coreyfarrell (license 5909) func_math.patch uploaded by corefarrell (license 5909) main-test-cleanup.patch uploaded by coreyfarrell (license 5909) test_dlinklists.patch uploaded by coreyfarrell (license 5909) * main/translate.c, res/res_rtp_asterisk.c: res_rtp_asterisk: Address jittery DTMF events in RTP streams (closes issue ASTERISK-21170) Reported by: NITESH BANSAL Patches: dtmf-timestamp.patch uploaded by NITESH BANSAL (license 6418) Review: https://reviewboard.asterisk.org/r/2938/ 2013-10-23 16:34 +0000 [r401577] Richard Mudgett * cdr/cdr_adaptive_odbc.c: cdr_adaptive_odbc: Also apply a filter when the CDR value is empty. Extra CDR records are written if a filtered CDR value is empty because the filter is not checked. (closes issue ASTERISK-22272) Reported by: Jordi Llull Chavarria 2013-10-23 15:19 +0000 [r401537] Kinsey Moore * channels/chan_mgcp.c: chan_mgcp: Properly handle malformed media lines This corrects a situation in which a media line was not parsed properly and resulted in a crash. (closes issue ASTERISK-21190) Reported by: adomjan Patches: chan_mgcp.c-sscnaf_fix uploaded by adomjan (License 5448) 2013-10-23 11:10 +0000 [r401497] Joshua Colp * channels/chan_sip.c: Fix an issue where an incompatible audio format may be added to SDP. If preferred codecs included any non-audio format the code would mistakenly add the audio format, even if it was not a joint capability with the remote side. (closes issue ASTERISK-21131) Reported by: nbougues Patches: patch_unsupported_codec_1.8.patch uploaded by nbougues (license 6470) 2013-10-22 22:36 +0000 [r401445] Matthew Jordan * res/res_rtp_asterisk.c: res_rtp_asterisk: Fix crash when RTCP is not available during SSRC change In r400089, a patch was put in to correct erroneous RTCP statistic resets. Unfortunately, ast_rtp_read can be called on an RTP instance that does not have RTCP information. This patch prevents that crash by only resetting the statistics if we do actually have an RTCP instance. (issue AST-1174) (closes issue ASTERISK-22667) Reported by: John Bigelow 2013-10-22 00:13 +0000 [r401378] Richard Mudgett * channels/sig_analog.c: chan_dahdi: Fix unable to get index warning when transferring an analog call. Transferring an analog call using flashhooks generated an unable to get index WARNING message when the transfer is completed. * Removed unnecessary analog subchannel shell games when transferring a call using flashhooks. Thanks to Tzafrir Cohen for mentioning this in a comment on issue ASTERISK-22720. 2013-10-21 19:45 +0000 [r401325] Kevin Harwell * main/editline/term.c: Segfault in LIBEDIT_INTERNAL after tgetstr(), when libncurses5-dev isn't installed Include the appropriate declarations when not using termcap, but term+curses and [n]curses do not exist. (closes issue ASTERISK-22351) Reported by: A. Iglesias Patches: issueA22351_libedit_internal_without_ncurses_dev.patch uploaded by wdoekes (license 5674) 2013-10-18 14:40 +0000 [r401178] Walter Doekes * main/channel.c: Properly copy/remove the device state cache flag over a masquerade. In r378303 the AST_FLAG_DISABLE_DEVSTATE_CACHE flag was added that tells the devstate system to not cache states for non-real devices. However, when optimizing away channels (ast_do_masquerade), that flag wasn't copied. In my case, using Local devices as queue members created a situation where the endpoint was considered in use, but the state change of the device being available again was ignored (not cached). The endpoint channel was optimized into the (previously) Local channel, but kept the do-not-cache flag. The end result being that the queue member apparently stayed in use forever. (closes issue ASTERISK-22718) Reported by: Walter Doekes Review: https://reviewboard.asterisk.org/r/2925/ 2013-10-17 15:22 +0000 [r401119] Kinsey Moore * res/res_jabber.c: Reduce log level of a non-pubsub error message Drop an error log message to debug level 1 since distributed device state functions correctly when receiving this message and it spams the logs. (closes issue ASTERISK-22410) Reported by: abelbeck Patches: asterisk-1.8-res_jabber-log-nonpubsub-error-to-debug.patch uploaded by abelbeck (License 5903) 2013-10-16 11:04 +0000 [r401049] Walter Doekes * apps/app_queue.c: Don't check all realtime queues when doing "queue show some_queue". When using realtime queues, queues have to be fetched from the database every now and then to see if any info has been changed or to see if the queue has been removed. When fetching info for an individual queue, the pruning of other queues is unnecessarily costly. Review: https://reviewboard.asterisk.org/r/2907/ 2013-10-15 14:52 +0000 [r400970] Mark Michelson * channels/chan_sip.c: Prevent chan_sip from sending duplicate BYEs. When a 200 OK for an initial INVITE is received, we were doing the right thing by ACKing and sending an immediate BYE. However, we also were doing the wrong thing and queuing an answer frame, thus causing the call to be answered. This would cause the call to be hung up by the channel thread, thus resulting in a second BYE being sent out. In this fix, I also have set the hangupcause to be correct since the initial BYE being sent by Asterisk had an unknown hangup cause. I have changed to using "Bearer capabilty not available" since the call was hung up due to an SDP offer/answer error. (closes issue ASTERISK-22621) reported by Kinsey Moore 2013-10-14 21:40 +0000 [r400907] Richard Mudgett * channels/chan_dahdi.c: chan_dahdi: Reflect the set software gain in the CLI "dahdi show channel" output. * Remember the swgain setting from CLI "dahdi set swgain" command so the CLI "dahdi show channel" output will reflect the current setting. * Updated CLI "dahdi set hwgain" and "dahdi set swgain" documentation. (issue ASTERISK-22429) Reported by: Jaco Kroon Patches: jira_asterisk_22429_v1.8_v2.patch (license #5621) patch uploaded by rmudgett 2013-10-14 21:32 +0000 [r400906] Mark Michelson * channels/chan_sip.c: Do not increment the SDP version between 183 and 200 responses. Bumping the SDP version number can cause interoperability problems since receivers of the responses will expect that a 200 SDP will be identical to a previous 183 SDP. (closes issue ASTERISK-21204) reported by NITESH BANSAL Patches: dont-increment-session-version-in-2xx-after-183.patch uploaded by NITESH BANSAL (License #6418) 2013-10-08 22:26 +0000 [r400694-400767] Kinsey Moore * configure, configure.ac: Add warning when compiling with iODBC support When running configure, libiodbc2 development headers will fulfill the requirement for ODBC development headers, but will not function properly. This adds a warning when libiodbc2 development headers are detected instead of unixodbc development headers. (closes issue ASTERISK-22459) Reported by: Patrick Maille Tested by: Walter Doekes Patches: issueA22459_warn_when_using_iodbc.patch uploaded by Walter Doekes (License 5674) * funcs/func_config.c: Fix func_config list entry allocation The AST_CONFIG dialplan function defined in func_config.c allocates its config file list entries using ast_malloc. List entry allocations destined for use with Asterisk's linked list API must be ast_calloc()d or otherwise initialized so that list pointers are set to NULL. These uses of ast_malloc have been replaced by ast_calloc to prevent dereferencing of uninitialized pointer values when traversing the list. (closes issue ASTERISK-22483) Reported by: Brian Scott 2013-10-06 17:07 +0000 [r400622] Michael L. Young * apps/app_queue.c: Fix Regression With Queuelog EXITWITHKEY Only Logging Two Out Of Four Fields Commit r62462 added two extra fields for logging "the original position the caller entered the queue at, and the amount of time the caller was waiting in the queue." But when r75969 was merged from 1.4 into trunk (r75977), these two fields disappeared. Those two extra fields were not logged in 1.4 and when the patch was merged, those fields went away. Therefore, this is a regression and was caught by the reporter because he was reading the awesome "Asterisk: The Definitive Guide" book. (closes issue ASTERISK-22197) Reported by: Dalius M. Tested by: Dalius M. Patches: asterisk-22197-q-log-exitwithkey.diff uploaded by Michael L. Young (license 5026) Review: https://reviewboard.asterisk.org/r/2901/ 2013-10-03 22:51 +0000 [r400469] Jonathan Rose * channels/chan_sip.c: chan_sip: Don't ignore expires value in contact header if it lacks semicolon (closes issue ASTERISK-22574) Reported by: Filip Jenicek Patches: chan_sip_expires.patch uploaded by Filip Jenicek (license 6277) 2013-10-03 18:25 +0000 [r400393] Kinsey Moore * res/res_rtp_multicast.c: Ensure res_rtp_mutlicast sets SSRC properly This fixes a bug where the SSRC field on multicast RTP can be stuck at 0 which can cause problems for endpoints trying to make sense of incoming streams. (closes issue ASTERISK-22567) Reported by: Simone Camporeale Patches: 22567_res_mulitcast_ssrc.patch uploaded by Simone Camporeale (License 6536) 2013-10-02 21:30 +0000 [r400314] Michael L. Young * channels/chan_iax2.c: Cast Integer Argument To Unsigned Char The member reg in the peercnt structure is an unsigned char and peercnt_modify() is expecting an unsigned char argument which gets assigned to peercnt->reg. This patch fixes that by casting the integer argument being passed to peercnt_modify to unsigned char. 2013-09-30 15:19 +0000 [r400137] Kinsey Moore * channels/chan_sip.c, UPGRADE.txt, configs/sip.conf.sample: Allow Asterisk to retry after 403 on register This adds a global option in chan_sip to allow it to continue attempting registration if a 403 is received, clearing the cached nonce and treating it as a non-fatal response. Normally, this would cause registration attempts to that endpoint to stop. (closes issue ASTERISK-17138) Review: https://reviewboard.asterisk.org/r/2874/ Reported by: Rudi 2013-09-28 22:20 +0000 [r400073-400089] Matthew Jordan * res/res_rtp_asterisk.c: res_rtp_asterisk: Correct erroneous lost packet information in RTCP reports RTCP's calculation of the number of lost packets in an RTP stream is based on that stream's sequence number count, the number of received packets, and how many packets we expect to receive. When the SSRC for an RTP stream changes, there can - and almost always will be - a large jump in the next packet's timestamp and sequence number. If we don't reset the number of received packets, sequence number count, and other metrics used by RTCP, the next RR/SR report will use the previous SSRC's values to calculate the lost packet count for the new SSRC - resulting in a very large number of lost packets. This patch modifies res_rtp_asterisk such that, if it detects a SSRC change, it will reset the various values used by the RTCP calculations. From the perspective of RTCP, this appears as a new media stream - which is what it is. Review: https://reviewboard.asterisk.org/r/2886/ (closes issue AST-1174) Reported by: Thomas Arimont * configure.ac, configure: Add check for openSUSE when detecting bfd library In ASTERISK-17842, some additional library checks were added to the configure script so that the bfd library could be found on CentOS and Fedora systems. As it turns out, openSUSE requires an additional library. This patch adds another check to the configure script for openSUSE that will add that library. Review: https://reviewboard.asterisk.org/r/2885/ (closes issue AST-1169) Reported by: Guenther Kelleter 2013-09-27 21:31 +0000 [r400013] Richard Mudgett * channels/chan_sip.c, channels/sip/reqresp_parser.c: chan_sip: Increase some scratch buffer sizes dealing with caller id. * Eliminated an unnecessary initialization in check_user_full(). (closes issue ASTERISK-22477) Reported by: Michael Shepelev 2013-09-27 17:13 +0000 [r399939] Jonathan Rose * channels/sip/include/sip.h, channels/chan_sip.c: chan_sip: Reject calls on 200 OKs if no SDP has been received When Asterisk receives a 200 OK in response to an invite, that peer should have sent an SDP at some point by then. If the channel has never received an SDP, media won't have been set and the remote address won't be known. Endpoints in general should not be doing this. This patch makes it so that Asterisk will simply hang up a call if it sends a 200 OK at this point. So far this odd behavior for endpoints has only been observed in tests which involved manually created SIP transactions in SIPp. (closes issue ASTERISK-22424) Reported by: Jonathan Rose Review: https://reviewboard.asterisk.org/r/2827/ 2013-09-25 20:23 +0000 [r399818] Richard Mudgett * channels/chan_dahdi.c, channels/sig_ss7.c: chan_dahdi: CLI "core stop gracefully" has needless delay for PRI and SS7. The PRI and SS7 link control threads are not stopped correctly when the chan_dahdi.so module is unloaded. The link control threads pri_dchannel() and ss7_linkset() are not awakened from a poll() to cancel the thread. * Added a SIGURG signal after requesting the thread cancel to break the link control thread poll() immediately. For SS7 it was slightly worse, the link poll() timeout would always be whatever was the last libss7 scheduled event time used. If no libss7 scheduled event was pending, the thread could run more often than necessary. * Set nextms to 60 seconds for the ss7_linkset() poll() if there is no other libss7 scheduled event. 2013-09-25 19:25 +0000 [r399794] Michael L. Young * channels/chan_sip.c: Fix Realtime Peer Update Problem When Un-registering And Expires Header In 200ok 1st Issue When a realtime peer sends an un-REGISTER request, Asterisk un-registers the peer but the database table record still has regseconds and fullcontact for the peer. This results in calls attempting to be routed to the peer which is no longer registered. The expected behavior is to get busy/congested when attempting to call an un-registered peer through the dialplan. What was discovered is that we are clearing out the peer's registration in the database in parse_register_contact() when calling expire_register() but then upon returning from parse_register_contact(), update_peer() is run which stores back in the database table regseconds and fullcontact. 2nd Issue The reporter pointed out that the 200 ok being returned by Asterisk after un-registering a peer contains a Contact header with ;expires= and the Expires header is not set to 0. This is actually a regression. Tests were created for this second issue (ASTERISK-22548). The tests have been reviewed and a Ship It! was received on those tests. This patch does the following: * Do not ignore the Expires header value even when it is set to 0. The patch sets the pvt->expiry earlier on in the function so that it is set properly and used. * If pvt->expiry is 0, do not call update_peer since that means the peer has already been un-registered and there is no need to update the database record again since nothing has changed. (closes issue ASTERISK-22428) Reported by: Ben Smithurst Tested by: Ben Smithurst, Michael L. Young Patches: asterisk-22428-rt-peer-update-and-expires-header.diff by Michael L. Young (license 5026) Review: https://reviewboard.asterisk.org/r/2869/ 2013-09-24 20:03 +0000 [r399697] Richard Mudgett * channels/chan_iax2.c: chan_iax2: Prevent some needless breaking of the native IAX2 bridge. * Clean up some twisted code in the iax2_bridge() loop. * Add AST_CONTROL_VIDUPDATE and AST_CONTROL_SRCCHANGE to a list of frames to prevent the native bridge loop from breaking. * Passing the AST_CONTROL_T38_PARAMETERS frame should also allow FAX over a native IAX2 bridge. (issue ABE-2912) Review: https://reviewboard.asterisk.org/r/2870/ 2013-09-19 16:34 +0000 [r399456] Jonathan Rose * channels/chan_sip.c: chan_sip: Make direct media reinvites for T38 put Asterisk in the media path Prior to this patch, Asterisk would incorrectly use the previous endpoint addresses in SDP in spite of providing its own port. T38 is never meant to be done through directmedia and Asterisk should always be in the media path for these streams. (closes issue ASTERISK-17273) Reported by: Kevin Stewart (closes issue ASTERISK-18706) Reported by: Jeremy Kister Review: https://reviewboard.asterisk.org/r/2853/ 2013-10-21 Asterisk Development Team * Asterisk 1.8.24.0 Released. 2013-10-18 Asterisk Development Team * Asterisk 1.8.24.0-rc2 Released. * Properly copy/remove the device state cache flag over a masquerade. In r378303 the AST_FLAG_DISABLE_DEVSTATE_CACHE flag was added that tells the devstate system to not cache states for non-real devices. However, when optimizing away channels (ast_do_masquerade), that flag wasn't copied. In my case, using Local devices as queue members created a situation where the endpoint was considered in use, but the state change of the device being available again was ignored (not cached). The endpoint channel was optimized into the (previously) Local channel, but kept the do-not-cache flag. The end result being that the queue member apparently stayed in use forever. 2013-09-19 Asterisk Development Team * Asterisk 1.8.24.0-rc1 Released. 2013-09-18 19:54 +0000 [r399402] Kinsey Moore * main/abstract_jb.c: Fix jitter buffer log file creation This adjusts '/'-to-'#' replacement to replace all instances of '/' instead of just the first to ensure that the jitter buffer log file gets the correct name as per Richard Kenner's suggestion. (closes issue ASTERISK-21036) Reported by: Richard Kenner 2013-09-18 17:15 +0000 [r399351] Matthew Jordan * build_tools/prep_tarball: Update prep_tarball with new documentation files on the Asterisk wiki This will now pull both a command reference for the version being prepared, as well as an Admin Guide that applies to all versions of Asterisk. (issue ASTERISK-22439) Reported by: Olle Johansson 2013-09-18 01:32 +0000 [r399304] Michael L. Young * main/features.c: Fix Segfault When Syntax Of A Line Under [applicationmap] Is Invalid When processing the lines under the [applicationmap] context in features.conf, a segfault occurs from attempting to process a line with an invalid syntax (basically missing most of the arguments). Example: [applicationmap] automon=*6 * This patch moves the checking for empty arguments to before they are accessed. * Also, checked the "todo" comment and removed it. Some applications do not require arguments. (closes issue ASTERISK-22416) Reported by: CGI.NET Tested by: CGI.NET Patches: asterisk-22416-check-syntax-first_v2.diff by Michael L. Young (license 5026) Review: https://reviewboard.asterisk.org/r/2803 2013-09-16 16:37 +0000 [r399158] Richard Mudgett * channels/chan_iax2.c: chan_iax2: Fix saving the wrong expiry time in astdb. When a new IAX2 client registers, the astdb database is updated with the value of minregexpire defined in iax.conf instead of using the expiry time that is provided by the client. The provided expiry time of the client is updated after inserting the astdb entry. As a consequence, restarting or reloading asterisk creates clients whose registration may expire before they reregister. The clients are therefore unavailable after minregexpire seconds until they reregister. * Move updating of the expiry time to before inserting into the astdb. (closes issue ASTERISK-22504) Reported by: Stefan Wachtler Patches: chan_iax2.c.patch (license #6533) patch uploaded by Stefan Wachtler 2013-09-13 20:47 +0000 [r399098] David M. Lee * main/astobj2.c: Don't write to /tmp/refs when REF_DEBUG is not defined. If MALLOC_DEBUG is enabled, then the debug destructor for the container is used, which would erroneously write to /tmp/refs. This patch only uses the debug destructor if ref_debug is used. (closes issue ASTERISK-22536) 2013-09-13 13:31 +0000 [r399033] Kinsey Moore * apps/app_meetme.c: Fix several crashes in MeetMeAdmin This change ensures that MeetMeAdmin commands requiring a user actually get a user and fixes another issue where an extra dereference could occur for a last-entered user being ejected if a user identifier was also provided. (closes issue ASTERISK-21907) Reported by: Alex Epshteyn Review: https://reviewboard.asterisk.org/r/2844/ 2013-09-12 20:09 +0000 [r398937-398977] Jonathan Rose * channels/sip/include/sip.h, channels/chan_sip.c: chan_sip: Revert r398835 due to failing tests involving originate (issue ASTERISK-22424) Reported by: Jonathan Rose * res/res_musiconhold.c: res_musiconhold: Fix reference leaks caused when reloading with REF_DEBUG set Due to a faulty function for debugging reference decrementing, it was possible to reduce the refcount on the wrong object if two moh classes of the same name were in the moh class container. (closes issue ASTERISK-22252) Reported by: Walter Doekes Patches: 18_moh_debug_ref_patch.diff Uploaded by Jonathan Rose (license 6182) 2013-09-12 00:00 +0000 [r398880-398884] Rusty Newton * apps/app_queue.c: 'queue add member' help text correction You are adding dial strings to the queue, not channels. An aribitrary string could be used, but you are typically referencing a channel. Correcting the command help text. (issue ASTERISK-22263) (closes issue ASTERISK-22263) Reported By: Rusty Newton * configs/chan_dahdi.conf.sample: Documentation fix - waitfordialtone is not boolean, it's time in milliseconds Changing text in chan_dahdi.conf sample to be accurate. (issue ASTERISK-22308) (closes issue ASTERISK-22308) Reported By: Malcolm Davenport 2013-09-11 19:39 +0000 [r398835] Jonathan Rose * channels/sip/include/sip.h, channels/chan_sip.c: chan_sip: Reject calls without prior SDP on 200 OK If we receive a 200 OK without SDP, we will now check to see if the remote address has been established for that channel's RTP session and if the to tag for that channel has changed from the most recent to tag in a response less than 200. If either a change has been made since the last to-tag was received or the remote address is unset, then we will drop the call. (closes issue ASTERISK-22424) Reported by: Jonathan Rose Review: https://reviewboard.asterisk.org/r/2827/diff/#index_header 2013-09-10 17:53 +0000 [r398757] Richard Mudgett * main/xmldoc.c, main/cli.c, funcs/func_dialgroup.c, main/heap.c, main/event.c, res/res_musiconhold.c, main/indications.c, main/asterisk.c: Fix incorrect usages of ast_realloc(). There are several locations in the code base where this is done: buf = ast_realloc(buf, new_size); This is going to leak the original buf contents if the realloc fails. Review: https://reviewboard.asterisk.org/r/2832/ 2013-09-10 17:47 +0000 [r398748-398752] David M. Lee * utils/check_expr.c: Fixed utils directory breakage from r398748, this time with extra hate. * utils/check_expr.c, utils/ael_main.c, utils/conf2ael.c: Fixed utils directory breakage from r398648 2013-09-09 23:15 +0000 [r398703] Richard Mudgett * main/astmm.c: MALLOC_DEBUG: Change fence magic number to be completely different from the freed magic number. Race conditions between freeing a nul terminated string and ast_strdup()'ing it are more likely to be detected if the fence and freed magic numbers are completely different. 2013-09-09 19:56 +0000 [r398648] David M. Lee * main/utils.c, include/asterisk/lock.h, main/lock.c: Fix DEBUG_THREADS when lock is acquired in __constructor__ This patch fixes some long-standing bugs in debug threads that were exacerbated with recent Optional API work in Asterisk 12. With debug threads enabled, on some systems, there's a lock ordering problem between our mutex and glibc's mutex protecting its module list (Ubuntu Lucid, glibc 2.11.1 in this instance). In one thread, the module list will be locked before acquiring our mutex. In another thread, our mutex will be locked before locking the module list (which happens in the depths of calling backtrace()). This patch fixes this issue by moving backtrace() calls outside of critical sections that have the mutex acquired. The bigger change was to reentrancy tracking for ast_cond_{timed,}wait, which wrongly assumed that waiting on the mutex was equivalent to a single unlock (it actually suspends all recursive locks on the mutex). (closes issue ASTERISK-22455) Review: https://reviewboard.asterisk.org/r/2824/ 2013-09-06 20:56 +0000 [r398523-398576] Kinsey Moore * res/res_jabber.c: Commit the remainder of r398523 This is a missing part of the commit in revision 398523 that corrects the name of a variable. (issue ASTERISK-22435) * res/res_jabber.c: Fix Jabber/XMPP distributed MWI The mailbox and context are swapped on the receiving end for all users of Jabber and XMPP distributed MWI in Asterisk 1.8 and all more recent versions. This swaps those values to be correct when publishing to the internal event system from Jabber/XMPP distributed MWI state. (closes issue ASTERISK-22435) Reported by: abelbeck Tested by: Michael Keuter Patches: asterisk-1.8-res_jabber-aji_handle_pubsub_event.patch uploaded by abelbeck asterisk-11-res_xmpp-xmpp_pubsub_handle_event.patch uploaded by abelbeck 2013-09-05 19:00 +0000 [r398235-398456] Richard Mudgett * channels/chan_iax2.c: chan_iax2: Reduce indentation in __attempt_transmit(). * Reduce indentation in __attempt_transmit(). * Don't update the static last error time variable every time in __schedule_action() and socket_read(). * channels/chan_iax2.c: chan_iax2: Fix stray reference to worker thread idle_list. * Fix stray reference to idle_list in cleanup_thread_list(). This may be the reason for the note in iax2_process_thread() about threads not being removed from the task lists. * Move cleanup_thread_list(&idle_list) to after the other lists are cleaned up. * channels/chan_iax2.c: chan_iax2: Fix bridgecallno deadlock avoidance. * Fix bridgecallno deadlock avoidance. When doing deadlock avoidance, you need to retest the status of values for each loop to see if you still need the lock for bridgecallno. * As a safety check, after acquiring the bridgecallno lock you should check if iaxs[bridgecallno] is NULL just like the current callno checks. * Move setting thread->iostate to IAX_IOSTATE_IDLE to after processing any deferred frames to ensure that the iostate is IDLE when it is placed back into the idle list. defer_full_frame() tries to ensure iax2_process_thread() wakes up to process the frame. * channels/iax2-parser.c: chan_iax2: Add missing control frame names to debug frame decode output. (Part 2) * channels/iax2-parser.c: chan_iax2: Add missing control frame names to debug frame decode output. * channels/chan_misdn.c: chan_misdn: Fix misdn debug output printed with arbitrary verbose levels. Fix the misdn debug output to remote consoles. chan_misdn uses ast_console_puts() which doesn't know about verbose levels. Better to use ast_verbose() instead. Without this patch the misdn debug messages are appended to the verbose level which ever was set by the message sent to the console before, i.e. any undefined level. (closes issue AST-1218) Reported by: Guenther Kelleter Patches: misdnlog.patch (license #6372) patch uploaded by Guenther Kelleter 2013-09-02 07:24 +0000 [r398167] Walter Doekes * cel/cel_custom.c: Be a little more verbose when loading cel_custom.conf. Review: https://reviewboard.asterisk.org/r/2805/ 2013-08-30 18:55 +0000 [r398021-398102] Kevin Harwell * channels/chan_sip.c, main/config.c, res/res_security_log.c: Fix various memory leaks main/config.c - cleanup cache fie includes res/res_security_log.c - unregister logger level channesl/chan_sip.c - cleanup io context and notify_types (closes issues ASTERISK-22378) Reported by: Corey Farrell Patches: config_shutdown.patch uploaded by coreyfarrell (license 5909) res_security_log.patch uploaded by coreyfarrell (license 5909) chan_sip-1.8.patch uploaded by coreyfarrell (license 5909) * main/manager.c, res/res_agi.c: Memory leak fix ast_xmldoc_printable returns an allocated block that must be freed by the caller. Fixed manager.c and res_agi.c to stop leaking these results. (closes issue ASTERISK-22395) Reported by: Corey Farrell Patches: manager-leaks-1.8.patch uploaded by coreyfarrell (license 5909) res_agi-xmldoc-leaks.patch uploaded by coreyfarrell (license 5909) * main/features.c: Fix memory leak Fixed a features.c test that leaked a reference to a parked call. This caused chancount to never reach 0, so graceful shutdown stops. Also added an unregister test. (closes issue ASTERISK-22413) Reported by: Corey Farrell Patches: features-TEST_FRAMEWORK.patch uploaded by coreyfarrell (license 5909) 2013-08-30 16:46 +0000 [r398018] Richard Mudgett * tests/test_substitution.c: test_substituition: Fix failed test reporting to actually report failure. You cannot put the "Testing pass/fail" on a single line before actually performing the test. Now any additional failure information is logged before the test pass/fail announcement. * Added an additional CDR(answer,u) test. 2013-08-27 17:55 +0000 [r397710-397756] Matthew Jordan * channels/chan_sip.c: AST-2013-005: Fix crash caused by invalid SDP If the SIP channel driver processes an invalid SDP that defines media descriptions before connection information, it may attempt to reference the socket address information even though that information has not yet been set. This will cause a crash. This patch adds checks when handling the various media descriptions that ensures the media descriptions are handled only if we have connection information suitable for that media. Thanks to Walter Doekes, OSSO B.V., for reporting, testing, and providing the solution to this problem. (closes issue ASTERISK-22007) Reported by: wdoekes Tested by: wdoekes patches: issueA22007_sdp_without_c_death.patch uploaded by wdoekes (License 5674) * channels/chan_sip.c: AST-2013-004: Fix crash when handling ACK on dialog that has no channel A remote exploitable crash vulnerability exists in the SIP channel driver if an ACK with SDP is received after the channel has been terminated. The handling code incorrectly assumed that the channel would always be present. This patch adds a check such that the SDP will only be parsed and applied if Asterisk has a channel present that is associated with the dialog. Note that the patch being applied was modified only slightly from the patch provided by Walter Doekes of OSSO B.V. (closes issue ASTERISK-21064) Reported by: Colin Cuthbertson Tested by: wdoekes, Colin Cutherbertson patches: issueA21064_fix.patch uploaded by wdoekes (License 5674) 2013-08-23 15:34 +0000 [r397525] Richard Mudgett * include/asterisk/astmm.h, main/logger.c, main/utils.c, include/asterisk/lock.h, main/astmm.c, channels/sig_pri.c, main/astobj2.c, include/asterisk/logger.h, main/lock.c, include/asterisk/utils.h: Fix memory corruption when trying to get "core show locks". Review https://reviewboard.asterisk.org/r/2580/ tried to fix the mismatch in memory pools but had a math error determining the buffer size and didn't address other similar memory pool mismatches. * Effectively reverted the previous patch to go in the same direction as trunk for the returned memory pool of ast_bt_get_symbols(). * Fixed memory leak in ast_bt_get_symbols() when BETTER_BACKTRACES is defined. * Fixed some formatting in ast_bt_get_symbols(). * Fixed sig_pri.c freeing memory allocated by libpri when MALLOC_DEBUG is enabled. * Fixed __dump_backtrace() freeing memory from ast_bt_get_symbols() when MALLOC_DEBUG is enabled. * Moved __dump_backtrace() because of compile issues with the utils directory. (closes issue ASTERISK-22221) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/2778/ 2013-08-22 08:19 +0000 [r397377] Walter Doekes * default.exports, main/asterisk.exports.in: Add _IO_stdin_used in version-script to fix SIGBUSes on Sparc. The --version-script,asterisk.exports linker flag (and the module exports) didn't provide _IO_stdin_used in the list of exported symbols. That causes some kind of libc compatibility mode to kick in, where stdio file structures (stdout/stderr) land somewhere else. In the case of the Sparc, they landed on misaligned memory. This became apparent first after r376428 (Reorder startup sequence) when a lot of ast_log's were replaced with fprintf's. Writing to stderr triggered a SIGBUS. (Compared to x86 and amd64 architectures, the Sparc is very picky about memory alignment.) (issue ASTERISK-21763) (issue ASTERISK-21665) Reported by: Jeremy Kister Review: https://reviewboard.asterisk.org/r/2760/ 2013-08-21 17:00 +0000 [r397308] David M. Lee * main/http.c: Complete http_shutdown. This patch frees up some resources allocated in http.c. * tcp listeners stopped * tls settings freed * uri redirects freed * unregister internal http.c uri's (closes issue ASTERISK-22237) Reported by: Corey Farrell Patches: http.patch uploaded by Corey Farrell (license 5909) 2013-08-21 14:56 +0000 [r397256] Matthew Jordan * include/asterisk/frame.h: Set 14400 as the default max bit rate if T38MaxBitRate is not specified If an endpoint fails to include the T38MaxBitRate attribute during negotiation, Asterisk will negotiate a bit rate of 2400 instead of the ITU recommended bit rate of 14400. This patch fixes this by making AST_T38_RATE_14400 the 'default' value of the enum by assigning it a value of 0, such that if an endpoint fails to include the attribute, the default will be 14400. Note that Walter Doekes included the nice comment in frame.h about why we are purposefully assigning AST_T38_RATE_14400 a value of 0. (closes issue ASTERISK-22275) Reported by: Andreas Steinmetz patches: fax-fix.patch uploaded by anstein (License 6523) 2013-08-21 02:09 +0000 [r397204] Michael L. Young * channels/chan_sip.c: Fix Not Storing Current Incoming Recv Address In 1.8, r384779 introduced a regression by retrieving an old dialog and keeping the old recv address since recv was already set. This has caused a problem when a proxy is involved since responses to incoming requests from the proxy server, after an outbound call is established, are never sent to the correct recv address. In 11, r382322 introduced this regression. The fix is to revert that change and always store the recv address on incoming requests. Thank you Walter Doekes for helping to point out this error and Mark Michelson for your input/review of the fix. (closes issue ASTERISK-22071) Reported by: Alex Zarubin Tested by: Alex Zarubin, Karsten Wemheuer Patches: asterisk-22071-store-recvd-address.diff by Michael L. Young (license 5026) 2013-08-20 17:40 +0000 [r397112-397156] Mark Michelson * channels/chan_sip.c: Remove REF_DEBUG definition. * channels/sip/dialplan_functions.c, channels/chan_sip.c: Fix refcounting of sip_pvt in test_sip_rtpqos test and unlink it from the list of pvts. (closes issue ASTERISK-22248) reported by Corey Farrell patches: test_sip_rtpqos.patch uploaded by Corey Farrell (license #5909) 2013-08-20 15:26 +0000 [r397033-397106] Kinsey Moore * main/threadstorage.c, main/astfd.c: Unregister CLI commands on exit This patch ensures that CLI commands enabled by DEBUG_FD_LEAKS and DEBUG_THREADLOCALS are cleaned up properly on exit. (closes issue ASTERISK-22238) Reported by: Corey Farrell Tested by: Corey Farrell Patches: debug_cli_unregister.patch uploaded by Corey Farrell * main/xmldoc.c: Fix xmldoc memory leak This fixes a single-attribute memory leak that was occurring when the "required" attribute was not true. (closes issue ASTERISK-22249) Reported by: Corey Farrell Tested by: Corey Farrell Patches: xmldoc-free_attr_required.patch uploaded by Corey Farrell * main/cel.c: Protect CEL from an invalid config on reload This patch fixes CEL to properly handle an invalid config on reload. (closes issue ASTERISK-22259) Reported by: Corey Farrell Tested by: Corey Farrell Patches: cel-config.patch uploaded by Corey Farrell 2013-08-20 11:46 +0000 [r396994] Walter Doekes * configs/h323.conf.sample, configs/sip.conf.sample: Add "autoframing" option to sip.conf.sample and h323.conf.sample. The autoframing option was added to chan_sip.c in r43243 (mogorman, 2006-09-19 01:32:57), but never made its way into the sample configs. Review: https://reviewboard.asterisk.org/r/2768/ 2013-08-20 01:17 +0000 [r396958] Matthew Jordan * main/data.c: Fix invalid access to disposed memory in main/data unit test It is not safe to iterate over a macro'd list of ao2 objects, deref them such that the item's destructor is called, and leave them in the list. The list macro to iterate over items requires the item to be a valid allocated object in order to proceed to the next item; with MALLOC_DEBUG on the corruption of the linked list is caught in the crash. This patch fixes the invalid access to free'd memory by removing the ao2 item from the list before de-refing it. Note that this is a backport of r396915 from Asterisk trunk. 2013-08-15 16:21 +0000 [r396745] Kinsey Moore * main/cli.c, main/asterisk.c: Remove leading spaces from the CLI command before parsing If you've mistakenly put a space before typing in a command, the leading space will be included as part of the command, and the command parser will not find the corresponding command. This patch rectifies that situation by stripping the leading spaces on commands. Review: https://reviewboard.asterisk.org/r/2709/ Patch-by: Tilghman Lesher 2013-08-14 19:05 +0000 [r396619-396656] Joshua Colp * tests/test_hashtab_thrash.c: Tweak comment for why usleep is used. * tests/test_hashtab_thrash.c: Tweak test_hashtab_thrash test to allow the critical threads to execute. Depending on certain conditions it was possible for the hashtab counting thread to starve other threads, preventing them from executing in the expected fashion. This change adds a sleep to allow the others to do what they need to do. While this doesn't thrash the hashtab as much as previously, it at least works. (closes issue ASTERISK-22276) Reported by: Matt Jordan 2013-08-13 18:44 +0000 [r396579-396582] Walter Doekes * channels/chan_sip.c: chan_sip: Convert 'just did sched_add waitid...' from warning to debug message. Patches: reviewboard-2377.patch uploaded by Paul Belanger Review: https://reviewboard.asterisk.org/r/2377/ * channels/chan_sip.c: chan_sip: Fix IP-addr in warning when rejecting a contact ACL. Patches: reviewboard-2155.patch uploaded by Paul Belanger Review: https://reviewboard.asterisk.org/r/2155/ 2013-08-08 20:14 +0000 [r396427] Walter Doekes * main/logger.c, main/utils.c, main/astobj2.c, include/asterisk/logger.h: Consistent memory allocation by ast_bt_get_symbols. Always use ast_alloc/ast_free. This is handled differently in trunk (r391012). Review: https://reviewboard.asterisk.org/r/2580/ 2013-08-06 08:14 +0000 [r396279] Walter Doekes * pbx/pbx_dundi.c, utils/extconf.c, apps/app_stack.c, apps/app_playback.c, funcs/func_global.c, main/cdr.c, pbx/pbx_loopback.c, main/pbx.c, funcs/func_strings.c: Check result of ast_var_assign() calls for memory allocation failure. We try to keep the system running even when all available memory is spent. Review: https://reviewboard.asterisk.org/r/2734/ 2013-08-05 20:17 +0000 [r396196-396240] Michael L. Young * channels/chan_sip.c: Fix Registration Failure When A Peer And TLS Are Used If a peer is used in a register line and TLS is defined as the transport, the registration fails since the transport on the dialog is never set properly resulting in UDP being used instead of TLS. This patch sets the dialog's transport based on the transport that was defined in the register line. If the register line does not specify a transport, the parsing function for the register line always defaults back to UDP. (closes issue ASTERISK-21964) Reported by: Doug Bailey Tested by: Doug Bailey Patches: asterisk-21964-set-reg-dialog-transport.diff by Michael L. Young (license 5026) * channels/chan_sip.c: Restore Extra Line Break Between Peers When Running AMI Action SIPPeers The commit (r387133) for fixing ASTERISK-21466 accidentally removed an extra line break between the peers returned by the AMI action SIPPeers. This results in some parsers breaking because they expect this extra line break. This patch restores that extra line break. (closes issue ASTERISK-22239) Reported by: Jacek Konieczny Tested by: Jacek Konieczny, Michael L. Young Patches: asterisk-ami_sippeers_separator.patch by Jacek Konieczny (license 6298) * UPGRADE.txt: Adding a note to UPGRADE.txt about a change made to res_agi in order to indicate when streaming an audio file fails like it is done in other parts of the code to indicate an error. Note was requested by Paul Belanger: http://lists.digium.com/pipermail/asterisk-dev/2013-July/061420.html (related to issue ASTERISK-21903) 2013-07-22 13:49 +0000 [r394886-395032] Matthew Jordan * main/asterisk.c: Update copyright year to 2013 in asterisk.c; some whitespace fixes (closes issue ASTERISK-22179) Reported by: Malcolm Davenport * funcs/func_channel.c: Clean up documentation This patch cleans up documentation in func_channel for the following items: * rtpsource * secure_signaling * secure_media (closes issue ASTERISK-20969) Reported by: snuffy patches: func_chan-update.diff uploaded by snuffy (License 5024) * configs/indications.conf.sample: Provide proper ring tone in indications.conf for Malaysia The ring tone provided in the sample indications.conf was incorrect. This patch modifies the sample ring tone to be what it should: ring = 425/400,0/200,425/400,0/2000 This brings it in line with the tone definition in DAHDI 2.7.0. (zonedata.c) (closes issue ASTERISK-21997) Reported by: Filip Jenicek patches: malaysia_ring.patch uploaded by phill (License 6277) * main/http.c: Tolerate presence of RFC2965 Cookie2 header by ignoring it This patch modifies parsing of cookies in Asterisk's http server by doing an explicit comparison of the "Cookie" header instead of looking at the first 6 characters to determine if the header is a cookie header. This avoids parsing "Cookie2" headers and overwriting the previously parsed "Cookie" header. Note that we probably should be appending the cookies in each "Cookie" header to the parsed results; however, while clients can send multiple cookie headers they never really do. While this patch doesn't improve Asterisk's behavior in that regard, it shouldn't make it any worse either. Note that the solution in this patch was pointed out on the issue by the issue reporter, Stuart Henderson. (closes issue ASTERISK-21789) Reported by: Stuart Henderson Tested by: mjordan, Stuart Henderson * contrib/realtime/postgresql/realtime.sql: Update PostgreSQL realtime scripts with schema for queue_log table This patch updates the realtime SQL scripts with an entry that will create the queue_log table. This brings the PostgreSQL scripts inline with the MySQL scripts, with respect to what tables they will create. (closes issue ASTERISK-21021) Reported by: Eugene patches: queue_log.sql uploaded by varnav (license 6360) * configs/iax.conf.sample: Document connectedline parameter for chan_iax2 The connectedline parameter for a chan_iax2 peer was undocumented. This patch documents the options in the sample configuration file. (closes issue ASTERISK-21953) Reported by: Birger "WIMPy" Harzenetter 2013-07-18 12:51 +0000 [r394640] Michael L. Young * res/res_agi.c: Properly indicate failure to open an audio stream in res_agi If there is an error streaming an audio file, the current return status makes it difficult for an AGI script to determine that there was an error with the audio file. This patches changes the result to return -1 and the function returns RESULT_FAILURE instead of RESULT_SUCCESS. From looking at other parts of res_agi, this would appear to be the proper way to handle an error. (closes issue ASTERISK-21903) Reported by: Ariel Wainer Tested by: Ariel Wainer Patches: asterisk-21903-return-stream-res_1.8.diff by Michael L. Young (license 5026) Review: https://reviewboard.asterisk.org/r/2625/ 2013-07-14 01:53 +0000 [r394302] Matthew Jordan * funcs/func_strings.c: Clarify documentation for function PASSTHRU It is not apparent to the average user that the PASSTHRU function should not be passed as ${PASSTHRU(string)} but just as PASSTHRU(string) to functions which take a variable name and not its contents. This patch clarifies the behavior in the documentation and provides an example. (closes issue ASTERISK-21717) Reported by: Richard Miller patches: func_strings.diff uploaded by Richard Miller (license 5685) 2013-07-11 16:25 +0000 [r394106] Moises Silva * channels/chan_dahdi.c: Fix a longstanding issue with MFC-R2 configuration that prevented users from mixing different variants or general MFC-R2 settings within the same E1 line. Most users do not have a problem with this since MFC-R2 lines are usually fractional E1s, or the whole E1 has the same country variant and R2 settings. In Venezuela however is common to have inbound MFC-R2 and outbound DTMF-R2 within the same E1. This fix now properly parses the chan_dahdi.conf file to generate a new openr2 context every time a new channel => section is found and the configuration was changed. (closes issue ASTERISK-21117) Reported by: Rafael Angulo Related Elastix issue: http://bugs.elastix.org/view.php?id=1612 2013-07-10 01:41 +0000 [r393928] Russell Bryant * configs/sla.conf.sample, include/asterisk/utils.h, apps/app_meetme.c: astobj2-ify the SLA code The SLA code within app_meetme was written before asotbj2 had been merged into Asterisk. Worse, support for reloads did not exist at first and was added later as a bolt-on feature. I knew at the time that reloading was not safe at all while SLA was in use, so the reload would be queued up to execute when the system was idle. Unfortunately, this approach was still prone to errors beyond the fact that this was the only place in Asterisk where configuration was not reloaded instantly when requested. This patch converts various SLA objects to be reference counted objects using astobj2. This allows reloads to be processed while the system is in use. The code ensures that the objects will not disappear while one of the other threads is using them. However, they will be immediately removed from the global trunk and station containers so no new calls will use them if removed from configuration. Review: https://reviewboard.asterisk.org/r/2581/ 2013-07-03 23:27 +0000 [r393627] Richard Mudgett * channels/chan_dahdi.c: chan_dahdi: Fix segfault reloading chan_dahdi when round robin is used. * Clear round_robin[] in dahdi_restart(). (closes issue ASTERISK-21847) Reported by: Ivo Andonov Patches: jira_asterisk_21847_v1.8.patch (license #5621) patch uploaded by rmudgett 2013-06-14 16:14 +0000 [r391778] Jonathan Rose * apps/app_mixmonitor.c: app_mixmonitor: Fix crashes caused by unloading app_mixmonitor Unloading app_mixmonitor while active mixmonitors were running would cause a segfault. This patch fixes that by making it impossible to unload app_mixmonitor while mixmonitors are active. Review: https://reviewboard.asterisk.org/r/2624/ 2013-06-12 02:19 +0000 [r391489] Matthew Jordan * main/loader.c: Fix memory leak while loading priority modules When we load a module with the LOAD_PRIORITY flag, we remove its entry from the load order list. Unfortunately, we don't free the memory associated with entry in the list. This patch corrects that and properly frees the memory for the module in the list. 2013-06-11 08:03 +0000 [r391333] Alec L Davis * channels/chan_iax2.c: IAX2: Transfer Reject: Lock bridgecallno before touching it, refactor 1). When touching the bridgecallno, we need to lock it. 2). Remove magic number '0' and replace with TRANSFER_NONE. 3). Exit early if no bridgecallno. 4). Reduce indentation. Reported by: alecdavis Tested by: alecdavis alecdavis (license 585) Review https://reviewboard.asterisk.org/r/2613/ 2013-07-15 Asterisk Development Team * Asterisk 1.8.23.0 Released. 2013-07-12 Asterisk Development Team * Asterisk 1.8.23.0-rc2 Released. * Properly lock and safely handle a transfer failure in IAX2 When touching the bridgecallno, we need to lock it - otherwise a race condition can occur. This patch does the proper locking of the bridgecallno before modifying its state. 2013-06-10 Asterisk Development Team * Asterisk 1.8.23.0-rc1 Released. 2013-06-10 14:15 +0000 [r391215] Matthew Jordan * UPGRADE.txt, apps/app_queue.c, configs/queues.conf.sample: Add announce-to-first-user option for app_queue In r386792, the ability to play prompts to the first caller in a call queue was added. While this is arguably a bug fix for those who expect the first caller to continue receiving prompts while the agent is dialed, it has the side effect of preventing the first caller from hearing the agent immediately upon bridging. This may not be a problem for those who really want this option, but for those who didn't care whether or not the first caller in queue heard their position, it was an issue. This patch disables the ability for the first caller in the queue to hear prompts and adds a new option, announce-to-first-user, to queues.conf. Those who the behavior can enable it by setting this value to True. Note that if we ever implement the ability to have the prompts be stopped upon bridging, this option can be removed. (closes issue ASTERISK-21782) Reported by: Remi Quezada 2013-06-10 09:30 +0000 [r391062-391143] Alec L Davis * channels/chan_iax2.c: chan_iax2: nativebridge refactor, missed unlock bridgecallno * channels/chan_iax2.c: fix bad edit after conflict resolution * channels/chan_iax2.c: IAX2: refactor nativebridge transfer remove triple checking of iaxs[fr->callno]->transferring reduce indentation. Reported by: alecdavis Tested by: alecdavis alecdavis (license 585) Review https://reviewboard.asterisk.org/r/2602/ * channels/chan_iax2.c: IAX2: fix race condition with nativebridge transfers. 1). When touching the bridgecallno, we need to lock it. 2). stop_stuff() which calls iax2_destroy_helper() Assumes the lock on the pvt is already held, when iax2_destroy_helper() is called. Thus we need to lock the bridgecallno pvt before we call stop_stuff(iaxs[fr->callno]->bridgecallno); 3). When evaluating the state of 'callno->transferring' of the current leg, we can't change it to READY unless the bridgecallno is locked. Why, if we are interrupted by the other call leg before 'transferring = TRANSFER_RELEASED', the interrupt will find that it is READY and that the bridgecallno is also READY so Releases the legs. (closes issue ASTERISK-21409) Reported by: alecdavis Tested by: alecdavis alecdavis (license 585) Review https://reviewboard.asterisk.org/r/2594/ 2013-05-31 08:10 +0000 [r390181] Alexandr Anikin * addons/chan_ooh323.c: reject call attempts when gatekeeper is configured but not registered (closes issue ASTERISK-21800) Reported by: Dmitry Melekhov Patches: ASTERISK-21800-1.patch Tested by: Dmitry Melekhov 2013-05-29 20:10 +0000 [r390044] Richard Mudgett * main/channel.c: Fix segfault when dealing with chan_agent channels. Check the returned bridged pointer for NULL to avoid a crash. It looks like chan_agent is returning a NULL pointer when it probably should be returning a pointer to the channel the Agent channel is pretending to be. (closes issue ASTERISK-21793) Reported by: Rodrigo P. Telles Patches: jira_asterisk_21793_v1.8.patch (license #5621) patch uploaded by rmudgett Tested by: Rodrigo P. Telles 2013-05-28 17:35 +0000 [r389895] Jonathan Rose * main/slinfactory.c: Fix a memory copying bug in slinfactory which was causing mixmonitor issues. Reported by: Michael Walton Tested by: Jonathan Rose Patches: slinfactory.c.ASTERISK-21799.patch uploaded by Michael Walton (license 6502) (closes issue ASTERISK-21799) 2013-05-24 11:42 +0000 [r389676] Matthew Jordan * main/logger.c: Print all logger messages on shutdown When Asterisk shuts down and shuts down the loggin gsubsystem, any messages currently in flight will not get logged. This patch prevents the loop writing messages from breaking out prematurely, such that all of the messages are logged. (closes issue ASTERISK-21716) Reported by: Corey Farrell patches: logger-process-all-messages.patch uploaded by Corey Farrell (license 5909) 2013-05-20 17:43 +0000 [r389244] Jason Parker * /: Add doxygen.log to svn:ignore property. 2013-05-15 15:54 +0000 [r388838] kharwell : * main/lock.c: Fix for segfault in __ast_rwlock_destroy with DEBUG_THREADS If DEBUG_THREADS is enabled __ast_rwlock_destroy causes a segfault while trying to access a possible NULL t->track object. A NULL check has been added before trying to access the memory. (closes issue ASTERISK-21724) Reported by: Corey Farrell Fixed by: Corey Farrell Patches: ast_rwlock_destroy-segv.patch uploaded by Corey Farrell (license 5909) 2013-05-15 12:37 +0000 [r388768] Kinsey Moore * res/res_srtp.c, configure, include/asterisk/autoconfig.h.in, configure.ac: Use srtp_shutdown when available This allows the SRTP library to be shut down properly when the functionality is offered by libsrtp. Review: https://reviewboard.asterisk.org/r/2538/ (closes issue ASTERISK-21719) 2013-05-13 20:34 +0000 [r388596] Kinsey Moore * res/res_srtp.c: Revert r388529 for now Adding the cleanup function needs some deeper thought since it apparently doesn't exist for all variants of libsrtp. 2013-05-13 18:16 +0000 [r388532] Jonathan Rose * main/pbx.c: pbx: Fix lack of cleanup on macrolock and context_table (closes issue ASTERISK-21723) Reported by: Corey Farrell Patches: core-pbx-cleanup.patch uploaded by Correy Farrell (license 5909) 2013-05-13 18:05 +0000 [r388529] Kinsey Moore * res/res_srtp.c: Close libsrtp properly Ensure that libsrtp is shutdown properly when res_srtp is unloaded. (closes issue ASTERISK-21719) Reported by: Corey Farrell Patches: res_srtp-library-shutdown.patch uploaded by Corey Farrell 2013-05-13 14:24 +0000 [r388477] Richard Mudgett * main/manager.c: Fix SendText AMI action to never return non-zero. AMI actions must never return non-zero unless they intend to close the AMI connection. (Which is almost never.) (closes issue ASTERISK-21779) Reported by: Paul Goldbaum 2013-05-10 22:09 +0000 [r388423-388425] Richard Mudgett * channels/misdn/isdn_msg_parser.c: Allow mISDN to send PROGRESS messsage. * Made isdn_msg_parser.c build a progress message with the mandatory progress indicator IE. (The mISDNuser NT state machine rejected sending the incomplete message.) Note: The associated mISDN and mISDNuser patches respectively are viewable here: http://svnview.digium.com/svn/thirdparty?view=rev&rev=200 http://svnview.digium.com/svn/thirdparty?view=rev&rev=201 (closes issue AST-1153) Reported by: Guenther Kelleter Patches: progress-chan_misdn.diff (license #6372) patch uploaded by Guenther Kelleter progress-misdn.diff (license #6372) mISDN patch uploaded by Guenther Kelleter progress-misdnuser.diff (license #6372) mISDNuser patch uploaded by Guenther Kelleter * utils: Add version.c to list of ignored files in the utils directory. 2013-05-10 20:28 +0000 [r388376] Mark Michelson * pbx/pbx_dundi.c: Fix memory leak in pbx_dundi pbx_dundi added an io context without removing it. This caused a memory leak when the module was unloaded. (closes ASTERISK-21718) Reported by Corey Farrell Patches: pbx_dundi-ast_io_remove.patch uploaded by Corey Farrell (License #5909) 2013-05-09 03:58 +0000 [r388111] Michael L. Young * res/res_rtp_asterisk.c: Fix The Payload Being Set On CN Packets And Do Not Set Marker Bit When we send out a CN packet (for instance, in the case of using rtpkeepalives), we are not setting the payload code properly. Also, we are setting the marker bit when we shouldn't be according to RFC 3389, section 4. AST_RTP_CN is not defined by AST_FORMAT codes. Therefore, we should be using ast_rtp_codecs_payload_code() rather than ast_rtp_codecs_payload_lookup(). 11 and trunk already use the appropriate function. * In 1.8, use ast_rtp_codecs_payload_code() * Remove the setting of the marker bit * Fix the debug message by incrementing the seqno after the debug message is set in order to display the correct seqno that was sent out (closes issue ASTERISK-21246) Reported by: Peter Katzmann Tested by: Peter Katzmann, Michael L. Young Patches: asterisk-21246-rtp-cng-payload-error_1.8_v2.diff uploaded by Michael L. Young (license 5026) Review: https://reviewboard.asterisk.org/r/2500/ 2013-05-08 07:17 +0000 [r387875] Alec L Davis * channels/chan_sip.c: chan_sip: NOTIFYs for BLF start queuing up and fail to be sent out after retries fail RFC6665 4.2.2: ... after a failed State NOTIFY transaction remove the subscription The problem is that the State Notify requests rely on the 200OK reponse for pacing control and to not confuse the notify susbsystem. The issue is, the pendinginvite isn't cleared if a response isn't received, thus further notify's are never sent. The solution, follow RFC 6665 4.2.2's 'SHOULD' and remove the subscription after failure. (closes issue ASTERISK-21677) Reported by: Dan Martens Tested by: Dan Martens, David Brillert, alecdavis alecdavis (license 585) Review https://reviewboard.asterisk.org/r/2475/ 2013-05-06 15:52 +0000 [r387688] Russell Bryant * apps/app_meetme.c: Make SLA reload more paranoid. Reload support was originally not included for SLA. It was added later, but in a fairly non-traditional way. It basically sets a flag indicating that a reload is pending, and then waits for a time where it thinks everything SLA related is idle and unused, and *then* executes the reload. It does this because the reload process is destructive. It starts by throwing everything away and starting over. There are a number of problems with this approach. One of them is that the check to see if anything in use was incomplete. This patch makes it more complete and thus less likely for a crash to occur during reload processing. However, this approach still has problems so some much more significant reworking of this code will need to come in as a next step. Patch credit and testing by CoreDial, LLC. 2013-05-02 17:11 +0000 [r387421] Matthew Jordan * utils/Makefile: Update utils Makefile to handle r387294 Alec's patch that added the Asterisk version to 'core show locks' angered the items in utils, as they exist somewhat outside of the Asterisk build system. Some day, this Makefile should get nuked from high orbit, but for now, include version.c in its list of stuff to pile in. 2013-05-02 07:53 +0000 [r387294-387344] Alec L Davis * channels/sip/include/sip.h, channels/chan_sip.c: chan_sip: Session-Expires: Set timer to correctly expire at (~2/3) of the interval when not the refresher RFC 4028 Section 10 if the side not performing refreshes does not receive a session refresh request before the session expiration, it SHOULD send a BYE to terminate the session, slightly before the session expiration. The minimum of 32 seconds and one third of the session interval is RECOMMENDED. Prior to this asterisk would refresh at 1/2 the Session-Expires interval, or if the remote device was the refresher, asterisk would timeout at interval end. Now, when not refresher, timeout as per RFC noted above. (closes issue ASTERISK-21742) Reported by: alecdavis Tested by: alecdavis alecdavis (license 585) Review https://reviewboard.asterisk.org/r/2488/ * channels/chan_sip.c: chan_sip: Honor Session-Expires in 200OK response when it's a RE-INVITE when asterisk is the refresher. RFC 4028 Section 7.2 "UACs MUST be prepared to receive a Session-Expires header field in a response, even if none were present in the request." What changed After ASTERISK-20787, inbound calls to asterisk with no Session-Expires in the INVITE are now are offered a Session-Expires (1800 asterisk default) in the response, with asterisk as the refresher. Symptom: After 900 seconds (asterisk default refresher period 1800), asterisk RE-INVITEs the device, the device may respond with a much lower Session-Expires (180 in our case) value that it is now using. Asterisk ignores this response, as it's deemed both an INBOUND CALL, and a RE-INVITE. After 180 seconds the device times out and sends BYE (hangs up), asterisk is still working with the refresher period of 1800 as it ignored the 'Session Expires: 180' in the previous 200OK response. Fix: handle_response_invite() when 200OK, remove check for outbound and reinvite. (closes issue ASTERISK-21664) Reported by: alecdavis Tested by: alecdavis alecdavis (license 585) Review https://reviewboard.asterisk.org/r/2463/ * channels/chan_dahdi.c: chan_dahdi: fix lower bound check with -ve integer conversion from a float Lower bound of a 16bit signed int is -32768 not -32767 (closes issue ASTERISK-21744) Reported by: alecdavis Tested by: alecdavis alecdavis (license 585) * main/utils.c: Add Asterisk Version to core show locks Assist with reporting 'core show locks' when submitting bug reports. Example below: =========================== == SVN-branch-1.8-... == Currently Held Locks =========================== (closes issue ASTERISK-21743) Reported by: alecdavis Tested by: alecdavis alecdavis (license 585) 2013-05-01 21:15 +0000 [r387036-387213] Matthew Jordan * res/res_rtp_asterisk.c: Clear the DTMF sending digit tracking on off nominal paths In certain situations, when the RTP engine goes to send a DTMF end digit it may be in a situation where the remote address is no longer available, or the digit that was supposed to be sent is invalid. In such cases, we need to clear the RTP counters appropriately. Otherwise, when the RTP source is set again, we'll continue to think that we're in the middle of sending a DTMF digit, which can confuse the remote party (signficantly). (closes issue ASTERISK-21522) Reported by: Corey Farrell patches: rtp_dtmf_process_end.patch uploaded by Corey Farrell (License 5909) * channels/chan_sip.c: Prevent crash in 'sip show peers' when the number of peers on a system is large When you have lots of SIP peers (according to the issue reporter, around 3500), the 'sip show peers' CLI command or AMI action can crash due to a poorly placed string duplication that occurs on the stack. This patch refactors the command to not allocate the string on the stack, and handles the formatting of a single peer in a separate function call. (closes issue ASTERISK-21466) Reported by: Guillaume Knispel patches: fix_sip_show_peers_stack_overflow_asterisk_11.3.0-v2.patch uploaded by gknispel (License 6492) * main/features.c: Fix CDR not being created during an externally initiated blind transfer Way back when in the dark days of Asterisk 1.8.9, blind transferring a call in a context that included the 'h' extension would inadvertently execute the hangup code logic on the transferred channel. This was a "bad thing". The fix was to properly check for the softhangup flags on the channel and only execute the 'h' extension logic (and, in later versions, hangup handler logic) if the channel was well and truly dead (Jim). Unfortunately, CDRs are fickle. Setting the softhangup flag when we detected that the channel was leaving the bridge (but not to die) caused some crucial snippet of CDR code, lying in ambush in the middle of the bridging code, to not get executed. This had the effect of blowing away one of the CDRs that is typically created during a blind transfer. While we live and die by the adage "don't touch CDRs in release branches", this was our bad. The attached patch restores the CDR behavior, and still manages to not run the 'h' extension during a blind transfer (at least not when it's supposed to). Thanks to Steve Davies for diagnosing this and providing a fix. Review: https://reviewboard.asterisk.org/r/2476 (closes issue ASTERISK-21394) Reported by: Ishfaq Malik Tested by: Ishfaq Malik, mjordan patches: fix_missing_blindXfer_cdr2 uploaded by one47 (License 5012) 2013-04-30 13:45 +0000 [r386929] Sean Bright * include/asterisk/utils.h: Use the proper lower bound when doing saturation arithmetic. 16 bit signed integers have a range of [-32768, 32768). The existing code was using the interval (-32768, 32768) instead. This patch fixes that. Review: https://reviewboard.asterisk.org/r/2479/ 2013-04-29 23:34 +0000 [r386877] Rusty Newton * sounds/Makefile: Modifying sounds/Makefile to pull down 1.4.24 core sounds 1.4.24 core sounds includes a full set of Italian prompts for core sounds and a fix for the missing voicemail prompts in the Russian language. (closes issue ASTERISK-19431) (closes issue ASTERISK-19721) 2013-04-29 08:36 +0000 [r386792] Olle Johansson * CHANGES, apps/app_queue.c: Play periodic prompst for first call in a call queue Review: https://reviewboard.asterisk.org/r/2263/ 2013-04-26 21:26 +0000 [r386641-386672] Matthew Jordan * main/config.c: Clean up memory leak in config file on off nominal paths when glob is allowed If a system allows for its usage, Asterisk will use glob to help parse Asterisk .conf files. The config file loading routine was leaking the memory allocated by the glob() routine when the config file was in an unmodified or invalid state. This patch properly calls globfree in those off nominal paths. (closes issue ASTERISK-21412) Reported by: Corey Farrell patches: config_glob_leak.patch uploaded by Corey Farrell (license 5909) * main/features.c: Clean up resources in features on exit This patch cleans up two things features: * It properly unregisters the CLI commands that features registered * It cancels and performs a pthread_join on the created parking thread. This not only properly joins a non-detached thread, but also prevents disposing of the parking lots prior to the parking thread completely exiting. (closes issue ASTERISK-21407) Reported by: Corey Farrell patches: features_shutdown-r2.patch uploaded by Corey Farrell (License 5909) 2013-04-25 02:43 +0000 [r386483] Michael L. Young * channels/chan_sip.c: Change Case On Forcerport For Consistency * Change "ForcerPort" to "Forcerport" to match everywhere else it is displayed 2013-04-22 16:10 +0000 [r386256] Richard Mudgett * main/channel.c: Fix crash when AMI redirect action redirects two channels out of a bridge. The two party bridging loops were changing the bridge peer pointers without the channel locks held. Thus when ast_channel_massquerade() tested and used the pointer there is a small window of opportunity for the pointers to become NULL even though the masquerade code has the channels locked. (closes issue ASTERISK-21356) Reported by: William luke Patches: jira_asterisk_21356_v11.patch (license #5621) patch uploaded by rmudgett Tested by: William luke 2013-04-19 15:59 +0000 [r386109] Matthew Jordan * res/res_timing_pthread.c: Prevent res_timing_pthread from blocking callers There were several reports of deadlock when using res_timing_pthread. Backtraces indicated that one thread was blocked waiting for the write to the pipe to complete and this thread held the container lock for the timers. Therefore any thread that wanted to create a new timer or read an existing timer would block waiting for either the timer lock or the container lock and deadlock ensued. This patch changes the way the pipe is used to eliminate this source of deadlocks: 1) The pipe is placed in non-blocking mode so that it would never block even if the following changes someone fail... 2) Instead of writing bytes into the pipe for each "tick" that's fired the pipe now has two states--signaled and unsignaled. If signaled, the pipe is hot and any pollers of the read side filedescriptor will be woken up. If unsigned the pipe is idle. This eliminates even the chance of filling up the pipe and reduces the potential overhead of calling unnecessary writes. 3) Since we're tracking the signaled / unsignaled state, we can eliminate the exta poll system call for every firing because we know that there is data to be read. (closes issue ASTERISK-21389) Reported by: Matt Jordan Tested by: Shaun Ruffell, Matt Jordan, Tony Lewis patches: 0001-res_timing_pthread-Reduce-probability-of-deadlocking.patch uploaded by sruffell (License 5417) (closes issue ASTERISK-19754) Reported by: Nikola Ciprich (closes issue ASTERISK-20577) Reported by: Kien Kennedy (closes issue ASTERISK-17436) Reported by: Henry Fernandes (closes issue ASTERISK-17467) Reported by: isrl (closes issue ASTERISK-17458) Reported by: isrl Review: https://reviewboard.asterisk.org/r/2441/ 2013-04-19 05:18 +0000 [r386049] David M. Lee * main/cli.c: cli.c: Properly initialize debug_modules and verbose_modules. This avoids some lock errors on the core set {debug,verbose} commands. 2013-04-16 23:11 +0000 [r385916] Alec L Davis * main/devicestate.c, res/res_jabber.c: Distributed Device State broken at sites using res_xmpp or res_jabber where Secuity Advisory AST-2012-015 is inplace res_jabber/res_xmpp were not adding AST_EVENT_IE_CACHABLE to the event as each message came in, then devstate_change_collector_cb() was unable to find AST_EVENT_IE_CACHABLE in the event, so defaulted incorrectly to AST_DEVSTATE_NOT_CACHABLE. (issue ASTERISK-20175) (closes issue ASTERISK-21429) (closes issue ASTERISK-21069) (closes issue ASTERISK-21164) Reported by: alecdavis Tested by: alecdavis alecdavis (license 585) Review https://reviewboard.asterisk.org/r/2452/ 2013-04-15 17:07 +0000 [r385745] Jason Parker * Makefile: Don't unnecessarily rebuild things on every run of 'make'. Review: https://reviewboard.asterisk.org/r/2449/ 2013-04-15 14:38 +0000 [r385683] David M. Lee * BSDmakefile, contrib/realtime/mysql/voicemail_data.sql, build_tools/sha1sum-sh, res/res_mutestream.c, configs/res_curl.conf.sample, tests/test_func_file.c, include/asterisk/select.h, res/res_rtp_multicast.c, include/asterisk/bridging_technology.h, tests/test_locale.c, include/asterisk/bridging_features.h, doc/Makefile, tests/test_poll.c, res/res_timing_kqueue.c, contrib/realtime/mysql/musiconhold.sql, contrib/realtime/mysql/queue_log.sql, channels/sig_ss7.c, channels/sig_ss7.h, channels/chan_multicast_rtp.c, tests/test_expr.c, apps/app_saycounted.c, contrib/realtime/mysql/voicemail_messages.sql: Fix the svn:keywords property on several files. Normally I think keyword expansion is silly, but the one time it would have been good, it didn't work because the property had quotes in it. This patch fixes obviously busted svn:keywords properties. 2013-04-14 02:58 +0000 [r385633-385636] Matthew Jordan * res/res_rtp_multicast.c: Calculate the timestamp for outbound RTP if we don't have timing information This patch calculates the timestamp for outbound RTP when we don't have timing information. This uses the same approach in res_rtp_asterisk. Thanks to both Pietro and Tzafrir for providing patches. (closes issue ASTERISK-19883) Reported by: Giacomo Trovato Tested by: Pietro Bertera, Tzafrir Cohen patches: rtp-timestamp-1.8.patch uploaded by tzafrir (License 5035) rtp-timestamp.patch uploaded by pbertera (License 5943) * channels/chan_alsa.c: Don't attempt to create a voice frame on a read error Prior to this patch, a read error in snd_pcm_readi would still be treated as a nominal result when constructing a voice frame from the expected data. Since the value returned is negative, as opposed to the number of samples read, this could result in a crash. With this patch, we now return a null frame when a read error is detected. Note that the patch on ASTERISK-21329 was modified slightly for this commit, in that we bail immediately on detecting the read error, rather than bypassing the construction of the voice frame. (closes issue ASTERISK-21329) Reported by: Keiichiro Kawasaki patches: chan_alsa.diff uploaded by kawasaki (License 6489) 2013-04-12 22:34 +0000 [r385551-385593] Michael L. Young * apps/app_queue.c: Fix Manager Segfault When app_queue Is Unloaded When app_queue is unloaded, some manager commands are not being unregistered which result in a segfault. This patch corrects this. (closes issue ASTERISK-21397) Reported by: Peter Katzmann, Corey Farrell Tested by: Corey Farrell Patches: asterisk-21397-missing-unreg-manager-cmd_1.8.diff Michael L. Young (license 5026) asterisk-21397-missing-unreg-manager-cmd_11.diff Michael L. Young (license 5026) Review: https://reviewboard.asterisk.org/r/2444/ * apps/app_voicemail.c: Fix app_voicemail Segfault And A Few Memory Leaks The original report was that app_voicemail would crash. This was caused by ast_config_load() returning CONFIG_STATUS_FILEINVALID but no checks being performed for that return status. After adding the initial patch to fix this issue, Jaco Kroon (jkroon) added some fixes to memory leaks he had discovered. During review, Walter Doekes (wdoekes) suggested adding a helper function in order to determine if we had a valid configuration or not. This patch does the following: * Creates a helper function to check if the configuration is valid * Adds calls to the new helper function where appropiate * Fixes memory leaks where the code returned without running ast_config_destroy() on the configuration that was loaded (closes issue ASTERISK-21302) Reported by: Jaco Kroon Tested by: Jaco Kroon, Michael L. Young Patches: asterisk-11.3.0-app_voicemail-ast_config-fixes.patch Jaco Kroon (license 5671) asterisk-21302-valid_cfg_and_mem_leaks_v3-1.8.diff Michael L. Young (license 5026) Review: https://reviewboard.asterisk.org/r/2443/ 2013-04-12 08:46 +0000 [r385402-385429] Alec L Davis * channels/chan_iax2.c: IAX2 defer_full_frames fail to get sent Ensure iax2_process_thread is signalled when a deferred frame is queued to it. (issue ASTERISK-18827) Reported by: alecdavis Tested by: alecdavis alecdavis (license 585) Review https://reviewboard.asterisk.org/r/2426/ * channels/chan_iax2.c: IAX2, prevent network thread starting before all helper threads are ready On startup, it's possible for a frame to arrive before the processing threads were ready. In iax2_process_thread() the first pass through falls into ast_cond_wait, should a frame arrive before we are at ast_cond_wait, the signal will be ignored. The result iax2_process_thread stays at ast_cond_wait forever, with deferred frames being queued. Fix: When creating initial idle iax2_process_threads, wait for init_cond to be signalled after each thread is started. (issue ASTERISK-18827) Reported by: alecdavis Tested by: alecdavis alecdavis (license 585) Review https://reviewboard.asterisk.org/r/2427/ 2013-04-10 14:22 +0000 [r385170-385190] Matthew Jordan * res/res_config_ldap.c: Use LDAP memory management functions instead of Asterisk's When MALLOC_DEBUG is enabled with res_config_ldap, issues (munmap_chunk: invalid pointer errors) can occur as the memory is being allocated with Asterisk's wrappers around malloc/calloc/free/strdup, as opposed to the LDAP library's wrappers. This patch uses the LDAP library's wrappers where appropriate, so that compiling with MALLOC_DEBUG doesn't cause more problems than it solves. Note that the patch listed below was modified slightly for this commit to account for some additional memory allocation/deallocations. (closes issue ASTERISK-17386) Reported by: John Covert Tested by: Andrew Latham patches: issue18789-1.8-r316873.patch uploaded by seanbright (License 5060) * channels/chan_sip.c: Fix crash in chan_sip when a core initiated op occurs at the same time as a BYE When a BYE request is processed in chan_sip, the current SIP dialog is detached from its associated Asterisk channel structure. The tech_pvt pointer in the channel object is set to NULL, and the dialog persists for an RFC mandated period of time to handle re-transmits. While this process occurs, the channel is locked (which is good). Unfortunately, operations that are initiated externally have no way of knowing that the channel they've just obtained (which is still valid) and that they are attempting to lock is about to have its tech_pvt pointer removed. By the time they obtain the channel lock and call the channel technology callback, the tech_pvt is NULL. This patch adds a few checks to some channel callbacks that make sure the tech_pvt isn't NULL before using it. Prime offenders were the DTMF digit callbacks, which would crash if AMI initiated a DTMF on the channel at the same time as a BYE was received from the UA. This patch also adds checks on sip_transfer (as AMI can also cause a callback into this function), as well as sip_indicate (as lots of things can queue an indication onto a channel). Review: https://reviewboard.asterisk.org/r/2434/ (closes issue ASTERISK-20225) Reported by: Jeff Hoppe 2013-04-08 23:34 +0000 [r385047] Rusty Newton * configs/extconfig.conf.sample: Modified the list of keys for the driver backends for sake of sample clarity Added a line showing the mapping of "mysql" to res_config_mysql available in add-ons. We used "mysql" as an example driver key in the sample, but didn't show what module it mapped too. Also added a subtitle above the list of keys for driver backends. 2013-04-08 19:55 +0000 [r385008] Michael L. Young * UPGRADE.txt, channels/chan_sip.c: Fix For Not Overriding The Default Settings In chan_sip The initial report was that the "nat" setting in the [general] section was not having any effect in overriding the default setting. Upon confirming that this was happening and looking into what was causing this, it was discovered that other default settings would not be overriden as well. This patch works similar to what occurs in build_peer(). We create a temporary ast_flags structure and using a mask, we override the default settings with whatever is set in the [general] section. In the bug report, the reporter who helped to test this patch noted that the directmedia settings were being overriden properly as well as the nat settings. (closes issue ASTERISK-21225) Reported by: Alexandre Vezina Tested by: Alexandre Vezina, Michael L. Young Patches: asterisk-21225-handle-options-default-prob_1.8_v4.diff.diff Michael L. Young (license 5026) Review: https://reviewboard.asterisk.org/r/2386/ 2013-04-04 19:31 +0000 [r384779] Michael L. Young * contrib/realtime/postgresql/realtime.sql, contrib/realtime/mysql/sippeers.sql, channels/chan_sip.c: Backport Appropiate NAT Setting Cleanup In ASTERISK-20904, the focus was around the changes to NAT that took place in Asterisk 11. Since the report stated that 1.8 was fine, we didn't take a look at 1.8 at the time. While working on ASTERISK-21225, I could see that 1.8 would benefit from having some of those changes applied to it. This patch does the following: * The important part of this patch is that it sets the peer's flags earlier in build_peer so that the code properly uses the peer's flags based on the peer's configuration. * constify req parameter in check_via() * update realtime schemas under the contrib directory to handle properly the NAT settings available in 1.8 as well as to handle the changes made in 11 to make upgrading easier when installing newer versions of Asterisk (closes issue ASTERISK-21243) Reported by: Michael L. Young Patches: asterisk-20904-changes_for_1.8.diff Michael L. Young (license 5026) Review: https://reviewboard.asterisk.org/r/2422/ 2013-04-03 20:13 +0000 [r384685] Richard Mudgett * channels/sig_pri.c, channels/sig_pri.h, channels/chan_dahdi.c, configs/chan_dahdi.conf.sample: chan_dahdi: Add inband_on_proceeding compatibility option. The new inband_on_proceeding option causes Asterisk to assume inband audio may be present when a PROCEEDING message is received. Q.931 Section 5.1.2 says the network cannot assume that the CPE side has attached to the B channel at this time without explicitly sending the progress indicator ie informing the CPE side to attach to the B channel for audio. However, some non-compliant ISDN switches send a PROCEEDING without the progress indicator ie indicating inband audio is available and assume that the CPE device has connected the media path for listening to ringback and other messages. ASTERISK-17834 which causes this issue was dealing with a non-compliant network switch. (closes issue ASTERISK-21151) Reported by: Gianluca Merlo Tested by: rmudgett 2013-04-03 17:05 +0000 [r384640] Matthew Jordan * funcs/func_channel.c: Update documentation for CHANNEL function Document that you can read/write the 'accountcode' and 'amaflags' on a channel. 2013-04-02 17:33 +0000 [r384544] David M. Lee * Makefile: Fixed spurious rebuilds of func_version. func_version.so was being rebuilt every time, because build.h was changing every build, because of the cleantest dependency that was added in r384410 to fix parallel make bugs. Now build.h will only be created if it does not exist, which was the original behavior of the Makefile. 2013-04-01 13:18 +0000 [r384410] David M. Lee * Makefile: Fix parallel make problems. Occasionally, make -j would fail due to missing includes, or other unusual errors. This was due to the 'cleantest' target, which was designed to force a make clean when some change in the code would cause the typical depedency checking to fail. Several targets in the main Makefile did not depend upon cleantest, hence would run in parallel to it. By adding the dependency, make -j runs happily now. Review: https://reviewboard.asterisk.org/r/2418/ 2013-03-29 16:23 +0000 [r384325] Jonathan Rose * apps/app_voicemail.c: app_voicemail: Add blank argument to externnotify if no context argument At least one call to run_externnotify provides a NULL context parameter and because the snprintf statement doesn't account for a NULL context parameter, it simply writes '(null)' to the arguments string instead. This patch makes it write two quotes back to back for that argument instead in the event of a NULL context. (closes issue ASTERISK-18207) Reported by: Barry L. Kline Patches: modified from patch-20130306 uploaded by Karsten Wemheuer (License 5930) 2013-05-17 Asterisk Development Team * Asterisk 1.8.22.0 Released. 2013-05-13 Asterisk Development Team * Asterisk 1.8.22.0-rc2 Released. * Distributed Device State broken at sites using res_xmpp or res_jabber where Secuity Advisory AST-2012-015 is inplace res_jabber/res_xmpp were not adding AST_EVENT_IE_CACHABLE to the event as each message came in, then devstate_change_collector_cb() was unable to find AST_EVENT_IE_CACHABLE in the event, so defaulted incorrectly to AST_DEVSTATE_NOT_CACHABLE. * Fix CDR not being created during an externally initiated blind transfer Way back when in the dark days of Asterisk 1.8.9, blind transferring a call in a context that included the 'h' extension would inadvertently execute the hangup code logic on the transferred channel. This was a "bad thing". The fix was to properly check for the softhangup flags on the channel and only execute the 'h' extension logic (and, in later versions, hangup handler logic) if the channel was well and truly dead (Jim). Unfortunately, CDRs are fickle. Setting the softhangup flag when we detected that the channel was leaving the bridge (but not to die) caused some crucial snippet of CDR code, lying in ambush in the middle of the bridging code, to not get executed. This had the effect of blowing away one of the CDRs that is typically created during a blind transfer. While we live and die by the adage "don't touch CDRs in release branches", this was our bad. The attached patch restores the CDR behavior, and still manages to not run the 'h' extension during a blind transfer (at least not when it's supposed to). Thanks to Steve Davies for diagnosing this and providing a fix. * Prevent res_timing_pthread from blocking callers There were several reports of deadlock when using res_timing_pthread. Backtraces indicated that one thread was blocked waiting for the write to the pipe to complete and this thread held the container lock for the timers. Therefore any thread that wanted to create a new timer or read an existing timer would block waiting for either the timer lock or the container lock and deadlock ensued. This patch changes the way the pipe is used to eliminate this source of deadlocks: 1) The pipe is placed in non-blocking mode so that it would never block even if the following changes someone fail... 2) Instead of writing bytes into the pipe for each "tick" that's fired the pipe now has two states--signaled and unsignaled. If signaled, the pipe is hot and any pollers of the read side filedescriptor will be woken up. If unsigned the pipe is idle. This eliminates even the chance of filling up the pipe and reduces the potential overhead of calling unnecessary writes. 3) Since we're tracking the signaled / unsignaled state, we can eliminate the exta poll system call for every firing because we know that there is data to be read. * Fix crash when AMI redirect action redirects two channels out of a bridge. The two party bridging loops were changing the bridge peer pointers without the channel locks held. Thus when ast_channel_massquerade() tested and used the pointer there is a small window of opportunity for the pointers to become NULL even though the masquerade code has the channels locked. 2013-03-28 Asterisk Development Team * Asterisk 1.8.22.0-rc1 Released. 2013-03-27 19:50 +0000 [r384162] Kinsey Moore * channels/chan_sip.c: Address uninitialized conditional that valgrind found 2013-03-27 18:49 +0000 [r384118] Matthew Jordan * main/http.c: Fix a file descriptor leak in off nominal path While looking at the security vulnerability in ASTERISK-20967, Walter noticed a file descriptor leak and some other issues in off nominal code paths. This patch corrects them. Note that this patch is not related to the vulnerability in ASTERISK-20967, but the patch was placed on that issue. (closes issue ASTERISK-20967) Reported by: wdoekes patches: issueA20967_file_leak_and_unused_wkspace.patch uploaded by wdoekes (License 5674) 2013-03-27 17:02 +0000 [r384048] Kinsey Moore * res/res_rtp_asterisk.c: Fix white noise on SRTP decryption When res_rtp_asterisk.c was altered to avoid attempting to apply unprotect algorithms to non-audio RTP packets, the test used was incorrect. This caused the audio packets to not be decrypted and resulted in loud white noise on the other endpoint (or both endpoints depending on the call legs involved). The test now properly checks the version field in the RTP header to ensure that RTP and RTCP are decrypted while other types of packets are not. (closes issue ASTERISK-21323) Reported by: andrea Tested by: Kinsey Moore, andrea, John Bigelow Patches: whitenoise_fix.diff uploaded by Kinsey Moore 2013-03-27 14:53 +0000 [r383976-383981] Matthew Jordan * channels/sip/include/sip.h, channels/chan_sip.c: AST-2013-003: Prevent username disclosure in SIP channel driver When authenticating a SIP request with alwaysauthreject enabled, allowguest disabled, and autocreatepeer disabled, Asterisk discloses whether a user exists for INVITE, SUBSCRIBE, and REGISTER transactions in multiple ways. The information is disclosed when: * A "407 Proxy Authentication Required" response is sent instead of a "401 Unauthorized" response * The presence or absence of additional tags occurs at the end of "403 Forbidden" (such as "(Bad Auth)") * A "401 Unauthorized" response is sent instead of "403 Forbidden" response after a retransmission * Retransmission are sent when a matching peer did not exist, but not when a matching peer did exist. This patch resolves these various vectors by ensuring that the responses sent in all scenarios is the same, regardless of the presence of a matching peer. This issue was reported by Walter Doekes, OSSO B.V. A substantial portion of the testing and the solution to this problem was done by Walter as well - a huge thanks to his tireless efforts in finding all the ways in which this setting didn't work, providing automated tests, and working with Kinsey on getting this fixed. (closes issue ASTERISK-21013) Reported by: wdoekes Tested by: wdoekes, kmoore patches: AST-2013-003-1.8 uploaded by kmoore, wdoekes (License 6273, 5674) AST-2013-003-10 uploaded by kmoore, wdoekes (License 6273, 5674) AST-2013-003-11 uploaded by kmoore, wdoekes (License 6273, 5674) * main/http.c: AST-2013-002: Prevent denial of service in HTTP server AST-2012-014, fixed in January of this year, contained a fix for Asterisk's HTTP server for a remotely-triggered crash. While the fix put in place fixed the possibility for the crash to be triggered, a denial of service vector still exists with that solution if an attacker sends one or more HTTP POST requests with very large Content-Length values. This patch resolves this by capping the Content-Length at 1024 bytes. Any attempt to send an HTTP POST with Content-Length greater than this cap will not result in any memory allocation. The POST will be responded to with an HTTP 413 "Request Entity Too Large" response. This issue was reported by Christoph Hebeisen of TELUS Security Labs (closes issue ASTERISK-20967) Reported by: Christoph Hebeisen patches: AST-2013-002-1.8.diff uploaded by mmichelson (License 5049) AST-2013-002-10.diff uploaded by mmichelson (License 5049) AST-2013-002-11.diff uploaded by mmichelson (License 5049) 2013-03-26 02:23 +0000 [r383839-383863] Matthew Jordan * channels/chan_sip.c: Resolve deadlock between SIP registration and channel based functions In r373424, several reentrancy problems in chan_sip were addressed. As a result, the SIP channel driver is now properly locking the channel driver private information in certain operations that it wasn't previously. This exposed two latent problems either in register_verify or by functions called by register_verify. This includes: * Holding the private lock while calling sip_send_mwi_to_peer. This can create a new sip_pvt via sip_alloc, which will obtain the channel container lock. This is a locking inversion, as any channel related lock must be obtained prior to obtaining the SIP channel technology private lock. * Holding the privat elock while calling sip_poke_peer. In the same vein as sip_send_mwi_to_peer, sip_poke_peer can create a new SIP private, causing the same locking inversion. Note that this locking inversion typically occured when CLI commands were run while a SIP REGISTER request was being processed, as many CLI commands (such as 'sip show channels', 'core show channels', etc.) have to obtain the channel container lock. (issue ASTERISK-21068) Reported by: Nicolas Bouliane (issue ASTERISK-20550) Reported by: David Brillert (issue ASTERISK-21314) Reported by: Badalian Vyacheslav (issue ASTERISK-21296) Reported by: Gabriel Birke * main/cdr.c: Resolve deadlock between pending CDR and batch CDR locks r375757 attempted to resolve a race condition between multiple submissions of CDRs while in batch mode from attempting to destroy the scheduled batch submission by extending the batch CDR lock. Unfortunately, this causes a deadlock between the pending CDR lock and the batch CDR lock. This patch resolves the intent of r375757 by simply providing a new lock that protects the scheduling of the batches. The original batch CDR lock is kept to protect manipulation of the batch CDR settings, but has been placed such that it is not held when the pending lock is held. Thanks to Chase Venters for providing lock analysis on the issue. (issue ASTERISK-21162) Reported by: Chase Venters 2013-03-26 01:32 +0000 [r383835] Russell Bryant * apps/app_meetme.c: Fix multi-station answer race condition. When an SLA trunk is ringing (inbound call on the trunk) Asterisk will make outbound calls to the stations that have that trunk. If more than one station answers the call at the same time, all channels other than the first one to answer are left in a bad state. The channel gets leaked, is not connected to anything, and there's no way to get rid of it. We now properly clean up these losing channels by hanging up on them. Since they lost the race, as we process their answer, there is no ringing trunk for them to answer. 2013-03-25 23:19 +0000 [r383796] Richard Mudgett * channels/sig_pri.c: Set the CALLERID(dnid-num-plan) for incoming ISDN calls. The CALLEDTON channel variable is set for incoming ISDN calls to the lower 7 bits of the Q.931 type-of-number/numbering-plan octet. The CALLERID(dnid-num-plan) should have the same value. (closes issue ASTERISK-21248) Reported by: rmudgett 2013-03-25 12:35 +0000 [r383667] Sean Bright * res/res_config_curl.c: Properly delimit post data in res_config_curl. 2013-03-20 20:22 +0000 [r383460] Walter Doekes * funcs/func_curl.c: Have func_curl log a warning when a curl request fails. Review: https://reviewboard.asterisk.org/r/2403/ 2013-03-19 15:50 +0000 [r383340] David M. Lee * codecs/Makefile: Removed codecs/g722/*.i on make clean 2013-03-15 12:49 +0000 [r383165] Kinsey Moore * main/tcptls.c, main/manager.c, channels/chan_sip.c, main/http.c: tcptls: Prevent unsupported options from being set AMI, HTTP, and chan_sip all support TLS in some way, but none of them support all the options that Asterisk's TLS core is capable of interpreting. This prevents consumers of the TLS/SSL layer from setting TLS/SSL options that they do not support. This also gets tlsverifyclient closer to a working state by requesting the client certificate when tlsverifyclient is set. Currently, there is no consumer of main/tcptls.c in Asterisk that supports this feature and so it can not be properly tested. Review: https://reviewboard.asterisk.org/r/2370/ Reported-by: John Bigelow Patch-by: Kinsey Moore (closes issue AST-1093) 2013-03-15 01:32 +0000 [r383120-383124] Matthew Jordan * channels/chan_sip.c: When a session timer expires during a T.38 call, re-invite with correct SDP When a session timer expires during a dialog that has re-negotiated to T.38 and Asterisk is the refresher, Asterisk will send a re-INVITE with an SDP containing audio media only. This causes some hilarity with the poor fax session under weigh. This patch corrects that by sending T.38 parameters if we are in the middle of a T.38 session. (closes issue ASTERISK-21232) Reported by: Nitesh Bansal patches: dont-send-audio-reinvite-for-sess-timer-in-t38-call.patch uploaded by nbansal (License 6418) * pbx/pbx_spool.c: Fix processing of call files when using KQueue on OS X In certain situations, call files are not processed when using KQueue with pbx_spool. Asterisk was sending an invalid timeout value when the spool directory is empty, causing the call to kevent to error immediately. This can create a tight loop, increasing the CPU load on the system. (closes issue ASTERISK-21176) Reported by: Carlton O'Riley patches: kqueue_osx.patch uploaded by coriley (License 6473) 2013-03-14 16:56 +0000 [r383061] Jason Parker * autoconf/ast_ext_lib.m4: Fix whitespace in AST_EXT_LIB_CHECK macro. 2013-03-12 21:15 +0000 [r382939-382942] Michael L. Young * addons/res_config_mysql.c: Fix Sorting Order For Parking Lots Stored In Static Realtime When retrieving the parking lots from a MySQL database table, the current order is "filename, cat_metric desc, var_metric asc, category". If there are multiple parking lots with the same cat_metric but different categories, everything is being sorted on cat_metric first resulting in errors when loading the parking lots. This patch fixes the problem by sorting on the category field first, then the cat_metric field. (closes issue ASTERISK-21035) Reported by: Alex Epshteyn Patches: asterisk-21035-orderby.diff Michael L. Young (license 5026) * contrib/realtime/postgresql/realtime.sql, contrib/realtime/mysql/sippeers.sql: Update Contributed Realtime Schema Files - IPv6 Addresses This commit updates some fields in the contributed realtime schema files to handle IPv6 addresses. (closes issue ASTERISK-21173) Reported by: Torrey Searle Patches: realtime_sql.patch Torrey Searle (license 5334) asterisk-21173-update-ip-fields.diff Michael L. Young (license 5026) 2013-03-12 16:20 +0000 [r382847] Matthew Jordan * UPGRADE.txt, channels/chan_sip.c: Include the Username field in SIP Registry events when Status is registered In ASTERISK-17888, the AMI Registry event during SIP registrations was supposed to include the Username field. Somehow, one of the events was missed. This patch corrects that - the Username field should be included in all AMI Registry events involving SIP registrations. (issue ASTERISK-17888) (closes issue ASTERISK-21201) Reported by: Dmitriy Serov patches: chan_sip.c.diff uploaded by Dmitriy Serov (license 6479) 2013-03-06 18:22 +0000 [r382513] Kinsey Moore * apps/app_page.c: Correct app_page documentation The 'A' and 'n' options for Page() mention that the announcement will be played simultaneously. This is not necessarily the case. 2013-03-05 03:46 +0000 [r382409] Igor Goncharovskiy * channels/chan_unistim.c: Fix several unreleased mutex locks that cause problem with processing calls Reported by: Daniel Bohling Tested by: Daniel Bohling (Closes issue ASTERISK-21119) 2013-02-28 17:09 +0000 [r382227-382233] Matthew Jordan * channels/chan_iax2.c: Prevent deadlock in chan_iax2 when attempting to set caller ID A deadlock can occur in chan_iax2 when it attempts to set the caller ID, as it already holds the iax2 private lock and improperly fails to obtain the channel lock before calling ast_set_callerid. By not safely obtaining the channel lock, a locking inversion can take place, causing a deadlock. This patch solves this by calling the required deadlock avoidance functions that obtain the channel lock before setting the caller ID. Thanks to Pavel for fixing my syntax errors and testing this patch out. (closes issue ASTERISK-21128) Reported by: Pavel Troller Tested by: Pavel Troller patches: ASTERISK-21128-1.8.diff uploaded by mjordan (license 6283) ASTERISK-21128-modified-1.8.diff uploaded by Pavel Troller (license 6302) * UPGRADE.txt, apps/app_meetme.c: Let channels joining a MeetMe conference opt out of the denoiser For some channel drivers, specifically those that have a varying rate in the number of audio samples, the audio quality for a MeetMe conference can be exceedingly poor. This is due to a unilateral application of the DENOISE function in func_speex to channels joining the conference. The denoiser function in the speex library is initialized with the number of audio samples in each sample that will be provided to it. If the number of audio samples changes, the denoiser has to be thrown away and re-initialized. While this could be worked around by removing func_speex, that doesn't help if you actually use the denoiser with other channels on the system. This patches does the following: * Checks for the presence of func_speex as opposed to codec_speex when determining if the DENOISE function is present (which is where the function is actually implemented) * Adds an option to MeetMe 'n' that causes the denoiser to not be applied to a channel when it joins. This keeps the current behavior the default, but let's users disable the denoiser if it causes problems on their system. Review: https://reviewboard.asterisk.org/r/2358 (closes issue AST-1062) Reported by: Thomas Arimont 2013-02-27 16:16 +0000 [r382153-382171] Joshua Colp * channels/chan_sip.c: Relax dialog checking in get_sip_pvt_byid_locked so it works when the dialog is forked. (closes issue ASTERISK-20638) Reported by: eelcob Patches: pedantic-call-pickup-from-tag.patch uploaded by eelcob (license 6442) * configure, include/asterisk/autoconfig.h.in: Fix the configure script over here as well. 2013-02-26 19:37 +0000 [r382110] Tzafrir Cohen * configure, configure.ac: Consider linux-gnuspe as linux-gnu * The powerpcspe Linux port uses linux-gnuspe as the OS string. * Our build system shouldn't really care for that, so just call it linux-gnu. * Original report: Roland Stigge , http://bugs.debian.org/701505 Review: https://reviewboard.asterisk.org/r/2357/ 2013-02-26 19:30 +0000 [r382107] Walter Doekes * channels/chan_sip.c: Correct RPID parsing for unquoted display-name. Parsing Remote-Party-ID will now succeed if display-name is of the *(token LWS) kind and not just the quoted-string kind. Review: https://reviewboard.asterisk.org/r/2341/ 2013-02-26 19:06 +0000 [r382087] Tzafrir Cohen * main/Makefile: Remove unneeded linux-gnueabi* As of r380520 the configure scripts converts the value of linux-gnueabi* of OSARCH to "linux-gnu". So no point in testing for those values. 2013-02-25 12:48 +0000 [r381916-382021] Matthew Jordan * addons/res_config_mysql.c: Clean up use of va_end/va_args in res_config_mysql There were several problems using variadic argument macros in res_config_mysql. * Improper use of va_end. Multiple calls to va_end were possible resulting in an unbalanced matching of va_start/va_end. * Calls to va_arg after a possible encounter of a SENTINEL value. This patch corrects those errors. (closes issue ASTERISK-19451) Reported by: wdoekes patches: ASTERISK-19451-1.8--2.diff uploaded by wdoekes (License 5674) * channels/chan_jingle.c: Set the sin_family on the bind address socket during initialization Somehow, chan_jingle has managed to operate for years without setting the sin_family on its bindaddr socket. This patch properly sets the field during initial module load to AF_INET. Note that the patch on the issue was modified slightly to change the initialization of the socket from allocation of a chan_jingle private to the module initialization, as the bindaddr object (which is static) only needs to have the address set once. (closes issue ASTERISK-19341) Reported by: andre valentin patches: 0105-chan_jingle.patch uploaded by avalentin (License 6064) * main/manager.c: Don't display the AMI ALL class authorization for users if they don't have it When converting AMI class authorizations to a string representation, the method always appends the ALL class authorization. This is especially important for events, as they should always communicate that class authorization - even if the event itself does not specify ALL as a class authorization for itself. (Events have always assumed that the ALL class authorization is implied when they are raised) Unfortunately, this did mean that specifying a user with restricted class authorizations would show up in the 'manager show user' CLI command as having the ALL class authorization. Rather then modifying the existing string manipulation function, this patch adds a function that will only return a string if the field being compared explicitly matches class authorization field it is being compared against. This prevents ALL from being returned unless it is actually specified for the user. (closes issue ASTERISK-20397) Reported by: Johan Wilfer * apps/app_parkandannounce.c: Make ParkAndAnnounce return to priority + 1 when return context is not defined The ParkAndAnnounce application documentation for the optional return_context parameter states the following: return_context The goto-style label to jump the call back into after timeout. Default 'priority+1'. Unfortunately, the application was sending the channel back into the dialplan at 'priority', which is the ParkAndAnnounce application call. This causes an infinite loop of the channel constantly being parked, announced, timed out, parked, announced, timed out... while fun, especially for those callers you wish to drive to the end of madness, this was not the intent of the application. (closes issue ASTERISK-20113) Reported by: serginuez patches: app_parkandannounce.diff uploaded by serginuez (License 6405) 2013-02-21 22:44 +0000 [r381847] Matthew Jordan * configure, configure.ac: Properly detect launchd Asterisk was a little too pro-active in claiming that it found launchd. On systems without launchd - such as FreeBSD - this resulted in certain items in Asterisk that conflict with launchd to not be selectable, such as res_timing_kqueue. (closes issue ASTERISK-20749) Reported by: Oleg Baranov 2013-02-19 19:16 +0000 [r381770] kharwell : * main/features.c: Write the correct callid to the data1 field in queue_log for transfer events. The incorrect callid was being written to the "data1" field in queue_log table for transfer events. The callid of the queue was being written instead of the transfer target's callid. This now gets the correct "transfer to" number and places that in the "data1" field of the queue_log table when a transfer event is triggered. (closes issue ASTERISK-19960) Reported by: vladimir shmagin 2013-02-18 20:28 +0000 [r381668] Walter Doekes * configs/sip.conf.sample: Remove "registertrying" and add "rtp_engine" from/to sip.conf.sample The "registertrying" option was removed in r343220. The "rtp_engine" option was added in r186078 but erroneously named "engine" in the sample. Note that there is no global sip setting for a different engine. 2013-02-14 19:41 +0000 [r381466] Richard Mudgett * main/features.c: End stuck DTMF if AST_SOFTHANGUP_ASYNCGOTO because it isn't a real hangup. It doesn't hurt to check AST_SOFTHANGUP_UNBRIDGE either, but it should not be set outside of a bridge. (issue ASTERISK-20492) 2013-02-14 03:42 +0000 [r381364] Matthew Jordan * apps/app_db.c: Don't throw a spurious error when using DBdeltree The function call ast_db_deltree returns the number of row deleted, or a negative number if it failed. DBdeltree was treating any non-zero return as an error, causing a spurious verbose error message to be displayed. This patch handles the return code of ast_db_deltree correctly. (closes issue ASTERISK-21070) Reported by: ianc patches: dbdeltree.diff uploaded by ianc (License #5955) 2013-02-12 20:16 +0000 [r381281] Mark Michelson * main/rtp_engine.c: Do not allow native RTP bridging if packetization of media streams differs. The RTP engine will no longer allow for local and remote native RTP bridges if packetization of streams differs. Allowing native bridging in this scenario has been known to cause FAX failures. (closes ASTERISK-20650) Reported by: Maciej Krajewski Patches: ASTERISK-20659.patch uploaded by Mark Michelson (License #5049) Review: https://reviewboard.asterisk.org/r/2319 2013-02-11 20:46 +0000 [r381216] kharwell : * apps/app_playback.c: Properly load say.conf upon reload of module app_playback. If say.conf did not exists prior to originally loading module app_playback it would not load on subsequent reloads of the module once it had been created. This occurred because upon reload of the app_playback module it would only load a new configuration if an old one had previously existed. This fix simply removed the association between checking if an old configuration existed and the loading of the new one. (closes issue ASTERISK-20800) Reported by: pgoergler 2013-02-06 20:10 +0000 [r380973] David M. Lee * channels/chan_sip.c: Fixed failing test from r380696. When I added my extensive suite of session timer unit tests, apparently one of them was failing and I never noticed. If neither Min-SE nor Session-Expires is set in the header, it was responding with a Session-Expires of the global maxmimum instead of the configured max for the endpoint. (issue ASTERISK-20787) 2013-02-05 18:09 +0000 [r380853] Richard Mudgett * main/dial.c: Separate option_types[] from the struct definition. Updated the option_types[] doxygen comment. 2013-01-31 19:56 +0000 [r380696] David M. Lee * channels/chan_sip.c: Process session timers, even if Session-Expires header is missing Previously, Asterisk only processed session timer information if both the 'Supported: timer' and 'Session-Expires' headers were present. However, the Session-Expires header is optional. If we were to receive a request with a Min-SE greater than our configured session-expires, we would respond with a 'Session-Expires' header that was too small. This patch cleans the situation up a bit, always processing timer information if the 'Supported: timer' header is present. (closes issue ASTERISK-20787) Reported by: Mark Michelson Review: https://reviewboard.asterisk.org/r/2299/ 2013-01-31 00:22 +0000 [r380572-380611] Richard Mudgett * include/asterisk/channel.h: Make CHECK_BLOCKING() debug message more useful. Change the displayed pthread value to hex format so it can be easily matched with CLI core show threads or gdb. * channels/chan_dahdi.c: chan_dahdi: Fix "dahdi show channels group" for groups greater than 31. The variable type used was not large enough to hold a group bit field. 2013-03-27 Asterisk Development Team * Asterisk 1.8.21.0-rc2 Released. * Do not allow native RTP bridging if packetization of media streams differs. The RTP engine will no longer allow for local and remote native RTP bridges if packetization of streams differs. Allowing native bridging in this scenario has been known to cause FAX failures. * Resolve deadlock between pending CDR and batch CDR locks r375757 attempted to resolve a race condition between multiple submissions of CDRs while in batch mode from attempting to destroy the scheduled batch submission by extending the batch CDR lock. Unfortunately, this causes a deadlock between the pending CDR lock and the batch CDR lock. This patch resolves the intent of r375757 by simply providing a new lock that protects the scheduling of the batches. The original batch CDR lock is kept to protect manipulation of the batch CDR settings, but has been placed such that it is not held when the pending lock is held. Thanks to Chase Venters for providing lock analysis on the issue. * Resolve deadlock between SIP registration and channel based functions In r373424, several reentrancy problems in chan_sip were addressed. As a result, the SIP channel driver is now properly locking the channel driver private information in certain operations that it wasn't previously. This exposed two latent problems either in register_verify or by functions called by register_verify. This includes: * Holding the private lock while calling sip_send_mwi_to_peer. This can create a new sip_pvt via sip_alloc, which will obtain the channel container lock. This is a locking inversion, as any channel related lock must be obtained prior to obtaining the SIP channel technology private lock. * Holding the private lock while calling sip_poke_peer. In the same vein as sip_send_mwi_to_peer, sip_poke_peer can create a new SIP private, causing the same locking inversion. Note that this locking inversion typically occured when CLI commands were run while a SIP REGISTER request was being processed, as many CLI commands (such as 'sip show channels', 'core show channels', etc.) have to obtain the channel container lock. * AST-2013-002: Prevent denial of service in HTTP server AST-2012-014, fixed in January of this year, contained a fix for Asterisk's HTTP server for a remotely-triggered crash. While the fix put in place fixed the possibility for the crash to be triggered, a denial of service vector still exists with that solution if an attacker sends one or more HTTP POST requests with very large Content-Length values. This patch resolves this by capping the Content-Length at 1024 bytes. Any attempt to send an HTTP POST with Content-Length greater than this cap will not result in any memory allocation. The POST will be responded to with an HTTP 413 "Request Entity Too Large" response. This issue was reported by Christoph Hebeisen of TELUS Security Labs * AST-2013-003: Prevent username disclosure in SIP channel driver When authenticating a SIP request with alwaysauthreject enabled, allowguest disabled, and autocreatepeer disabled, Asterisk discloses whether a user exists for INVITE, SUBSCRIBE, and REGISTER transactions in multiple ways. The information is disclosed when: * A "407 Proxy Authentication Required" response is sent instead of a "401 Unauthorized" response * The presence or absence of additional tags occurs at the end of "403 Forbidden" (such as "(Bad Auth)") * A "401 Unauthorized" response is sent instead of "403 Forbidden" response after a retransmission * Retransmission are sent when a matching peer did not exist, but not when a matching peer did exist. This patch resolves these various vectors by ensuring that the responses sent in all scenarios is the same, regardless of the presence of a matching peer. This issue was reported by Walter Doekes, OSSO B.V. A substantial portion of the testing and the solution to this problem was done by Walter as well - a huge thanks to his tireless efforts in finding all the ways in which this setting didn't work, providing automated tests, and working with Kinsey on getting this fixed. * Fix white noise on SRTP decryption When res_rtp_asterisk.c was altered to avoid attempting to apply unprotect algorithms to non-audio RTP packets, the test used was incorrect. This caused the audio packets to not be decrypted and resulted in loud white noise on the other endpoint (or both endpoints depending on the call legs involved). The test now properly checks the version field in the RTP header to ensure that RTP and RTCP are decrypted while other types of packets are not. 2013-01-30 Asterisk Development Team * Asterisk 1.8.21.0-rc1 Released. 2013-01-30 17:44 +0000 [r380451-380520] Matthew Jordan * configure, configure.ac: Support building Asterisk for Raspberry Pi/Raspbian with hard-float support Building Asterisk on Raspbian with hard-float support fails as it uses the string 'linux-gnueabihf' for host os, as opposed to 'linux-gnueabi'. This patch modifies the configure script for Asterisk such that it will match on any string beginning with 'linux-gnueabi', as opposed to requiring an explicit match. (closes issue ASTERISK-21006) Reported by: Christian Hesse Tested by: Christian Hesse patches: linux-gnueabihf.patch uploaded by Christian Hesse (license 6459) linux-gnueabihf-autoconf.patch uploaded by Christian Hesse (license 6459) * channels/chan_sip.c: Perform case insensitive comparisons for T.38 attributes RFC5347 section 2.5.2 states the following: ... The attribute "T38MaxBitRate" was once incorrectly registered with IANA as "T38maxBitRate" (lower-case "m"). In accordance with T.38 examples and common implementation practice, the form "T38MaxBitRate" SHOULD be generated by implementations conforming to this package. In general, it is RECOMMENDED that implementations of this package accept lowercase, uppercase, and mixed upper/lowercase encodings of all the T.38 attributes. ... Asterisk currently does not perform case insensitive matching on the T.38 attributes. This causes the T38MaxBitRate attribute to be negotiated at 2400 baud instead of 14400 (or whatever value you actually wanted). This patch makes it so that when we compare T.38 attributes, we do so in a case insensitive fashion. Note that while the issue reporter did not directly write the patch, they contributed to it (and would have provided one themselves if the license had gone through a tad faster), and hence get attribution for it. (closes issue ASTERISK-20897) Reported by: Eric Hill Tested by: Eric Hill patches: -- uploaded by Eric Hill * res/res_calendar_icalendar.c: Fix memory leak in res_calendar_icalendar The ICalendar module had a systemic memory leak on each fetch of data from the ICalendar source. The previous fetched data was not being properly disposed. This patch makes it so that before each fetch of data, we dispose of the previously fetched data. (closes issue ASTERISK-21012) Reported by: Joel Vandal Tested by: Joel Vandal 2013-01-29 17:22 +0000 [r380364] Richard Mudgett * channels/chan_agent.c: chan_agent: Prevent multiple channels from logging in as the same agent. Multiple channels logging in as the same agent can result in dead channels waiting for a condition signal that will never come because another channel thread stole it. A symptom is chan_sip repeatedly generating warning messages about rescheduling autodestruction of dialogs with an agent channel owner. * Made only login_exec() (the app AgentLogin) clear the agent_pvt->chan pointer to prevent multiple channels from logging in as the same agent. agent_read(), agent_call(), and agent_set_base_channel() no longer disconnect the agent channel from the agent_pvt. This also eliminates the need to keep checking for agent_pvt->chan being NULL. * Made agent_hangup() not wake up the AgentLogin agent thread until it is done. * Made agent_request() not able to get the agent until he has logged in and any wrapup time has expired. * Made agent_request() use ast_hangup() instead of agent_hangup() to correctly dispose of a channel. * Removed agent_set_base_channel(). Nobody calls it and it is a bad thing in general. * Made only agent_devicestate() determine the current device state of an agent. Note: Agent group device states have never been supported. Review: https://reviewboard.asterisk.org/r/2260/ 2013-01-29 17:05 +0000 [r380347] David M. Lee * channels/sip/sdp_crypto.c: Corrected crypto tag in SDP ANSWER for SRTP. (again) The original fix (r380043) for getting Asterisk to respond with the correct tag overlooked some corner cases, and the fact that the same code is in 1.8. This patch moves the building of the crypto line out of sdp_crypto_process(). Instead, it merely copies the accepted tag. The call to sdp_crypto_offer() will build the crypto line in all cases now, using a tag of "1" in the case of sending offers. (closes issue ASTERISK-20849) Reported by: JosĂ© Luis MillĂ¡n Review: https://reviewboard.asterisk.org/r/2295/ 2013-01-29 02:02 +0000 [r380297] Matthew Jordan * autoconf/ast_check_pwlib.m4, configure: Update configure script to be compatible with ptlib 2.10.9 With ptlib 2.10.9, the configure script fails due to grep returning multiple matches for the pattern it searches for. This patch updates the pattern matching to return only the actual version for the symbol searched for, PTLIB_VERSION. (closes issue ASTERISK-20980) Reported by: Stefan Reuter patches: ASTERISK-20980-1.patch uploaded by Stefan Reuter (license 5339) 2013-01-28 21:06 +0000 [r380254] Sean Bright * channels/chan_iax2.c, channels/iax2.h: Correct the number of available call numbers in IAX2. There is currently an edge case where call number 32768 might be allocated for a call, even though the IAX2 protocol requires call numbers be only 15 bits. This resulted in some unpredictable behavior when call number 32678 is chosen. This patch was mostly written by Richard Mudgett via ReviewBoard. I'm just committing it. Review: https://reviewboard.asterisk.org/r/2293/ 2013-01-28 01:52 +0000 [r380210] Russell Bryant * main/file.c: Change cleanup ordering in filestream destructor. This patch came about due to a problem observed where wav files had an empty header. The header is supposed to be updated in wav_close(). It turns out that this was broken when the cache_record_files option from asterisk.conf was enabled. The cleanup code was moving the file to its final destination *before* running the close() method of the file destructor, so the header didn't get updated. Another problem here is that the move was being done before actually closing the FILE *. Finally, the last bug fixed here is that I noticed that wav_close() checks for stream->filename to be non-NULL. In the previous cleanup order, it's checking a pointer to freed memory. This doesn't actually cause anything to break, but it's treading on dangerous waters. Now the free() of stream->filename is happening after the format module's close() method gets called, so it's safer. Review: https://reviewboard.asterisk.org/r/2286/ 2013-01-23 00:19 +0000 [r379963] Richard Mudgett * main/astobj2.c: Attempt to be more helpful when using a bad ao2 object pointer. Backport of -r360626 with some enhancements. Put the external obj pointer in the message instead of the internal version. 2013-01-22 18:21 +0000 [r379885] Jonathan Rose * sounds/Makefile, apps/app_meetme.c: app_meetme: Use new prompts for administrator menu The old prompts for the administrator menu were inadequate. They didn't mention that the menu had additional options through the 8 key and pressing the 8 key wouldn't reveal what those options were. This patch fixes all of that while also organizing code pertaining to each individual menu type which was previously all stored in one gigantic function along with many of the basic conference functions. (closes issue AST-996) Reported by: John Bigelow Review: http://reviewboard.digium.internal/r/360/ 2013-01-22 14:43 +0000 [r379760-379825] Matthew Jordan * apps/app_meetme.c: Fix station ringback; trunk hangup issues in SLA This patch fixes two bugs: * If an outbound call is made from a SLA phone using SLAStation, then there is no ringtone audible to the phone that originates the call. The indication of the ringing was not being passed to the SLA station; this patch fixes that by passing through the progress indications. * If an SLA station hangs up before the called party answers, then the channel to the called party continues to ring until a timeout occurs. If the called party manages to answer, Asterisk attempts to connect the called party to a non-existant MeetMe room. This patch corrects the behavior by abandoning the call attempt if it detects that the SLA station is no longer in use while attempting to call the called party. Review: https://reviewboard.asterisk.org/r/2275/ (closes issue ASTERISK-20462) Reported by: dkerr patches: asterisk-11-bugid20440+20462.patch uploaded by dkerr (license 5558) asterisk-11-bugid20462.patch uploaded by dkerr (license 5558) (closes issue ASTERISK-20440) Reported by: dkerr patches: asterisk-11-bugid20440.patch uploaded by dkerr (license 5558) asterisk-11-bugid20440+20462.patch uploaded by dkerr (license 5558) * UPGRADE.txt, contrib/init.d/rc.gentoo.asterisk, contrib/init.d/rc.slackware.asterisk, contrib/init.d/rc.archlinux.asterisk, contrib/scripts/safe_asterisk, main/asterisk.c, contrib/init.d/rc.suse.asterisk, contrib/init.d/rc.mandriva.asterisk, contrib/init.d/rc.debian.asterisk, contrib/init.d/rc.redhat.asterisk: Update init.d scripts to handle stderr; readd splash screen for remote consoles When r376428 was commited to re-order start up sequences to be more tolerant of forking with thread primitives, a few items were changed that caused changes in behavior on some distros. This includes: * Not displaying the splash screen on a remote console. * Displaying an error message on stderr when a remote console cannot connect to a running instance of Asterisk. In the first case, the splash screen was re-added (thanks to Michael L. Young). In the second case, the various init.d scripts were modified to pipe stderr to /dev/null, as the error message is useful - if you execute a remote console or a remote console command execution and it fail, it should tell you. Note that the error message was always present, it just failed to be printed prior to r376428. Much thanks to the folks who quickly reported this problem, provided solutions, and promptly tested the various init.d scripts on a variety of distros. (closes issue ASTERISK-20945) Reported by: Warren Selby Tested by: Michael L. Young, Jamuel Starkey, kaldemar, Danny Nicholas, mjordan patches: asterisk-20945-remote-intro-msg.diff uploaded by elguero (license 5026) ASTERISK-20945-1.8-mjordan.diff uploaded by mjordan (license 6283) 2013-01-21 18:27 +0000 [r379718] Kinsey Moore * codecs/codec_ilbc.c: Prevent segfault for interpolated iLBC frames When iLBC is being used with a jitter buffer and the jb has to interpolate frames, it generates frames with a null pointer and a non-zero datalen. This is now handled properly. (closes issue ASTERISK-20914) Reported By: John McEleney Patches: ASTERISK-20914-1.8.diff uploaded by Matt Jordan (license 6283) 2013-01-21 04:59 +0000 [r379645] Andrew Latham * contrib/scripts/install_prereq: Add LDAP libraries to install script Add LDAP dev package to Debian/Ubuntu install list. Existed in Redhat already. Merged from 11 to Trunk in 379643. Sorry for forgeting 1.8 (issue ASTERISK-20886) 2013-01-21 04:05 +0000 [r379608] Matthew Jordan * apps/app_minivm.c: Fix crash in app_minivm when mime encoding string An incorrect string initializations was left in ast_str_encode_mime from the patch that converted string manipulations to use ast_str strings (r191140). The string initialization causes a crash when ast_str_set is called on the string later on in the function. (closes issue ASTERISK-18697) Reported by: Chris Boot patches: minivm-null-pointer-dereference-fix.patch uploaded by bootc (license 6309) (issue ASTERISK-20854) Reported by: Chris Warr Tested by: Chris Warr 2013-01-19 20:41 +0000 [r379547] Walter Doekes * configure, include/asterisk/autoconfig.h.in, include/asterisk/compat.h, main/strcompat.c, configure.ac: Add builtin roundf() for systems lacking it. (closes issue ASTERISK-16854) Review: https://reviewboard.asterisk.org/r/2276 Reported-by: Ovidiu Sas 2013-01-18 23:26 +0000 [r379509] Matthew Jordan * main/asterisk.c: Fix astcanary startup problem due to wrong pid value from before daemon call When Asterisk forks itself into the background via a call to daemon, it must re-set the pid value of the new process. Otherwise, astcanary gets the pid value of the process before the fork, which prevents it from running. Asterisk eventually starts lowering its priority, as it can no longer communicate with the proverbial canary in the coal mine. This patch ensures that the correct process identifier is used by astcanary. (closes issue ASTERISK-20947) Reported by: Jakob Hirsch Tested by: mjordan patches: asterisk-10.12.0.astcanary_ppid.diff uploaded by Jakob Hirsch (license 6113) 2013-01-18 05:23 +0000 [r379392] David M. Lee * channels/sip/include/reqresp_parser.h, channels/chan_sip.c, channels/sip/reqresp_parser.c: Fix Record-Route parsing for large headers. Record-Route parsing copied the header into a char[256] array, which can be a problem if the header is longer than that. This patch parses the header in place, without the copy, avoiding the issue. In addition to the original patch, I added a unit test for the new get_in_brackets_const function. (closes issue ASTERISK-20837) Reported by: Corey Farrell Patches: chan_sip-build_route-optimized-rev1.patch uploaded by Corey Farrell (license 5909) (with minor changes by dlee) 2013-01-17 02:28 +0000 [r379342] Matthew Jordan * addons/chan_mobile.c: Fix issue where chan_mobile fails to bind to first available port Per the bluez API, in order to bind to the first available port, the rc_channel field of the socket addressing structure used to bind the socket should be set to 0. Previously, Asterisk had set the rc_channel field set to 1, causing it to connect to whatever happens to be on port 1. We could probably not explicitly set rc_channel to 0 since we memset the struct earlier, but explicitly setting it will hopefully prevent someone from coming in and setting it to some explicit port in the future. (closes issue ASTERISK-16357) Reported by: challado Tested by: Alexander Heinz, Nikolay Ilduganov, benjamin, eliafino, David van Geyn patches: ASTERISK-16357.diff uploaded by Nikolay Ilduganov (license 6253) 2013-01-16 22:45 +0000 [r379310] Mark Michelson * main/manager.c: Further fix misinformation in the description of manager MailboxStatus command. The description still claimed that it returned the number of messages rather than whether there were messages waiting. 2013-01-16 21:12 +0000 [r379276] Jason Parker * contrib/scripts/install_prereq: Reduce number of packages install_prereq installs on Debian systems. 'search' will look for any package containing the name provided, so we need to force a more exact search. 2013-01-16 17:40 +0000 [r379226] Richard Mudgett * channels/chan_misdn.c: chan_misdn: Fix compile error. (issue ASTERISK-15456) 2013-01-16 04:10 +0000 [r379091-379178] Matthew Jordan * addons/chan_mobile.c: Fix parsing SMSSRC for SMS messages The parser for SMS messages would incorrectly parse out the from number. The parsing would incorrectly start scanning for the from number at the same index as the first double quote ("); this would inadvertently cause it to treat the first double quote as the terminating double quote for the from number as well. The SMSSRC should now populate correctly. (closes issue ASTERISK-16822) Reported by: menschentier Tested by: Jonas Falck patches: fixSMSSRC.patch uploaded by jonax (license 6320) (closes issue ASTERISK-19153) Reported by: Panos Gkikakis patches: sms-sender-fix.diff uploaded by roeften (license 5884) * channels/chan_misdn.c: Set the INVALID_EXTEN channel variable when chan_misdn forces the 'i' extension The chan_misdn channel driver will send a channel with an invalid destination to the 'i' extension itself if said extension can be reached. It forgot, however, to set the INVALID_EXTEN channel variable when it bounces the channel to this extension. Dialplan writers everywhere moaned at yet another inconsistency. This is yet another example of why duplicating logic in multiple places results in bugs that stick around in Jira for just under three years. Yes: ASTERISK-15456 was created on January 18th, 2010. Patch committed on January 15th, 2013. Ouch. (closes issue ASTERISK-15456) Reported by: Thomas Omerzu patches: chan_misdn_invalid.patch2 uploaded by Thomas Omerzu (license 5927) * bridges/bridge_softmix.c: Prevent crash in ConfBridge due to race condition when channels leave bridge When a channel leaves a bridge, a race condition existed where the bridge_channel's pvt structure would be accessed after it was disposed of. This patch prevents that by setting the pointer to the pvt to NULL prior to disposing of it. Note that this patch is a backport from Asterisk 10. This particular race condition was fixed as part of the larger code rework that occurred for that release. The solution to this problem was pointed out by Gunnar Harms in ASTERISK-16640. (closes issue ASTERISK-16640) Reported by: thomas987 (closes issue ASTERISK-16835) Reported by: saghul 2013-01-14 15:11 +0000 [r379001] David M. Lee * channels/chan_sip.c: Fix XML encoding of 'identity display' in NOTIFY messages, continued. When r378933 was merged into 1.8, it should have also escaped remote_display, since it will have the same XML encoding problem when the caller/callee roles are reversed. (closes issue ABE-2902) Reported by: Guenther Kelleter 2013-01-13 21:15 +0000 [r378967] Matthew Jordan * res/res_rtp_asterisk.c: Reset RTP timestamp; sequence number on SSRC change In r370252 for ASTERISK-18404, Asterisk's handling of RTP was modified to better account for out of order RTP packets. This was accomplished by using the RTP timestamp and sequence number to check for out of order packets. However, when a SSRC change occurs, the timestamp and sequence number will no longer have any relation to the previously received packets. The variables tracking the timestamp and sequence number therefore have to be reset. (closes issue ASTERISK-20906) Reported by: Eelco Brolman patches: dtmf_on_hold.patch uploaded by Eelco Brolman (license #6442) 2013-01-12 06:26 +0000 [r378933] David M. Lee * main/utils.c, include/asterisk/utils.h, channels/chan_sip.c, tests/test_xml_escape.c (added): Fix XML encoding of 'identity display' in NOTIFY messages. XML encoding in chan_sip is accomplished by naively building the XML directly from strings. While this usually works, it fails to take into account escaping the reserved characters in XML. This patch adds an 'ast_xml_escape' function, which works similarly to 'ast_uri_encode'. This is used to properly escape the local_display attribute in XML formatted NOTIFY messages. Several things to note: * The Right Thing(TM) to do would probably be to replace the ast_build_string stuff with building an ast_xml_doc. That's a much bigger change, and out of scope for the original ticket, so I refrained myself. * It is with great sadness that I wrote my own ast_xml_escape function. There's one in libxml2, but it's knee-deep in libxml2-ness, and not easily used to one-off escape a string. * I only escaped the string we know is causing problems (local_display). At least some of the other strings are URI-encoded, which should be XML safe. Rather than figuring out what's safe and escaping what's not, it would be much cleaner to simply build an ast_xml_doc for the messages and let the XML library do the XML escaping. Like I said, that's out of scope. (closes issue ABE-2902) Reported by: Guenther Kelleter Tested by: Guenther Kelleter Review: http://reviewboard.digium.internal/r/365/ ........ Merged revision 378919 from https://origsvn.digium.com/svn/asterisk/be/branches/C.3-bier 2013-01-09 20:26 +0000 [r378733-378776] David M. Lee * main/rtp_engine.c: Fix end condition in ast_rtp_lookup_mime_multiple2. The erroneous end condition would never include the AST_RTP_CISCO_DTMF flag in the debug output. (closes issue ASTERISK-20772) Reported by: Xavier Hienne * include/asterisk/causes.h: Replace errant tabs with spaces in causes.h. (closes issue ASTERISK-20826) Reported by: snuffy Patches: notabs.dif uploaded by snuffy (license 5024) 2013-01-08 20:22 +0000 [r378663] Richard Mudgett * apps/app_queue.c: app_queue: Fix multiple calls to a queue member that is in only one queue. When ringinuse=no queue members can receive more than one call if these calls happen at nearly the same time. * Fix so a queue member does not receive more than one call from a queue. NOTE: This fix does not prevent multiple calls to a member if the member is in more than one queue. * Did some refactoring to eliminate some code redundancy. (issue ASTERISK-16115) Reported by: nik600 Patches: jira_asterisk_16115_single_q_v1.8.patch (license #5621) patch uploaded by rmudgett Modified 2013-01-04 22:54 +0000 [r378591] Jonathan Rose * res/res_srtp.c: res_srtp: Prevent a crash from occurring due to srtp_create failures in srtp_create Under some circumstances, libsrtp's srtp_create function deallocates memory that it wasn't initially responsible for allocating. Because we weren't initially aware of this behavior, this memory was still used in spite of being unallocated during the course of the srtp_unprotect function. A while back I made a patch which would set this value to NULL, but that exposed a possible condition where we would then try to check a member of the struct which would cause a segfault. In order to address these problems, ast_srtp_unprotect will now set an error value when it ends without a valid SRTP session which will result in the caller of srtp_unprotect observing this error and hanging up the relevant channel instead of trying to keep using the invalid session address. (closes issue ASTERISK-20499) Reported by: Tootai Review: https://reviewboard.asterisk.org/r/2228/diff/#index_header 2013-01-04 21:12 +0000 [r378554] Michael L. Young * channels/chan_sip.c: Fix SIP Notify Messages To Have The Proper IP Address In The FROM Field On a multihomed server when sending a NOTIFY message, we were not figuring out which network should be used to contact the peer. This patch fixes the problem by calling ast_sip_ouraddrfor() and then build_via() so that our NOTIFY message contains the correct IP address. Also, a debug message is being added to help follow the call-id changes that occur. This was helpful for confirming that the IP address was set properly since the call-id contains the IP address. It also will be helpful for troubleshooting purposes when following a call in the debug logs. (closes issue ASTERISK-20805) Reported by: Bryan Hunt Tested by: Bryan Hunt, Michael L. Young Patches: asterisk-20805-notify-ip-v2.diff uploaded by Michael L. Young (license 5026) Review: https://reviewboard.asterisk.org/r/2255/ 2013-01-04 21:12 +0000 [r378553] Joshua Colp * res/res_rtp_asterisk.c: Don't pass STUN packets through the SRTP unprotect function. (closes issue AST-1036) Reported by: jbigelow 2013-01-03 22:09 +0000 [r378514] Michael L. Young * apps/app_queue.c: Fix Queue Log Reporting Every Call COMPLETECALLER With "h" Extension Present When the "h" extension is present within the context of the queue, all calls are being reported COMPLETECALLER even when the agent is hanging up the call. This patch checks to see if the agent hung-up or not instead of only relying on checking if the queue (caller) channel hung-up or not. It would appear that having the h extension in the mix, the pbx goes to the h extension, "hanging-up" the queue channel and triggering the reporting of COMPLETECALLER. (closes issue ASTERISK-20743) Reported by: call Tested by: call, Michael L. Young Patches: asterisk-20743-q-cmplt-caller.diff uploaded by Michael L. Young (license 5026) Review: https://reviewboard.asterisk.org/r/2256/ 2013-01-03 19:40 +0000 [r378456-378486] Richard Mudgett * channels/chan_agent.c: chan_agent: Fix wrapup time wait response. * Made agent_cont_sleep() and agent_ack_sleep() stop waiting if the wrapup time expires. agent_cont_sleep() had tried but returned the wrong value to stop waiting. * Made agent_ack_sleep() take a struct agent_pvt pointer instead of a void pointer for better type safety. * channels/chan_agent.c: chan_agent: Misc code cleanup. * Fix off-nominal path resource cleanup in agent_request(). * Create agent_pvt_destroy() to eliminate inlined versions in many places. * Pull invariant code out of loop in add_agent(). * Remove redundant module user references in login_exec(). * Remove unused struct agent_pvt logincallerid[] member. * Remove some redundant code in agent_request(). 2013-01-03 18:35 +0000 [r378455] Kinsey Moore * main/channel.c: Add missing test event This test event was missing from channel.c causing the dial_LS_options test to fail intermittently because of a race condition where most code paths emitted the test event but this one did not. The dial_LS_options test should stop bouncing now. 2013-01-03 17:41 +0000 [r378427] Richard Mudgett * channels/chan_agent.c: chan_agent: Fix agent_indicate() locking. Avoid deadlock potential with local channels and simplify the locking. 2013-01-02 21:48 +0000 [r378375] Matthew Jordan * main/config.c, funcs/func_realtime.c: Prevent crashes from occurring when reading from data sources with large values When reading configuration data from an Asterisk .conf file or when pulling data from an Asterisk RealTime backend, Asterisk was copying the data on the stack for manipulation. Unfortunately, it is possible to read configuration data or realtime data from some data source that provides a large blob of characters. This could potentially cause a crash via a stack overflow. This patch prevents large sets of data from being read from an ARA backend or from an Asterisk conf file. (issue ASTERISK-20658) Reported by: wdoekes Tested by: wdoekes, mmichelson patches: * issueA20658_dont_process_overlong_config_lines.patch uploaded by wdoekes (license 5674) * issueA20658_func_realtime_limit.patch uploaded by wdoekes (license 5674) 2013-01-02 21:08 +0000 [r378356] Richard Mudgett * include/asterisk/channel.h, main/manager.c, main/features.c: Fix AMI redirect action with two channels failing to redirect both channels. The AMI redirect action can fail to redirect two channels that are bridged together. There is a race between the AMI thread redirecting the two channels and the bridge thread noticing that a channel is hungup from the redirects. * Made the bridge wait for both channels to be redirected before exiting. * Made the AMI redirect check that all required headers are present before proceeding with the redirection. * Made the AMI redirect require that any supplied ExtraChannel exist before proceeding. Previously the code fell back to a single channel redirect operation. (closes issue ASTERISK-18975) Reported by: Ben Klang (closes issue ASTERISK-19948) Reported by: Brent Dalgleish Patches: jira_asterisk_19948_v11.patch (license #5621) patch uploaded by rmudgett Tested by: rmudgett, Thomas Sevestre, Deepak Lohani, Kayode Review: https://reviewboard.asterisk.org/r/2243/ 2013-01-02 16:54 +0000 [r378269-378303] Matthew Jordan * main/devicestate.c, include/asterisk/channel.h, channels/chan_iax2.c, res/res_jabber.c, main/channel.c, channels/chan_dahdi.c, include/asterisk/event_defs.h, channels/chan_skinny.c, main/features.c, main/event.c, apps/app_confbridge.c, funcs/func_devstate.c, res/res_calendar.c, include/asterisk/devicestate.h, channels/chan_local.c, apps/app_meetme.c, channels/chan_sip.c, channels/chan_agent.c: Prevent exhaustion of system resources through exploitation of event cache Asterisk maintains an internal cache for devices in the event subsystem. The device state cache holds the state of each device known to Asterisk, such that consumers of device state information can query for the last known state for a particular device, even if it is not part of an active call. The concept of a device in Asterisk can include entities that do not have a physical representation. One way that this occurred was when anonymous calls are allowed in Asterisk. A device was automatically created and stored in the cache for each anonymous call that occurred; this was possible in the SIP and IAX2 channel drivers and through channel drivers that utilized the res_jabber/res_xmpp resource modules (Gtalk, Jingle, and Motif). These devices are never removed from the system, allowing anonymous calls to potentially exhaust a system's resources. This patch changes the event cache subsystem and device state management to no longer cache devices that are not associated with a physical entity. (issue ASTERISK-20175) Reported by: Russell Bryant, Leif Madsen, Joshua Colp Tested by: kmoore patches: event-cachability-3.diff uploaded by jcolp (license 5000) * res/res_jabber.c, channels/sip/include/sip.h, channels/chan_sip.c, main/http.c: Resolve crashes due to large stack allocations when using TCP Asterisk had several places where messages received over various network transports may be copied in a single stack allocation. In the case of TCP, since multiple packets in a stream may be concatenated together, this can lead to large allocations that overflow the stack. This patch modifies those portions of Asterisk using TCP to either favor heap allocations or use an upper bound to ensure that the stack will not overflow: * For SIP, the allocation now has an upper limit * For HTTP, the allocation is now a heap allocation instead of a stack allocation * For XMPP (in res_jabber), the allocation has been eliminated since it was unnecesary. Note that the HTTP portion of this issue was independently found by Brandon Edwards of Exodus Intelligence. (issue ASTERISK-20658) Reported by: wdoekes, Brandon Edwards Tested by: mmichelson, wdoekes patches: ASTERISK-20658_res_jabber.c.patch uploaded by mmichelson (license 5049) issueA20658_http_postvars_use_malloc2.patch uploaded by wdoekes (license 5674) issueA20658_limit_sip_packet_size3.patch uploaded by wdoekes (license 5674) 2012-12-31 14:41 +0000 [r378217] Kinsey Moore * channels/chan_sip.c: Ensure chan_sip rejects encrypted streams without crypto info This ensures that Asterisk rejects encrypted media streams (RTP/SAVP audio and video) that are missing cryptographic keys and ensures that the incoming SDP is consistent with RFC4568 as far as having a crypto attribute present for any SAVP streams. Review: https://reviewboard.asterisk.org/r/2204/ 2012-12-20 21:38 +0000 [r378164] Richard Mudgett * main/channel.c: Give the causes[] a struct name. 2012-12-20 20:26 +0000 [r378147] Mark Michelson * include/asterisk/rtp_engine.h: Adjust RTP instance's available_formats callback to return the correct type. The RTP engine public function that gets the available formats expects a format_t to be returned; however when calling into an RTP instance's callback to get the available formats, the callback returned an int. This never was noticed in Asterisk because the two RTP engines included do not provide an available_formats callback. This introduces an API change, and the proposal for this change was brought up on the Asterisk developers mailing list [1]. There was no public objection to this change, so it is now being put in. (closes AST-1054) reported by Doug Bailey [1] http://lists.digium.com/pipermail/asterisk-dev/2012-December/058058.html 2012-12-18 17:35 +0000 [r378119] Kinsey Moore * main/channel.c: Add test events for time limit-related hangups This patch adds hangup-related test events in order to support testing of time-limited bridges. This aids in testing the S() and L() bridge options. (issue SWP-4713) 2012-12-17 23:07 +0000 [r378088-378092] Richard Mudgett * main/loader.c: Fix potential double free when unloading a module. * channels/chan_local.c: Make chan_local module references tied to local_pvt lifetime. The chan_local module references were manually tied to the existence of the ;1 and ;2 channel links. * Made chan_local module references tied to the existence of the local_pvt structure as well as automatically take care of the module references. * Tweaked the wording of the local_fixup() failure warning message to make sense. Review: https://reviewboard.asterisk.org/r/2181/ 2012-12-14 21:23 +0000 [r378036] Richard Mudgett * apps/app_queue.c: app_queue: Revert bad ringinuse=no patch. With the option ringinuse=no set, the patch committed for ASTERISK-16115 causes non-SIP queue members to never be called because the device state is checked after a channel is created to determine if the member is busy. These queue members always get the "Member %s is busy, cannot dial" message. Most channel drivers other than chan_sip use the default device state handling. The default device-state state is considered in use or unknown if the channel exists or not respectively. (closes issue ASTERISK-20801) Reported by: rmudgett Patches: jira_asterisk_16115_revert_r370418_v1.8.patch (license #5621) patch uploaded by rmudgett 2012-12-13 13:43 +0000 [r377946] Kinsey Moore * channels/chan_sip.c: Ensure Min-SE is included in outbound INVITEs Asterisk now includes Min-SE in outbound INVITEs when the value is not 90 (the default) and session timers are not disabled. This has the effect of Asterisk following RFC4028 more closely with regard to 422 responses and preventing situations in which Asterisk would be forced to temporarily accept a call to tear it down based on a Session-Expires below the locally configured Min-SE. (issue SWP-5051) Review: https://reviewboard.asterisk.org/r/2222/ Reported-by: Kinsey Moore Patch-by: Kinsey Moore 2012-12-12 22:39 +0000 [r377922] Rusty Newton * sounds/Makefile: Incremented EXTRA_SOUNDS_VERSION in sounds/Makefile to 1.4.12 for new Extra Sounds releases See CHANGES-* files in English extra 1.4.12 tarballs for new sound prompts added. (closes ASTERISK-20328) Reported by: Matt Jordan (closes AST-755) Reported by: John Bigelow 2012-12-11 21:54 +0000 [r377847-377881] Richard Mudgett * main/aoc.c, main/image.c, main/cel.c, main/timing.c, main/channel.c, main/data.c, main/stun.c, main/file.c, main/http.c: Cleanup CLI commands on exit for several files. (issue ASTERISK-20649) Reported by: Corey Farrell Patches: unregister-cli-multiple-all.patch (license #5909) patch uploaded by Corey Farrell * main/udptl.c: Cleanup udptl on exit. * Cleanup CLI commands on exit. (issue ASTERISK-20649) Reported by: Corey Farrell Patches: udptl-shutdown-1_8-10.patch (license #5909) patch uploaded by Corey Farrell udptl-shutdown-11-trunk.patch (license #5909) patch uploaded by Corey Farrell Modified 2012-12-11 20:45 +0000 [r377840] Mark Michelson * res/res_clialiases.c: Fix crash that can occur if CLI registration fails for an aliased command. A recent memory leak fix in main/cli.c causes an ast_cli_entry's command field to be freed and NULLed if ast_cli_register() fails. res_clialiases was ignoring the return value of ast_cli_register() and was then passing the NULL command off to a a hash function. This resulted in a crash. The fix is not to ignore the erroneous return value. If ast_cli_register() fails, then we do not continue trying to process the current alias. 2012-12-11 20:37 +0000 [r377688-377837] Richard Mudgett * main/taskprocessor.c: Cleanup taskprocessor on exit. * Cleanup CLI commands on exit. (issue ASTERISK-20649) Reported by: Corey Farrell Patches: taskprocessor-cleanup-1_8-11-trunk.patch (license #5909) patch uploaded by Corey Farrell taskprocessor-cleanup-10-only.patch (license #5909) patch uploaded by Corey Farrell Modified * main/pbx.c: Cleanup pbx on exit. * Cleanup CLI commands on exit. * Unreference hints and statecbs containers on exit. (issue ASTERISK-20649) Reported by: Corey Farrell Patches: pbx-cleanup-1_8.patch (license #5909) patch uploaded by Corey Farrell pbx-cleanup-10.patch (license #5909) patch uploaded by Corey Farrell pbx-cleanup-11-trunk.patch (license #5909) patch uploaded by Corey Farrell Modified * main/logger.c: Cleanup logger on exit. * Cleanup CLI commands, destroy verbosers and logchannels lists on exit. (issue ASTERISK-20649) Reported by: Corey Farrell Patches: logger-cleanup-all.patch (license #5909) patch uploaded by Corey Farrell Modified * main/indications.c: Cleanup indications on exit. * Made ast_unregister_indication_country() unlink the found tone zone before selecting a new default_tone_zone to make it impossible to select the tone zone being unregistered again. * Ringcadence is no longer parsed twice in store_config_tone_zone(). * Cleanup CLI commands and destroy default_tone_zone on exit. (issue ASTERISK-20649) Reported by: Corey Farrell Patches: indications-cleanup-all.patch (license #5909) patch uploaded by Corey Farrell Modified * main/frame.c: Cleanup frame on exit. * Cleanup CLI commands on exit. (issue ASTERISK-20649) Reported by: Corey Farrell Patches: frame-cleanup-1_8-only.patch (license #5909) patch uploaded by Corey Farrell * main/event.c: Cleanup event on exit. * Cleanup CLI commands on exit. (issue ASTERISK-20649) Reported by: Corey Farrell Patches: event_shutdown-10-only.patch (license #5909) patch uploaded by Corey Farrell event_shutdown-1_8-11-trunk.patch (license #5909) patch uploaded by Corey Farrell * main/dnsmgr.c: Cleanup dnsmgr on exit. * Cleanup dnsmgr thread and CLI commands on exit. (issue ASTERISK-20649) Reported by: Corey Farrell Patches: dnsmgr-cleanup-1_8.patch (license #5909) patch uploaded by Corey Farrell dnsmgr-cleanup-10-11-trunk.patch (license #5909) patch uploaded by Corey Farrell Modified * main/db.c: Cleanup astdb on exit. * Cleanup astdb thread and CLI commands on exit. (issue ASTERISK-20649) Reported by: Corey Farrell Patches: db-cleanup-1_8-only.patch (license #5909) patch uploaded by Corey Farrell Modified 2012-12-10 16:51 +0000 [r377623-377655] Kinsey Moore * res/res_fax.c: Ensure ReceiveFax provides a CED tone via T.38 When using res_fax_digium, the T.38 CED tone was not being provided properly which would cause some incoming faxes to fail. This was not an issue with res_fax_spandsp since it does not strictly honor the send_ced flag and sends the CED tone whenever receiving a T.38 fax. (closes issue FAX-343) Reported-by: Benjamin Tietz Patch-by: Kinsey Moore * channels/chan_sip.c: Handle Session-Expires less than local Min-SE in 200 OK Ensure that a call is immediately torn down if a Session-Expires value received in a 200 OK is less than the local Min-SE. This also prevents Asterisk from allowing calls with Session-Expires below the RFC4028-mandated minimum (90s). (closes issue ASTERISK-20653) Review: https://reviewboard.asterisk.org/r/2237/ Patch-by: Kinsey Moore 2012-12-10 06:40 +0000 [r377557-377591] Igor Goncharovskiy * channels/chan_unistim.c: Fix codec mismatch Fix code to send in both rx and tx open stream messages correct codecs. Found that on phase 0/1 phones wrong codecs cause to no audio in some situations. (issue ASTERISK-20183) * channels/chan_unistim.c: Fix crash on transfer initiated from insreeen menu on Unistim phones. Removed CDR-related code that moved to do_masquarade before. (closes issue ASTERISK-20417) Reported by: Rudolf Migalin 2013-01-14 Asterisk Development Team * Asterisk 1.8.20.0 Released. 2013-01-09 Asterisk Development Team * Asterisk 1.8.20.0-rc2 Released. * AST-2012-014: Resolve crashes due to large stack allocations when using TCP Asterisk had several places where messages received over various network transports may be copied in a single stack allocation. In the case of TCP, since multiple packets in a stream may be concatenated together, this can lead to large allocations that overflow the stack. This patch modifies those portions of Asterisk using TCP to either favor heap allocations or use an upper bound to ensure that the stack will not overflow: * For SIP, the allocation now has an upper limit * For HTTP, the allocation is now a heap allocation instead of a stack allocation * For XMPP, the allocation has been eliminated since it was unnecessary. * AST-2012-015: Prevent exhaustion of system resources through exploitation of event cache Asterisk maintains an internal cache for devices in the event subsystem. The device state cache holds the state of each device known to Asterisk, such that consumers of device state information can query for the last known state for a particular device, even if it is not part of an active call. The concept of a device in Asterisk can include entities that do not have a physical representation. One way that this occurred was when anonymous calls are allowed in Asterisk. A device was automatically created and stored in the cache for each anonymous call that occurred; this was possible in the SIP and IAX2 channel drivers and through channel drivers that utilized the res_jabber/res_xmpp resource modules (Gtalk, Jingle, and Motif). These devices are never removed from the system, allowing anonymous call to potentially exhaust a system's resources. This patch changes the event cache subsystem and device state management to no longer cache devices that are not associated with a physical entity. * Revert bad ringinuse=no patch. With the option ringinuse=no set, the patch committed previous for ASTERISK-16115 causes non-SIP queue members to never be called because the device state is checked after a channel is created to determine if the member is busy. These queue members always get the "Member %s is busy, cannot dial" message. Most channel drivers other than chan_sip use the default device state handling. The default device state is considered in use or unknown if the channel exists or not, respectively. * Fix multiple calls to a queue member that is only in queue. When ringinuse=no queue members can receive more than one call if these calls happen at nearly the same time. This patch fixes it so a queu member does not receive more than one call from a queue. note that this fix does not prevent multiple calls to a member if hte member is in more than one queue (see ASTERISK-16115). 2012-12-10 Asterisk Development Team * Asterisk 1.8.20.0-rc1 Released. 2012-12-10 01:38 +0000 [r377487-377509] Tilghman Lesher * main/xmldoc.c: Improve documentation by making all of the colors used readable, no matter what the background color is. Dark blue on a black background is unreadable, as is yellow on a light background. This patch turns on the bright attribute for colors when on a dark background and turns *off* the bright attribute when the -W command line option is used (indicating a _light_ background). This ensures that text is readable in both cases. Patch by: tilghman Review: https://reviewboard.asterisk.org/r/2224 * addons/cdr_mysql.c: Remove some dead code and additionally handle a case that wasn't handled. 2012-12-08 00:28 +0000 [r377398-377431] Richard Mudgett * contrib/realtime/mysql/sippeers.sql: Fix order of SIP allow/disallow in MySQL contrib script. Using the contrib sippeers.sql script to create the sippeers MySQL table would result in being unable to place calls if you set the disallow value to all. (closes issue ASTERISK-20756) Reported by: Andre Luis Patches: sippeers.patch patch uploaded by Andre Luis * main/astmm.c: MALLOC_DEBUG: Only wait if we want atexit allocation dumps. 2012-12-05 16:48 +0000 [r377257] Joshua Colp * channels/chan_sip.c: Fix a SIP request memory leak with TLS connections. During the TLS re-work in chan_sip some TLS specific code was moved into a separate function. This function operates on a copy of the incoming SIP request. This copy was never deinitialized causing a memory leak for each request processed. This function is now given a SIP request structure which it can use to copy the incoming request into. This reduces the amount of memory allocations done since the internal allocated components are reused between packets and also ensures the SIP request structure is deinitialized when the TLS connection is torn down. (closes issue ASTERISK-20763) Reported by: deti 2012-12-05 16:46 +0000 [r377256] Jonathan Rose * res/res_srtp.c: res_srtp: Fix a crash caused by srtp_dealloc on an already dealloced session When srtp_create fails, the session may be dealloced or just not alloced. At the same time though, the session pointer might not be set to NULL in this process and attempting to srtp_dealloc it again will cause a segfault. This patch checks for failure of srtp_create and sets the session pointer to NULL if it fails. (closes issue ASTERISK-20499) Reported by: tootai Review: https://reviewboard.asterisk.org/r/2228/ 2012-12-03 22:51 +0000 [r377037-377165] Richard Mudgett * main/asterisk.c: Cleanup ast_run_atexits() atexits list. * Convert atexits list to a mutex instead of a rd/wr lock. The lock is only write locked. * Move CLI verbose Asterisk ending message to where AMI message is output in really_quit() to avoid further surprises about using stuff already shutdown. (issue ASTERISK-20649) Reported by: Corey Farrell * include/asterisk/_private.h, main/stdtime/localtime.c, main/asterisk.c: Cleanup core main on exit. * Cleanup time zones on exit. * Make exit clean/unclean report consistent for AMI and CLI in really_quit(). (issue ASTERISK-20649) Reported by: Corey Farrell Patches: core-cleanup-1_8-10.patch (license #5909) patch uploaded by Corey Farrell core-cleanup-11-trunk.patch (license #5909) patch uploaded by Corey Farrell Modified * main/config.c: Cleanup config cache on exit. (issue ASTERISK-20649) Reported by: Corey Farrell Patches: config-cleanup-all.patch (license #5909) patch uploaded by Corey Farrell * main/cli.c: Cleanup CLI resources on exit and CLI command registration errors. (issue ASTERISK-20649) Reported by: Corey Farrell Patches: cli-leaks-1_8-10.patch (license #5909) patch uploaded by Corey Farrell cli-leaks-11-trunk.patch (license #5909) patch uploaded by Corey Farrell Modified * main/cdr.c: Cleanup CDR resources on exit. * Simplify do_reload() return handling since it never returned anything other than 0. (issue ASTERISK-20649) Reported by: Corey Farrell Patches: cdr-cleanup-1_8.patch (license #5909) patch uploaded by Corey Farrell cdr-cleanup-10-11-trunk.patch (license #5909) patch uploaded by Corey Farrell Modified * main/ccss.c: Fix CCSS CLI commands and logger level not unregistered. (issue ASTERISK-20649) Reported by: Corey Farrell Patches: ccss-cleanup-all.patch (license #5909) patch uploaded by Corey Farrell 2012-11-30 21:30 +0000 [r376950] Richard Mudgett * channels/misdn/isdn_lib.c: chan_misdn: Fix sending RELEASE_COMPLETE in response to SETUP. Fix sending a RELEASE_COMPLETE in response to a SETUP if chan_misdn does not have a B channel available to assign to the call. (closes issue ABE-2869) Reported by: Guenther Kelleter Patches: setup-reject_2.diff (license #6372) patch uploaded by Guenther Kelleter Modified ........ Merged revision 376949 from https://origsvn.digium.com/svn/asterisk/be/branches/C.3-bier 2012-11-30 17:04 +0000 [r376919] Sean Bright * funcs/func_volume.c: Minor spelling fix to the VOLUME documentation. 2012-11-30 16:12 +0000 [r376901] Mark Michelson * channels/chan_sip.c: Fix potential crashes during SIP attended transfers. The principal behind this patch is simple. During a transfer, we manipulate channels that are owned by a separate thread than the one we currently are running in, so it makes sense that we need to grab a reference to the channels so that they cannot disappear out from under us. In the wild, crashes were sometimes seen when the transferring party would hang up the call before the transfer target answered the call. The most common place to see the crash occur was when attempting to send a connected line update to the transferer channel. (closes issue ASTERISK-20226) Reported by Jared Smith Patches: ASTERISK-20226.patch uploaded by Mark Michelson (License #5049) Tested by: Jared Smith 2012-11-29 22:55 +0000 [r376864-376868] Richard Mudgett * channels/chan_local.c: chan_local: Fix local_pvt ref leak in local_devicestate(). Regression introduced by ASTERISK-20390 fix. (closes issue ASTERISK-20769) Reported by: rmudgett Tested by: rmudgett * channels/chan_sip.c: Fix compile error. (issue ASTERISK-20724) 2012-11-29 21:49 +0000 [r376834] Michael L. Young * channels/chan_sip.c: Improve Code Readability And Fix Setting natdetected Flag For 1.8, 10, 11 and trunk we are are improving the code readability. For 11 and trunk, auto nat detection was added. The natdetected flag was being set to 1 when the host address in the VIA header did not specifiy a port. This patch fixes this by setting the port on the temporary sock address used to SIP_STANDARD_PORT in order for the sock address comparison to work properly. (closes issue ASTERISK-20724) Reported by: Michael L. Young Patches: asterisk-20724-set-port-v2.diff uploaded by Michael L. Young (license 5026) Review: https://reviewboard.asterisk.org/r/2206/ 2012-11-29 00:42 +0000 [r376758-376788] Richard Mudgett * main/astmm.c, main/asterisk.c: Add MALLOC_DEBUG atexit unreleased malloc memory summary. * Adds the following CLI commands to control MALLOC_DEBUG reporting of unreleased malloc memory when Asterisk is shut down. memory atexit list on memory atexit list off memory atexit summary byline memory atexit summary byfunc memory atexit summary byfile memory atexit summary off * Made check all remaining allocated region blocks atexit for fence violations. * Increased the allocated region hash table size by about three times. It still isn't large enough considering the number of malloced blocks Asterisk uses. * Made CLI "memory show allocations anomalies" use regions_check_all_fences(). Review: https://reviewboard.asterisk.org/r/2196/ * main/astmm.c: Enhance MALLOC_DEBUG CLI commands. * Fixed CLI "memory show allocations" misspelling of anomalies option. The command will still accept the original misspelling. * Miscellaneous tweaks to CLI "memory show allocations" command output format. * Made CLI "memory show summary" summarize by line number instead of by function if a filename is given. * Made CLI "memory show summary" sort its output by filename or function-name/line-number depending upon request. * Miscellaneous tweaks to CLI "memory show summary" command output format. 2012-11-28 16:23 +0000 [r376725] Jonathan Rose * main/manager.c: manager: Make challenge work with allowmultiplelogin=no Prior to this patch, challenge would yield a multiple logins error if used without providing the username (which isn't really supposed to be an argument to challenge) if allowmultiplelogin was set to no because allowmultiplelogin finds a user with a zero length login name. This check is simply disabled for the challenge action when the username is empty by this patch. (closes issue ASTERISK-20677) Reported by: Vladimir Patches: challenge_action_nomultiplelogin.diff uploaded by Jonathan Rose (license 6182) 2012-11-27 23:47 +0000 [r376627-376688] Richard Mudgett * UPGRADE.txt, main/pbx.c: Fix extension matching with the '-' char. The '-' char is supposed to be ignored by the dialplan extension matching. Unfortunately, it's treatment is not handled consistently throughout the extension matching code. * Made the old exten matching code consistently ignore '-' chars. * Made the old exten matching code consistently handle case in the matching. * Made ignore empty character sets. * Fixed ast_extension_cmp() to return -1, 0, or 1 as documented. The only user of it in pbx_lua.c was testing for -1. It was originally returning the strcmp() value for less than which is not usually going to be -1. * Fix character set sorting if the sets have the same number of characters and start with the same character. Character set [0-9] now sorts before [02-9a] as originally intended. * Updated some extension label and priority already in use warnings to also indicate if the extension is aliased. (closes issue ASTERISK-19205) Reported by: Philippe Lindheimer, Birger "WIMPy" Harzenetter Tested by: rmudgett Review: https://reviewboard.asterisk.org/r/2201/ * pbx/pbx_dundi.c, addons/res_config_mysql.c, apps/app_celgenuserevent.c: Remove unnecessary channel module references. * Removed call to ast_module_user_hangup_all() in res_config_mysql.c since it is effectively a noop. No channels can attach a reference to that module. * Removed call to ast_module_user_hangup_all() in app_celgenuserevent.c. The caller of unload_module() has already called it. * Removed redundant channel module references in pbx_dundi.c. The registered dialplan function callback dispatchers for the read/read2/write callbacks already reference the module before calling. * pbx_dundi: Moved unregistering CLI commands, DUNDi switch, and dialplan functions to the first thing the unload_module() does. This will reduce the chance of new channels using DUNDi services while the module is being torn down. * include/asterisk/linkedlists.h: Made AST_LIST_REMOVE() simpler and use better names. * Update doxygen of AST_LIST_REMOVE(). 2012-11-22 23:51 +0000 [r376586] Matthew Jordan * include/asterisk/lock.h, main/lock.c, main/logger.c: Re-initialize logmsgs mutex upon logger initialization to prevent lock errors Similar to the patch that moved the fork earlier in the startup sequence to prevent mutex errors in the recursive mutex surrounding the read/write thread registration lock, this patch re-initializes the logmsgs mutex. Part of the start up sequence before forking the process into the background includes reading asterisk.conf; this has to occur prior to the call to daemon in order to read startup parameters. When reading in a conf file, log statements can be generated. Since this can't be avoided, the mutex instead is re-initialized to ensure a reset of any thread tracking information. This patch also includes some additional debugging to catch errors when locking or unlocking the recursive mutex that surrounds locks when the DEBUG_THREADS build option is enabled. DO_CRASH or THREAD_CRASH will cause an abort() if a mutex error is detected. (issue ASTERISK-19463) Reported by: mjordan Tesetd by: mjordan 2012-11-20 16:45 +0000 [r376521] Mark Michelson * channels/sip/include/sip.h, channels/chan_sip.c: Add "Require: timer" to 200 OK responses when appropriate. The method by which the Require header is added to 200 responses is inspired by the method that Olle Johansson uses in his darjeeling-prack branch. (closes issue ASTERISK-20570) Reported by Matt Jordan, at the behest of Olle Johansson Review: https://reviewboard.asterisk.org/r/2172 2012-11-19 19:30 +0000 [r376469] Walter Doekes * main/indications.c, channels/chan_sip.c, main/security_events.c: Fix most leftover non-opaque ast_str uses. Instead of calling str->str, one should use ast_str_buffer(str). Same goes for str->used as ast_str_strlen(str) and str->len as ast_str_size(str). Review: https://reviewboard.asterisk.org/r/2198 2012-11-18 20:11 +0000 [r376428] Matthew Jordan * main/utils.c, main/stdtime/localtime.c, main/asterisk.c: Reorder startup sequence to prevent lockups when process is sent to background Although it is very rare and timing dependent, the potential exists for the call to 'daemon' to cause what appears to be a deadlock in Asterisk during startup. This can occur when a recursive mutex is obtained prior to the daemon call executing. Since daemon uses fork to send the process into the background, any threading primitives are unsafe to re-use after the call. Implementations of pthread recursive mutexes are highly likely to store the thread identifier of the thread that previously obtained the mutex. If the mutex was locked prior to the fork, a subsequent unlock operation will potentially fail as the thread identifier is no longer valid. Since the mutex is still locked, all subsequent attempts to grab the mutex by other threads will block. This behavior exhibited itself most often when DEBUG_THREADS was enabled, as this compile time option surrounds the mutexes in Asterisk with another recursive mutex that protects the storage of thread related information. This made it much more likely that a recursive mutex would be obtained prior to daemon and unlocked after the call. This patch does the following: a) It backports a patch from Asterisk 11 that prevents the spawning of the localtime monitoring thread. This thread is now spawned after Asterisk has fully booted. b) It re-orders the startup sequence to call daemon earlier during Asterisk startup. This limits the potential of threading primitives being accessed by initialization calls before daemon is called. c) It removes calls to ast_verbose/ast_log/etc. prior to daemon being called. Developers should send error messages directly to stderr prior to daemon, as calls to ast_log may access recursive mutexes that store thread related information. d) It reorganizes when thread local storage is created for storing lock information during the creation of threads. Prior to this patch, the read/write lock protecting the list of threads in ast_register_thread would utilize the lock in the thread local storage prior to it being initialized; this patch prevents that. On a very related note, this patch will *greatly* improve the stability of the Asterisk Test Suite. Review: https://reviewboard.asterisk.org/r/2197 (closes issue ASTERISK-19463) Reported by: mjordan Tested by: mjordan 2012-11-16 19:31 +0000 [r376389] Jonathan Rose * res/res_monitor.c: monitor: prevent attempts to move/remove recordings skipped with 'i' and 'o'. The i and o options for monitor skip the input and output sides of a recording respectively. This patch addresses a problem in those options when monitor is called without specifying a specific filename where monitor will try to move the recording that was skipped. Since this usually doesn't exist when these options are used, it would produce a warning when it does this in most cases, but it is conceivable that there are use cases where this could result in moving/removing a file unintentionally. (closes issue ASTERISK-20641) Reported by: Jonathan Rose Review: https://reviewboard.asterisk.org/r/2190/ 2012-11-15 23:58 +0000 [r376340] David M. Lee * utils/extconf.c: Fixed extconf.c breakage introduced in r376306. To quote wdoekes: > Note that I'm not confirming legitimacy of having that file in tree at > all. Is anyone using aelparse/conf2ael? 2012-11-15 22:40 +0000 [r376307] Jonathan Rose * apps/app_meetme.c: app_meetme: Fix channels lingering when hung up under certain conditions Channels would get stuck and MeetMe would repeatedly display an Unable to write frame to channel error in the conf_run function if hung up during certain sound prompts such as during user count announcements. This patch fixes that by reintroducing a hangup check in the meetme's main loop (also in conf_run). (closes issue ASTERISK-20486) Reported by: Michael Cargile Review: https://reviewboard.asterisk.org/r/2187/ Patches: meetme_hangup_patch_ASTERISK-20486_v3.diff uploaded by Jonathan Rose (license 6182) 2012-11-15 22:27 +0000 [r376306] David M. Lee * tests/test_hashtab_thrash.c (added), utils/hashtest2.c (removed), include/asterisk/hashtab.h, utils/Makefile, tests/test_astobj2_thrash.c (added), utils/utils.xml, utils/hashtest.c (removed): Migrate hashtest/hashtest2 to be unit tests. Both hashtest and hashtest2 are manual testing apps that thrash hash tables (hashtab and ao2 containers, respectively), by spinning up several threads that randomly insert, delete, lookup and iterate over the hash table. If the app doesn't crash, the hash table probably passes the test. Those utils are not a part of the typical Asterisk build, so they do not usually get compiled. This all makes them less that useful. This patch removes those manual test programs and replaces them with Asterisk unit test modules (test_{hashtab,astobj2}_thrash.so). It also attempts to make the tests more deterministic. * Rather than spinning up some number of threads that operate on the hash table randomly, spin up four threads that concurrenly add, remove, lookup and iterate over the hash table. * Each thread checks the state of the hash table both during and after execution, and indicates a test failure if things are not as expected. * Each thread times out after 60 seconds to prevent deadlocking the unit test run. (closes issue ASTERISK-20505) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/2189/ 2012-11-15 01:43 +0000 [r376262] Rusty Newton * apps/app_voicemail.c: Patch to play correct sound file when a voicemail's urgent status is removed We were attempting to play "vm-urgent-removed", which didn't exist. Now we play "vm-marked-nonurgent" which exists and is the correct sound file. Previous behavior was silence and a warning on the CLI. (issue ASTERISK-20280) (closes issue ASTERISK-20280) Reported by: Tomo Takebe Tested by: Rusty Newton Patches: asterisk20280.patch uploaded by Rusty Newton (license 5829) 2012-11-14 19:48 +0000 [r376232] Richard Mudgett * pbx/pbx_spool.c: Fix call files when astspooldir is relative. Future dated call files are ignored when astspooldir is relative to the current directory. The queue_file() assumed that the qdir needed to be prepended if the given filename did not start with a '/'. If astspooldir is relative it is not going to start from the root directory obviously so it will not start with a '/'. The filename used in queue_file() ultimately results in qdir prepended multiple times. * Made queue_file() not prepend qdir if the filename contains a '/'. (closes issue ASTERISK-20593) Reported by: James Le Cuirot Patches: 0004-Fix-future-call-files-from-relative-directories.patch (license #6439) patch uploaded by James Le Cuirot 2012-11-13 18:10 +0000 [r376199] Brent Eagles * main/channel.c: Patch to prevent stopping the active generator when it is not the silence generator. This patch introduces an internal helper function to safely check whether the current generator is the one that is expected before deactivating it. The current externally accessible ast_channel_stop_generator() function has been modified to be implemented in terms of the new function. (closes issue ASTERISK-19918) Reported by: Eduardo Abad 2012-11-12 20:44 +0000 [r376166] Joshua Colp * main/pbx.c: Properly check if the "Context" and "Extension" headers are empty in a ShowDialPlan action. The code which handles the ShowDialPlan action wrongly assumed that a non-NULL return value from the function which retrieves headers from an action indicates that the header has a value. This is incorrect and the contents must be checked to see if they are blank. (closes issue ASTERISK-20628) Reported by: jkroon Patches: asterisk-showdialplan-incorrect-error.patch uploaded by jkroon 2012-11-12 20:13 +0000 [r376142] Michael L. Young * main/pbx.c: Fix Dynamic Hints Variable Substition - Underscore Problem When adding a dynamic hint, if an extension contains an underscore no variable subsitution is being performed. This patch changes from checking if the extension contains an underscore to checking if the extension begins with an underscore. (closes issue ASTERISK-20639) Reported by: Steven T. Wheeler Tested by: Steven T. Wheeler, Michael L. Young Patches: asterisk-20639-dynamic-hint-underscore.diff uploaded by Michael L. Young (license 5026) Review: https://reviewboard.asterisk.org/r/2188/ 2012-11-08 21:56 +0000 [r376087] Mark Michelson * res/res_fax.c: Fix a "set but not used" warning on newer gccs. Turns out the "helpful" setting of ms and res in this macro is completely useless after the timeout antipattern fix. If you're a new guy looking to write code, don't write a macro like this one. 2012-11-08 21:05 +0000 [r376029-376058] Richard Mudgett * channels/sig_ss7.c: chan_dahdi/SS7: Made reject incoming call for an in-alarm or blocked channel. If a SS7 call comes in requesting a CIC that is in-alarm, the call is accepted and connects if the extension exists in the dialplan. The call does not have any audio. * Made release the call immediately with circuit congestion cause. (closes issue ASTERISK-20204) Reported by: Tuan Le Patches: jira_asterisk_20204_v1.8.patch (license #5621) patch uploaded by rmudgett * main/utils.c, main/astmm.c, main/asterisk.c, include/asterisk/utils.h, include/asterisk/astmm.h: Add MALLOC_DEBUG enhancements. * Makes malloc() behave like calloc(). It will return a memory block filled with 0x55. A nonzero value. * Makes free() fill the released memory block and boundary fence's with 0xdeaddead. Any pointer use after free is going to have a pointer pointing to 0xdeaddead. The 0xdeaddead pointer is usually an invalid memory address so a crash is expected. * Puts the freed memory block into a circular array so it is not reused immediately. * When the circular array rotates out a memory block to the heap it checks that the memory has not been altered from 0xdeaddead. * Made the astmm_log message wording better. * Made crash if the DO_CRASH menuselect option is enabled and something is found. * Fixed a potential alignment issue on 64 bit systems. struct ast_region.data[] should now be aligned correctly for all platforms. * Extracted region_check_fences() from __ast_free_region() and handle_memory_show(). * Updated handle_memory_show() CLI usage help. Review: https://reviewboard.asterisk.org/r/2182/ 2012-11-07 17:08 +0000 [r375993-375994] Mark Michelson * channels/chan_sip.c: Remove some debugging that accidentally made it in the last commit. * main/utils.c, include/asterisk/channel.h, apps/app_queue.c, channels/sig_pri.c, channels/chan_iax2.c, main/channel.c, channels/chan_dahdi.c, channels/sig_analog.c, apps/app_waitforring.c, include/asterisk/time.h, apps/app_jack.c, apps/app_dial.c, main/pbx.c, main/rtp_engine.c, channels/chan_sip.c, apps/app_meetme.c, res/res_fax.c, apps/app_record.c, channels/chan_agent.c: Fix misuses of timeouts throughout the code. Prior to this change, a common method for determining if a timeout was reached was to call a function such as ast_waitfor_n() and inspect the out parameter that told how many milliseconds were left, then use that as the input to ast_waitfor_n() on the next go-around. The problem with this is that in some cases, submillisecond timeouts can occur, resulting in the out parameter not decreasing any. When this happens thousands of times, the result is that the timeout takes much longer than intended to be reached. As an example, I had a situation where a 3 second timeout took multiple days to finally end since most wakeups from ast_waitfor_n() were under a millisecond. This patch seeks to fix this pattern throughout the code. Now we log the time when an operation began and find the difference in wall clock time between now and when the event started. This means that sub-millisecond timeouts now cannot play havoc when trying to determine if something has timed out. Part of this fix also includes changing the function ast_waitfor() so that it is possible for it to return less than zero when a negative timeout is given to it. This makes it actually possible to detect errors in ast_waitfor() when there is no timeout. (closes issue ASTERISK-20414) reported by David M. Lee Review: https://reviewboard.asterisk.org/r/2135/ 2012-11-06 18:18 +0000 [r375964] Richard Mudgett * include/asterisk/channel.h, .cleancount, include/asterisk/features.h, main/channel.c, main/features.c: Fix stuck DTMF when bridge is broken. When a bridge is broken by an AMI Redirect action or the ChannelRedirect application, an in progress DTMF digit could be stuck sending forever. * Made simulate a DTMF end event when a bridge is broken and a DTMF digit was in progress. (closes issue ASTERISK-20492) Reported by: Jeremiah Gowdy Patches: bridge_end_dtmf-v3.patch.txt (license #6358) patch uploaded by Jeremiah Gowdy Modified to jira_asterisk_20492_v1.8.patch jira_asterisk_20492_v1.8.patch (license #5621) patch uploaded by rmudgett Tested by: rmudgett Review: https://reviewboard.asterisk.org/r/2169/ 2012-12-10 Asterisk Development Team * Asterisk 1.8.19.0 Released. 2012-12-06 Asterisk Development Team * Asterisk 1.8.19.0-rc3 Released. * chan_local: Fix local_pvt ref leak in local_devicestate(). Regression introduced by ASTERISK-20390 fix. (closes issue ASTERISK-20769) Reported by: rmudgett 2012-12-05 Asterisk Development Team * Asterisk 1.8.19.0-rc2 Released. * Fix a SIP request memory leak with TLS connections. During the TLS re-work in chan_sip some TLS specific code was moved into a separate function. This function operates on a copy of the incoming SIP request. This copy was never deinitialized causing a memory leak for each request processed. This function is now given a SIP request structure which it can use to copy the incoming request into. This reduces the amount of memory allocations done since the internal allocated components are reused between packets and also ensures the SIP request structure is deinitialized when the TLS connection is torn down. (closes issue ASTERISK-20763) Reported by: deti 2012-11-06 Asterisk Development Team * Asterisk 1.8.19.0-rc1 Released. 2012-11-05 22:50 +0000 [r375893] Matthew Jordan * bridges/bridge_softmix.c, include/asterisk/timing.h, res/res_musiconhold.c, channels/chan_iax2.c, res/res_fax_spandsp.c, res/res_timing_kqueue.c, main/timing.c, main/channel.c, res/res_timing_pthread.c, res/res_timing_dahdi.c, res/res_timing_timerfd.c: Refactor ast_timer_ack to return an error and handle the error in timer users Currently, if an acknowledgement of a timer fails Asterisk will not realize that a serious error occurred and will continue attempting to use the timer's file descriptor. This can lead to situations where errors stream to the CLI/log file. This consumes significant resources, masks the actual problem that occurred (whatever caused the timer to fail in the first place), and can leave channels in odd states. This patch propagates the errors in the timing resource modules up through the timer core, and makes users of these timers handle acknowledgement failures. It also adds some defensive coding around the use of timers to prevent using bad file descriptors in off nominal code paths. Note that the patch created by the issue reporter was modified slightly for this commit and backported to 1.8, as it was originally written for Asterisk 10. (issue ASTERISK-20032) Reported by: Jeremiah Gowdy patches: jgowdy-timerfd-6-22-2012.diff uploaded by Jeremiah Gowdy (license 6358) 2012-11-05 21:36 +0000 [r375862] Richard Mudgett * main/loader.c: Add safety NULL pointer check in module user references. Made __ast_module_user_remove() check for NULL pointers. ........ Merged revision 375860 from C.3 2012-11-04 03:06 +0000 [r375727-375800] Matthew Jordan * main/manager.c: Don't attempt to purge sessions when no sessions exist Manager's tcp/tls objects have a periodic function that purge old manager sessions periodically. During shutdown, the underlying container holding those sessions can be disposed of and set to NULL before the tcp/tls periodic function is stopped. If the periodic function fires, it will attempt to iterate over a NULL container. This patch checks for whether or not the sessions container exists before attempting to purge sessions out of it. If the sessions container is NULL, we simply return. Note that this error was also caught by the Asterisk Test Suite. * main/manager.c: Properly clean up manager resources on exit This patch does two things: 1) It properly unregisters the manager CLI commands 2) It cleans up AMI users on exit. Prior to this patch, the AMI users were not being disposed of properly, resulting in a memory leak. (closes issue ASTERISK-20646) Reported by: Corey Farrell patches: manager_shutdown.patch uploaded by Corey Farrell (license 5909) * main/xmldoc.c: Fix memory leak when unloading XML documentation This patch is a modified version of a patch originally committed for the Asterisk 11 branch in r375756. A portion of that patch, that fixed the memory leak during unloading XML documentation, applies to branches 1.8 and 10 as well. The patch for this issue was modified for these two branches. (issue ASTERISK-20648) Reported by: Corey Farrell Tested by: mjordan patches: xmldoc-memory_leak.patch uploaded by Corey Farrell (license 5909) * main/cdr.c: Prevent multiple CDR batches from conflicting when scheduling the CDR write The Asterisk Test Suite caught an error condition where a scheduled CDR batch write can be deleted twice if two channels attempt to post their CDRs at the same time. The batch CDR mutex is locked while the CDRs are appended to the current batch list; however, it is unlocked prior to actually scheduling the CDR write. As such, two threads can attempt to remove the currently scheduled batch write at the same time, resulting in an assertion error. This patch extends the time that the mutex is locked to encompass actually scheduling the write. This prevents two threads from unscheduling the currently scheduled write at the same time. 2012-11-03 03:11 +0000 [r375698] Andrew Latham * README, include/asterisk/doxyref.h: Doxygen Updates Replace links to missing text files removed in the 1.6.x series with links to the wiki. Doxygen can handle URLs fine, don't atempt to quote them. Also update the wiki link in the Readme to get everyone on the same page. (issue ASTERISK-20259) 2012-11-02 20:48 +0000 [r375625-375658] Richard Mudgett * main/channel.c, channels/chan_misdn.c, main/ccss.c: Things don't need to be that const. * channels/misdn/isdn_lib.c, channels/misdn/isdn_lib.h: Multiple revisions 375519-375524 ........ r375519 | rmudgett | 2012-10-30 16:06:15 -0500 (Tue, 30 Oct 2012) | 11 lines chan_misdn: Timer primitives must be handled first. The frm->addr is a different "address space" than the stack/instance address of other Lx primitives. The test for B channel instance address could fail. Patches: patch01_timers.diff (license #6372) patch uploaded by Guenther Kelleter JIRA ABE-2888 ........ r375520 | rmudgett | 2012-10-30 16:14:58 -0500 (Tue, 30 Oct 2012) | 10 lines chan_misdn: Free memory in error paths and other memory leaks. The one line commented with BUG is not easily fixable because there is no de-init function one can call. Patches: patch02_memory.diff (license #6372) patch uploaded by Guenther Kelleter JIRA ABE-2888 ........ r375521 | rmudgett | 2012-10-30 16:38:41 -0500 (Tue, 30 Oct 2012) | 14 lines chan_misdn: ISDN NT L2 de-establish/establish * An NT-PTMP cannot de/establish L2 since it doesn't know the TEIs. * On NT-PTP L2 is started when L1 is finally active in handle_l1. * L2 deactivation logging cleanup. * L2 aggregate link status is unknown for NT-PTMP, show as "UNKN". * Removed unused functions and code for L2 handling. Patches: patch03_L2estab.diff (license #6372) patch uploaded by Guenther Kelleter Modified JIRA ABE-2888 ........ r375522 | rmudgett | 2012-10-30 16:56:14 -0500 (Tue, 30 Oct 2012) | 22 lines chan_misdn: Fix broken upper_id/lower_id usage. Sending PH prim via lower_id layer (3 or 1) simply does not work. For TE (3) it returns an error (len=-6) which is not evaluated by handle_l1(), so the L1 layer status ends up wrong. Instead PH must be sent via L4, only then does it reach L1 without an error message. And NT PH prims only reach L1 when they are sent to layer 2 id. --> use upper_id to send PH primitives. * Check for errors in PH_(DE)ACTIVATE | CONFIRM. * Debug messages are improved. * The lower_id is now not used for anything, except: Why is lower_id layer deleted when it wasn't created? I removed this code since it looks very wrong. Patches: patch04_l1activation.diff (license #6372) patch uploaded by Guenther Kelleter JIRA ABE-2888 ........ r375523 | rmudgett | 2012-10-30 17:29:15 -0500 (Tue, 30 Oct 2012) | 31 lines chan_misdn: Fix loss of B channels if L1 is down. If you make 2 calls out an NT PTMP port which is not connected to any phone, the B channel associated with that call becomes unusable until Asterisk is restarted. The problem is the EVENT_SETUP is queued when L1 is not up in misdn_lib_send_event(). If L1 cannot be activated the event won't be dequeued. It gets even worse when the call is hung up. The queued EVENT_SETUP will be overwritten by an EVENT_DISCONNECT. The reserved B channel then will never be freed. If later someone connects a phone to the port, L1 will eventually activate and the queued EVENT_DISCONNECT is sent down the stack. However, it is ignored because it is the wrong call state. The real fix would be that activation and queueing for a new SETUP is done by the NT stack. But since it doesn't, the workaround must be removed because it doesn't always work. Fix: The event is no longer queued but immediately sent to the stack. If L1 cannot be activated, the L3 state machine that was started by the EVENT_SETUP will do its work, i.e. a timeout will release the B channel properly. The SETUP possibly cannot be sent the first time but is resent by T303 in case L1 could be activated. Patches: patch05_bchan-loss.diff (license #6372) patch uploaded by Guenther Kelleter Modified JIRA ABE-2888 ........ r375524 | rmudgett | 2012-10-30 18:26:05 -0500 (Tue, 30 Oct 2012) | 13 lines chan_misdn: Remove some calls to exit(). Try proper cleanup when something goes wrong in misdn_lib_init(). Especially do not call exit()! * Fix memory leak because stack_destroy() does not free the stack struct. Patches: patch06_cleanup-init.diff (license #6372) patch uploaded by Guenther Kelleter Modified JIRA ABE-2888 ........ Merged revisions 375519-375524 from https://origsvn.digium.com/svn/asterisk/be/branches/C.3-bier 2012-11-02 16:58 +0000 [r375594] Michael L. Young * channels/chan_sip.c: Fix Wrong Result In Debug Message For SDP Origin Processing While looking at some debug logs, I noticed that it was being reported that the SDP origin line was unsupported or failed. Upon looking into this on my local machine, I found that I too was getting this debug message yet everything seemed to be getting processed properly. What was discovered is, that, the variable to determine what is displayed in the debug message for the SDP line that was processed, was not being set for the origin line when the result was successful. This patch fixes this and was tested on local machine. 2012-10-31 14:23 +0000 [r375528] Matthew Jordan * res/res_calendar_ews.c: Properly extract the Body information of an EWS calendar item Unlike all other calendar modules, res_calendar_ews fails to extract the Body information for a calendar item. This is due, in part, to a quirk in the schema in the XML - not only does a CalendarItem contain a Body element, but the CalendarItem exists as a descendant of a different Body element. The neon parser was erroneously skipping all Body elements. This patch fixes that by bypassing Body elements that are not a child of CalendarItem, and parsing the Body element out if it is a child. Note that the original patch by Terry Wilson only needed slight modifications to make it properly pull the Body information out; as such, while I've linked to the patch that I uploaded for Dmitry, I've attributed the patch to Terry. (closes issue ASTERISK-19738) Reported by: Dmitry Burilov Tested by: Dmitry Burilov patches: calendar_ews_body_2012_10_29.diff uploaded by Terry Wilson (license 6283) 2012-10-30 18:48 +0000 [r375484] Jonathan Rose * apps/app_mixmonitor.c: mixmonitor: Add a test event This test event is being used to fix the mixmonitor_audiohook_inherit test. 2012-10-30 02:07 +0000 [r375450] Matthew Jordan * apps/app_queue.c: Ensure that the Queue application tracks busy members in off nominal situations There are a few code paths where the Queue application fails to count a paused or in use queue member as being 'busy'. This can cause callers to get stuck in the Queue until a paused agent unpauses themselves. (closes issue ASTERISK-20623) Reported by: Bryan Walters patches: app_queue.patch uploaded by Bryan Walters (license 5851) 2012-10-29 21:01 +0000 [r375415] Mark Michelson * channels/chan_sip.c: Prevent resetting of NATted realtime peer address on reload. If a "sip reload" is issued for a SIP peer, then his IP address will be cleared, thus resulting in forgetting the public IP address. Asterisk will then attempt to route SIP traffic to the private IP address. The fix here is to make "sip reload" ignore realtime peers when "host = dynamic" is spotted. Realtime peers can now only have their IP address reset if they have gone from being not dynamic to being dynamic. (closes issue ASTERISK-18203) reported by daren ferreira (closes issue ASTERISK-20572) reported by JoshE Patches: fix_nat_realtime.diff uploaded by JoshE (license #6075) 2012-10-29 19:26 +0000 [r375361-375388] Richard Mudgett * main/features.c: Fix the Park 'r' option when a channel parks itself. When a channel uses the Park appliation to park itself with the 'r' option, the channel hears music-on-hold instead of the requested ringing. * Added a missing check for the 'r' option when a channel parks itself. (closes issue ASTERISK-19382) Reported by: James Stocks Patches by: dsessions Review: https://reviewboard.asterisk.org/r/2148/ * channels/chan_dahdi.c: chan_dahdi: Fix segfault dereferencing a NULL tech_pvt. The tech support customer was using the AMI Redirect action shortly after a call was placed. While the channel tried to do an ast_read(), the masquerade resulting from the channel redirect took place. The masquerade in the middle of the ast_read() resulted in the segfault. (closes issue AST-1025) Reported by: Trey Blancher Patches: jira_ast_1025_v1.8_v2.patch (license #5621) patch uploaded by rmudgett 2012-10-23 16:20 +0000 [r375272-375325] Jonathan Rose * contrib/scripts/ast_tls_cert: ast_tls_cert script: Better response for various exit conditions to openssl (closes issue ASTERISK-20260) Reported by: Daniel O'Connor Patches: ast_tls_cert-update.diff uploaded by Daniel O'Connor (license 6419) * main/app.c: core: Fix a memory leak in app.c from an early return ast_app_group_match_get_count allocates memory with the regcomp function and we previously forgot to free it when bailing out due to a regex compilation failure against category. (closes issue AST-1018) Reported by: Guenther Kelleter Patches: regcomp_memleak.diff uploaded by Guenther Kelleter (license 6372) * codecs/gsm/src/code.c: GSM: Fix encoding problems with GSM (closes issue ASTERISK-20457) Reported by: Richard Miller Patches: code.patch uploaded by Richard Miller (license 5685) 2012-10-18 21:36 +0000 [r375216-375244] Jonathan Rose * UPGRADE.txt: Correct version number in Upgrade.txt release notes pertaining to queue order Showed 1.8.17 to 1.8.18, needs to be 1.8.18 to 1.8.19 * UPGRADE.txt: app_queue: add upgrade notes for 375216 Adds notes describing behavioral changes to rrmemory strategy caused by 375216 (issue AST-989) Reported by: Thomas Arimont * apps/app_queue.c: app_queue: Make ordering of rrmemory/rrordered persist over add/remove members Prior to this patch, adding, removing or reloading members to rrmemory would cause the order to become completely jumbled. Now it behaves more or less like rrordered other than the fact that it stores the members on a hash table rather than a linked list. This patch also prevents removal of members and member reloads from jumbling rrordered queues. (issue AST-989) Reported by: Thomas Arimont Review: https://reviewboard.asterisk.org/r/2164/ 2012-10-18 19:42 +0000 [r375189] Richard Mudgett * makeopts.in, Makefile, build_tools/make_version, configure, configure.ac: build_tools: Allow Asterisk to report git SHAs in version string. Make git more attractive for managing work-in-progress. Especially convenient when a potential patch set needs to be tested on multiple platforms since one can use git to keep all the test environments in sync independent of a subversion server. Now the Asterisk version will show the exact git SHA5 that was used when building (still appended by "M" if there are local modifications) from a git clone of the Asterisk repository so the developer can more easily know what is actually under test. You will now get this: $ asterisk -V Asterisk GIT-1698298 Instead of this: $ asterisk -V Asterisk UNKNOWN__and_probably_unsupported This has zero impact for those not using git with the exception of an extra test in the configure script to gather git's path. This is necessary to prevent "sudo make install" from failing since git may not be in the path in make's shell environment. (closes issue ASTERISK-20483) Reported by: Shaun Ruffell Patches: 0001-build_tools-Allow-Asterisk-to-report-git-SHAs-in-ver.patch (license #5417) patch uploaded by Shaun Ruffell Modified 2012-10-17 18:55 +0000 [r375146] Kinsey Moore * main/tcptls.c: Ensure Asterisk fails TCP/TLS SIP calls when certificate checking fails When placing a call to a TCP/TLS SIP endpoint whose certificate is not signed by a configured CA certificate, Asterisk would issue a warning and continue to process the call as if there was not an issue with the certificate. Asterisk now properly fails the call if the certificate fails verification or if the certificate does not exist when certificate checking is enabled (the default behavior). (closes issue ASTERISK-20559) Reported by: kmoore Review: https://reviewboard.asterisk.org/r/2163/ 2012-10-16 21:41 +0000 [r375074-375111] Walter Doekes * channels/chan_sip.c: Fixes to the fd-oriented SIP TCP reads. Don't crash on large user input. Allow SIP headers without space. Optimize code a bit. Review: https://reviewboard.asterisk.org/r/2162 * channels/chan_sip.c: Update sip_request_call SIP dial string documentation. This was missed when merging review r1859. 2012-10-16 19:13 +0000 [r375059] Tzafrir Cohen * contrib/scripts/autosupport: autosupport: fix bashism '==' is bashism (bashspecific, fails when dash is /bin/sh). Anyway, a 'case' works better there. (closes issue ASTERISK-20567) Reported by: Tzafrir Cohen 2012-10-15 21:00 +0000 [r375025] Mark Michelson * include/asterisk/strings.h, channels/chan_iax2.c, apps/app_dial.c, main/ccss.c: Fix some potential misuses of ast_str in the code. Passing an ast_str pointer by value that then calls ast_str_set(), ast_str_set_va(), ast_str_append(), or ast_str_append_va() can result in the pointer originally passed by value being invalidated if the ast_str had to be reallocated. This fixes places in the code that do this. Only the example in ccss.c could result in pointer invalidation though since the other cases use a stack-allocated ast_str and cannot be reallocated. I've also updated the doxygen in strings.h to include notes about potential misuse of the functions mentioned previously. Review: https://reviewboard.asterisk.org/r/2161 2012-10-14 08:59 +0000 [r374977] Tzafrir Cohen * config.guess, config.sub: Update config.guess and config.sub: 2012-10-10 Update config.guess and config.sub to revision fb456b34ef4aa02b95dc6be69aaa66fa94a844fb from the savannah.gnu.org git repo. Adds support for e.g. aarch64 (ARM 64bit). config.guess:timestamp='2012-09-25' config.sub:timestamp='2012-10-10' 2012-10-12 15:57 +0000 [r374905] Mark Michelson * include/asterisk/tcptls.h, main/tcptls.c, channels/chan_sip.c: Do not use a FILE handle when doing SIP TCP reads. This is used to solve an issue where a poll on a file descriptor does not necessarily correspond to the readiness of a FILE handle to be read. This change makes it so that for TCP connections, we do a recv() on the file descriptor instead. Because TCP does not guarantee that an entire message or even just one single message will arrive during a read, a loop has been introduced to ensure that we only attempt to handle a single message at a time. The tcptls_session_instance structure has also had an overflow buffer added to it so that if more than one TCP message arrives in one go, there is a place to throw the excess. Huge thanks goes out to Walter Doekes for doing extensive review on this change and finding edge cases where code could fail. (closes issue ASTERISK-20212) reported by Phil Ciccone Review: https://reviewboard.asterisk.org/r/2123 2012-10-11 15:42 +0000 [r374843] Matthew Jordan * main/cdr.c: Fix incorrect billing duration reported when batch mode is enabled Similar to r369351, the billing duration can be skewed when batch mode is enabled. This happened much more rarely than the duration, as it only occured when the call was answered (thereby indicating an actual answer time) and immediately hung up on (indicating a billsec of 0). Since a billing time of '0' can either mean that the call immediately ended or that the CDR was improperly answered, we have to use additional information to know whether or not we can trust the CDR billsec value. Prior to this patch, we looked to see if we had a valid answer time. If we did, and billsec was zero, we used the current time to calculate what billsec value we could from the CDR being written. If batch mode is enabled, this will incorrectly report a billsec value being much greater than the actual duration of the call. Instead of relying on the presence of an answer time to know whether or not we can re-calculate the billsec for the CDR, we now also use the presence of the CDR's end time to know if we need to re-calculate or whether we can trust the billsec value that we have. This prevents erroneous jumps in the billsec value, while still making sure that in the worst case, some billing time will be calculated. (closes issue AST-1016) Reported by: Thomas Arimont Tested by: Thomas Arimont 2012-10-10 20:52 +0000 [r374686-374802] Richard Mudgett * apps/app_queue.c: app_queue: Made pass connected line updates from the caller to ringing queue members. Party A calls Party B Party B puts Party A on hold. Party B calls a queue. Ringing queue member D sees Party B identification. Party B transfers Party A to the queue. Queue member D does not get a connected line update for Party A. Queue member D answers the call and still sees Party B information. However, if Party A later transfers the call to Party C then queue member D gets a connected line update for Party C. * Made pass connected line updates from the caller to queue members while the queue members are ringing. (closes issue AST-1017) Reported by: Thomas Arimont (closes issue ABE-2886) Reported by: Thomas Arimont Tested by: rmudgett ........ Merged revisions 374801 from https://origsvn.digium.com/svn/asterisk/be/branches/C.3-bier * main/pbx.c: Fix execution of 'i' extension due to uninitialized variable. The fix for ASTERISK-18243 added code that could potentially use dst_exten[] uninitialized. As a result the 'i' exten may not be executed when it should. (closes issue ASTERISK-20455) Reported by: Richard Miller Patches: pbx-1.8.16.0.diff (license #5685) patch uploaded by Richard Miller Made some cosmetic modifications. * configs/chan_dahdi.conf.sample: dahdi.conf.sample: Add description for "buffers" setting. This contains an edited version of the patch originally created by John Bigelow. (closes issue ASTERISK-14435) Reported by: John Bigelow Patches: buffers.patch (license #5091) patch uploaded by John Bigelow 0001-dahdi.conf.sample-Add-description-for-buffers-settin.patch (license #5417) patch uploaded by Shaun Ruffell Modified * pbx/pbx_spool.c: Fix deletion of unopenable spool files. If scan_service() cannot open the spool file, it logs a message saying that it will delete the file and calls remove_from_queue() to do it. However, remove_from_queue() fails to delete the spool file because struct outgoing has not yet been fully initialized. * Merged allocating a new struct outgoing and init_outgoing() into new_outgoing(). Allocation is initialization. * Made apply_outgoing() not initialize the spool filename in struct outgoing. * Made apply_outgoing() call ast_trim_blanks() and ast_skip_blanks() rather than manually inlining them. * Reduced indentation levels in apply_outgoing(). * Fixed a garbled comment in remove_from_queue(). * Reworked scan_service() to simplify it. (closes issue ASTERISK-17231) Reported by: David Chappell Patches: spool_open_failure.diff (license #4997) patch uploaded by David Chappell Started with this patch. 2012-11-06 Asterisk Development Team * Asterisk 1.8.18.0 Released. 2012-10-08 Asterisk Development Team * Asterisk 1.8.18.0-rc1 Released. 2012-10-05 20:20 +0000 [r374570-374581] dlee : * main/manager.c: I've committed too much. Reverting part of r374570. * main/manager.c: Improve AMI long line error handling In AMI's parser, when it receives a long line (> 1024 characters), it discards that line, but continues to process the message normally. Typically, this is not a problem because a) who has lines that long and b) usually a discarded line results in an invalid message. But if that line is specifying an optional field, then the message will be processed, you get a 'Response: Success', but things don't work the way you expected them to. This patch changes the behavior when a line-too-long parse error occurs. * Changes the log message to avoid way-too-long (and truncated anyways) log messages * Adds a 'parsing' status flag to Response: Success * Sets parsing = MESSAGE_LINE_TOO_LONG if, well, a line is too long * Responds with an appropriate error if parsing != MESSAGE_OKAY (closes issue AST-961) Reported by: John Bigelow Review: https://reviewboard.asterisk.org/r/2142/ 2012-10-05 18:20 +0000 [r374536] Richard Mudgett * channels/misdn/isdn_msg_parser.c, channels/misdn/isdn_lib.c, channels/misdn/isdn_lib.h, channels/chan_misdn.c: Merged revisions 374515-374535 from https://origsvn.digium.com/svn/asterisk/be/branches/C.3-bier ................ r374515 | rmudgett | 2012-10-04 17:52:36 -0500 (Thu, 04 Oct 2012) | 10 lines chan_misdn: Remove some deadcode * Made setup_bc() static. Patches: patch1_unused-code.diff (license #6372) patch uploaded by Guenther Kelleter Modified JIRA ABE-2882 ................ r374516 | rmudgett | 2012-10-04 18:01:01 -0500 (Thu, 04 Oct 2012) | 7 lines chan_misdn: Remove unused bchan states Patches: patch2_unused-states.diff (license #6372) patch uploaded by Guenther Kelleter JIRA ABE-2882 ................ r374517 | rmudgett | 2012-10-04 18:17:51 -0500 (Thu, 04 Oct 2012) | 16 lines chan_misdn: Remove unnecessary null pointer checks and checks for stack->nt * cleanup_bc() is always called with valid bc (or it would've crashed before). * Value of stack->nt is known in advance at some places. * Rename handle_event() to handle_event_te(), handle_frm() to handle_frm_te(). Patches: patch3_checks.diff (license #6372) patch uploaded by Guenther Kelleter Modified JIRA ABE-2882 ................ r374518 | rmudgett | 2012-10-04 18:21:59 -0500 (Thu, 04 Oct 2012) | 7 lines chan_misdn: Fix spelling in log messages Patches: patch4_spelling.diff (license #6372) patch uploaded by Guenther Kelleter JIRA ABE-2882 ................ r374519 | rmudgett | 2012-10-04 18:31:59 -0500 (Thu, 04 Oct 2012) | 15 lines chan_misdn: Don't cleanup a bc twice. In handle_frm_te() after calling misdn_lib_send_event(bc, EVENT_RELEASE_COMPLETE) bc is emptied, cleaned and set not in use, although misdn_lib_send_event() already did the same. This is bad. When it's not in use we are not allowed to touch it. * Moved log message in front of the resulting actions and fixed it to match the case. Patches: patch5_bccleanup.diff (license #6372) patch uploaded by Guenther Kelleter JIRA ABE-2882 ................ r374520 | rmudgett | 2012-10-04 18:43:56 -0500 (Thu, 04 Oct 2012) | 12 lines chan_misdn: Fix memory leaks, bc, chan not cleaned up etc., really bad stuff. * Fix return codes of cb_events() for EVENT_SETUP to use caller's cleanup mechanisms. * Move cl_queue_chan() call after bearer check. Patches: patch6_leaks.diff (license #6372) patch uploaded by Guenther Kelleter JIRA ABE-2882 ................ r374521 | rmudgett | 2012-10-04 18:48:38 -0500 (Thu, 04 Oct 2012) | 11 lines chan_misdn: We must initialize cause on sending a DISCONNECT. We must initialize cause on sending a DISCONNECT, so it is later correctly indicated to ast_channel in case the answer (RELEASE/RELEASE_COMPLETE) does not include one. Patches: patch7_hangupcause.diff (license #6372) patch uploaded by Guenther Kelleter JIRA ABE-2882 ................ r374522 | rmudgett | 2012-10-04 19:03:56 -0500 (Thu, 04 Oct 2012) | 7 lines chan_misdn: Remove unused code for upqueue Patches: patch8_unused-upqueue.diff (license #6372) patch uploaded by Guenther Kelleter JIRA ABE-2882 ................ r374523 | rmudgett | 2012-10-04 19:11:50 -0500 (Thu, 04 Oct 2012) | 7 lines chan_misdn: Improve debugging (port number, messages fixed, dups removed) Patches: patch9_debug.diff (license #6372) patch uploaded by Guenther Kelleter JIRA ABE-2882 ................ r374533 | rmudgett | 2012-10-05 12:17:18 -0500 (Fri, 05 Oct 2012) | 8 lines chan_misdn: Better debug: we can print_bc_info even if there's no ast leg. Patches: patch10_debug-bc-2.diff (license #6372) patch uploaded by Guenther Kelleter Modified. JIRA ABE-2882 ................ r374534 | rmudgett | 2012-10-05 12:34:10 -0500 (Fri, 05 Oct 2012) | 16 lines chan_misdn: setup_bc() is called too early for an incoming SETUP on TE. This prevents the B channel from being setup for HDLC mode when requested by the bearer capability and config option hdlc=yes. It violates ETS300102 Ch.5.2.3.2: "The user, in any case, must not connect to the channel until a CONNECT ACKNOWLEDGE message has been received." * Call setup_bc() on receipt of CONNECT_ACKNOWLEGDE for PTMP, and on first response to SETUP for PTP. Patches: abe-2881-2.diff (license #6372) patch uploaded by Guenther Kelleter Modified. JIRA ABE-2881 ................ r374535 | rmudgett | 2012-10-05 12:41:05 -0500 (Fri, 05 Oct 2012) | 2 lines chan_misdn: Remove some more deadcode. ................ 2012-10-04 20:15 +0000 [r374475-374479] Alec L Davis * CHANGES, main/dsp.c, configs/dsp.conf.sample: dsp.c User Configurable DTMF_HITS_TO_BEGIN and DTMF_MISSES_TO_END Instead of a recompile, allow values to be adjusted in dsp.conf For binary distributions allows easy adjustment for wobbly GSM calls, and other reasons. Defaults to DTMF_HITS_TO_BEGIN=2 and DTMF_MISSES_TO_END=3 (closes issue ASTERISK-17493) Tested by: alecdavis alecdavis (license 585) Review https://reviewboard.asterisk.org/r/2144/ * main/dsp.c: dsp.c fix incorrect DTMF Digit_Duration. it's always short by 'hits_to_begin*DTMF_GSIZE', or 25.5ms if hitstobegin=2 (issue ASTERISK-16003) Tested by: alecdavis alecdavis (license 585) Review https://reviewboard.asterisk.org/r/2145/ 2012-10-04 17:39 +0000 [r374456] Joshua Colp * channels/chan_sip.c: Fix a regression from direct media ACLs where the directrtpsetup option no longer works. A check was added for direct media ACLs that immediately forbid remote bridging if there was no bridged channel. This caused directrtpsetup to no longer function as it needs this information before bridging actually occurs. Logic has now been adjusted so if there is no bridged channel a remote bridge will still be attempted. (closes issue ASTERISK-20511) Reported by: kristoff Review: https://reviewboard.asterisk.org/r/2146/ 2012-10-04 15:25 +0000 [r374426] dlee : * main/db.c, res/res_agi.c: Fix DBDelTree error codes for AMI, CLI and AGI The AMI DBDelTree command will return Success/Key tree deleted successfully even if the given key does not exist. The CLI command 'database deltree' had a similar problem, but was saved because it actually responded with '0 database entries removed'. AGI had a slightly different error, where it would return success if the database was unavailable. This came from confusion about the ast_db_deltree retval, which is -1 in the event of a database error, or number of entries deleted (including 0 for deleting nothing). * Adds a Doxygen comment to process_db_keys explaining its retval * Changed some poorly named res variables to num_deleted * Specified specific errors when calling ast_db_deltree (database unavailable vs. entry not found vs. success) * Fixed similar bug in AGI database deltree, where 'Database unavailable' results in successful result (closes issue AST-967) Reported by: John Bigelow Review: https://reviewboard.asterisk.org/r/2138/ 2012-10-04 04:39 +0000 [r374365-374384] Alec L Davis * CHANGES, main/dsp.c, configs/dsp.conf.sample: dsp.c User configuration of DTMF_NORMAL_TWIST and DTMF_REVERSE_TWIST values Asterisk's DTMF Specifications are based on AT&T specs, which may not be compatible in other countries. Various countries have different specifications for the maximum power level differences between the DTMF low group and high group of frequencies. Power level difference between frequencies for different Administrations/RPOAs NTT = Max. 5 dB AT&T = 4dB(reverse) to 8dB(normal) Danish = Max. 6 dB Australian = Max. 10 dB Brazilian = Max. 9 dB ETSI = Max. 6 dB from ETSI ES 201 235-3 V1.3.1 (2006-03) Now allow 4 variables to be individually configured in dsp.conf, with reasonable min/max of 2dB to 20dB. Default is AT&T specifications Add's the following variables to dsp.conf ;dtmf_normal_twist=6.31 ;dtmf_reverse_twist=2.51 ;relax_dtmf_normal_twist=6.31 ;relax_dtmf_reverse_twist=3.98 (closes issue ASTERISK-20442) Reported by: tbsky Tested by: tbsky,alecdavis alecdavis (license 585) Review https://reviewboard.asterisk.org/r/2141/ * main/dsp.c: _dsp_init: bring inline with trunk preparation for clean merge of DTMF TWIST patch No functional changes, just style. alecdavis (license 585) Reported by: Alec Davis Tested by: alecdavis related https://reviewboard.asterisk.org/r/2141 2012-10-04 02:09 +0000 [r374177-374335] Matthew Jordan * res/res_jabber.c: Check for presence of buddy in info/dinfo handlers The res_jabber resource module uses the ASTOBJ library for managing its ref counted objects. After calling ASTOBJ_CONTAINER_FIND to locate a buddy object, the pointer to the object has to be checked to see if the buddy existed. Prior to this patch, the buddy object was not checked for NULL; with this patch in both aji_client_info_handler and aji_dinfo_handler the pointer is checked before used and, if no buddy object was found, the handlers return an error code. This patch does not take the approach that our JID can be used to log in from another resource. If that approach is desired, an improvement could be made to this patch to create the buddy on the fly. This patch seeks only to prevent Asterisk from crashing. Note that multiple people have proposed patches for this issue; the patch being committed here is based on those. (closes issue ASTERISK-19532) Reported by: Karsten Wemheuer Tested by: Byron Clark patches: fix-jabber uploaded by Karsten Wemheuer (license #5930) xmpp_no_crash_with_ejabberd.patch uploaded by Byron Clark (license #6157) (closes issue ASTERISK-19557) Reported by: ulugutz * main/ccss.c: Destroy the generic_monitors container after the core_instances in ccss For each item in core_instances disposed of in the shutdown of ccss, any generic monitor instances referenced by the objects will be removed from generic_monitors during their destruction. Hilarity ensues if generic_monitors no longer exists. Thanks to the Asterisk Test Suite's generic_ccss test for complaining loudly when it ran into this. * main/asterisk.c: Ensure Shutdown AMI event is still fired during Asterisk shutdown Richard pointed out that having the manager dispose of itself gracefully during shutdown meant that the Shutdown event will no longer get fired. This patch moves the AMI event just prior to running the atexit callbacks. * main/event.c, main/taskprocessor.c, res/res_musiconhold.c, main/cel.c, main/indications.c, main/channel.c, main/data.c, main/pbx.c, main/manager.c, main/ccss.c, main/features.c: Fix a variety of ref counting issues This patch resolves a number of ref leaks that occur primarily on Asterisk shutdown. It adds a variety of shutdown routines to core portions of Asterisk such that they can reclaim resources allocate duringd initialization. Review: https://reviewboard.asterisk.org/r/2137 2012-10-01 16:45 +0000 [r374108] Sean Bright * tests/test_db.c, apps/app_queue.c, main/db.c, include/asterisk/astdb.h: app_queue: Support persisting and loading of long member lists. Greenlight in #asterisk brought up that he was receiving an error message "Could not create persistent member string, out of space" when running app_queue in Asterisk 10. dump_queue_members() made an assumption that 8K would be enough to store the generated string, but with queues that have large member lists this is not always the case. This patch removes the limitation and uses ast_str instead of a fixed sized buffer. The complicating factor comes from the fact that ast_db_get requires a buffer and buffer size argument, which doesn't let us pull back more than what we pass in, so I introduced a new ast_db_get_allocated() which returns an ast_strdup()'d copy of the value from astdb. As an aside, I did some testing on the maximum size of data that we can store in the BDB library we distribute and was able to store a 10MB string and retrieve it with no problems, so I feel this is a safe patch. Review: https://reviewboard.asterisk.org/r/2136/ 2012-09-28 19:03 +0000 [r374032] Jonathan Rose * res/res_jabber.c: res_jabber: Remove CLI command 'jabber test' The opinion of development was that it is both improper to have Matt's personal email address used in the source and that the command wouldn't be useful without it. (closes issue AST-467) Reported by: Malcolm Davenport 2012-09-28 12:14 +0000 [r373989] Joshua Colp * res/res_agi.c: Update documentation to make it explicit that "stream file" will not restart musiconhold. (issue ASTERISK-17367) Reported by: oej 2012-09-27 22:08 +0000 [r373945] Richard Mudgett * apps/app_senddtmf.c: Fix SendDTMF crash and channel reference leak using channel name parameter. The SendDTMF channel name parameter has two issues. 1) Crashes if the channel name does not exist. 2) Leaks a channel reference if the channel is the current channel. Problem introduced by ASTERISK-15956. * Updated SendDTMF documentation. * Renamed app to senddtmf_name and tweaked the type. 2012-09-27 16:49 +0000 [r373878-373909] Joshua Colp * main/loader.c: loader: Ensure dependent modules are properly initialized. If an Asterisk module specifies a dependency in ast_module_info.nonoptreq, it is possible for Asterisk to skip calling the modules's .load function. Asterisk was loading and linking the module via load_dynamic_module() but was not adding the module to the resource_heap. Therefore the module was not initialized based on it's priority along with the other modules in the heap. Now use load_resource() instead of load_dynamic_module() for non-optional requirement. This will add the module to the resource_heap so the module can be properly initialized in the correct order. This is required if there are any module global data structures initialized in the .load() callback for the module on platforms which do not support weak references. (issue ASTERISK-20439) Reported by: sruffell Patches: 0001-loader-Ensure-dependent-modules-are-properly-initial.patch uploaded by sruffell (license 5417) * channels/chan_local.c: Fix an issue where Local channels dialed by app_queue are considered in use immediately. The chan_local channel driver returns a device state of in use even if a created Local channel has not yet been dialed. This fix changes the logic to return a state of not in use until the channel itself has been dialed. (closes issue ASTERISK-20390) Reported by: tim_ringenbach Review: https://reviewboard.asterisk.org/r/2116/ 2012-09-26 21:11 +0000 [r373848] Mark Michelson * channels/chan_sip.c: Move handling of 408 response so there is no misleading warning message. (closes issue ASTERISK-20060) Reported by: Walter Doekes 2012-09-26 18:04 +0000 [r373815] Richard Mudgett * apps/app_meetme.c: Fixed meetme tab completion and command documentation. * Removed unnecessary case sensitivity in meetme list, lock, unlock, mute, unmute, and kick commands. * Separated meetme lock/unlock, mute/unmute, and kick commands into their own registered commands to simplify tab completion and parameter checking. meetme_lock_cmd(), meetme_mute_cmd(), and meetme_kick_cmd() * Simplified meetme_show_cmd() (closes issue AST-1006) Reported by: John Bigelow Tested by: rmudgett 2012-09-25 23:07 +0000 [r373735-373773] Mark Michelson * main/say.c: Fix saying of date in Dutch. The Dutch say the date before the month. (closes issue ASTERISK-20353) Reported by: Teun Ouwehand * configs/agents.conf.sample, channels/chan_agent.c: Remove dead code and documentation for nonexistent feature. multiplelogin was removed from chan_agent back in 1.6.0 when AgentCallbackLogin() was removed. (closes issue AST-948) reported by Steve Pitts * apps/app_voicemail.c: Fix error where improper IMAP greetings would be deleted. (closes issue ASTERISK-20435) Reported by: fhackenberger Patches: asterisk-20435-imap-del-greeting.diff uploaded by Michael L. Young (License #5026) (with suggested modification made by me) 2012-09-25 20:10 +0000 [r373705] Joshua Colp * channels/chan_local.c: Fix T.38 support when used with chan_local in between. Users of the T.38 API can indicate AST_T38_REQUEST_PARMS on a channel to request that the channel indicate a T.38 negotiation with the parameters present on the channel. The return value of this indication is expected to be AST_T38_REQUEST_PARMS upon success but with chan_local involved this could never occur. This fix changes chan_local to always return AST_T38_REQUEST_PARMS for this situation. If the underlying channel technology on the other side does not support T.38 this would have been determined ahead of time using ast_channel_get_t38_state and an indication would not occur. (closes issue ASTERISK-20229) Reported by: wdoekes Patches: ASTERISK-20229.patch uploaded by wdoekes (license 5674) Review: https://reviewboard.asterisk.org/r/2070/ 2012-09-25 19:32 +0000 [r373666-373702] Kinsey Moore * res/res_rtp_asterisk.c: Fix an issue where media would not flow for situations where the legacy STUN code is in use. The STUN packets should *not* be blocked by strict RTP. (closes issue ASTERISK-20415) Reported-by: Michele Cicciotti Patch-by: Josh Colp (trunk r369817) * apps/app_queue.c: "show" completion option for "queue" shouldn't appear twice When tab-completing CLI commands starting with "queue", "show" appeared twice in the list due to the way that Asterisk's tab completion functions and the order in which the commands were registered. The registration order has been altered to resolve this issue. (closes issue AST-940) Reported-by: Steve Pitts 2012-09-25 17:21 +0000 [r373652] Terry Wilson * configs/sip.conf.sample, channels/sip/include/sip.h, channels/chan_sip.c: Properly handle UAC/UAS roles for SIP session timers The SIP session timer mechanism contains a mandatory 'refresher' parameter (included in the Session-Expires header) which is used in the session timer offer/answer signaling within a SIP Invite dialog. It looks like asterisk is interpreting the uac resp. uas role only as the initial role of client and server (caller is uac, callee is uas). The standard rfc 4028 however assigns the client role to the ((RE)-Invite) requester, the server role to the ((RE)-Invite) responder. This patch has Asterisk track the actual refresher as "us" or "them" as opposed to relying on just the configured "uas" or "uac" properties. (closes issue AST-922) Reported by: Thomas Airmont Review: https://reviewboard.asterisk.org/r/2118/ 2012-09-25 17:18 +0000 [r373618-373640] Richard Mudgett * codecs/ilbc/iLBC_decode.c, codecs/ilbc/iLBC_encode.c: Fix valgrind found memcpy issues in codec_ilbc. Valgrind found codec_ilbc using memcpy instead of memmove for overlapping memory blocks. (issue ASTERISK-19890) (closes issue ASTERISK-20231) Reported by: Walter Doekes Patches: ASTERISK-20231.patch (license #5674) patch uploaded by Walter Doekes * codecs/Makefile: Make rebuild GSM, ilbc, or lpc10 codecs if the respective sources change. 2012-09-25 16:15 +0000 [r373617] Jonathan Rose * channels/chan_sip.c: chan_sip: Set Quality of Service for video rtp instance (closes issue ASTERISK-20201) Reported by: ddkprog Patches: chan_sip.c.diff uploaded by ddkprog (license 6008) 2012-09-25 13:27 +0000 [r373578] Kinsey Moore * configs/res_odbc.conf.sample: Fix documentation for default username in res_odbc This was previously stated to be "root", but is actually the name of the context if unspecified. (closes issue ASTERISK-20258) Reported by: Stefan x 2012-09-25 11:58 +0000 [r373532-373550] Joshua Colp * res/res_rtp_multicast.c: Fix an issue where a caller to ast_write on a MulticastRTP channel would determine it failed when in reality it did not. When sending RTP packets via multicast the amount of data sent is stored in a variable and returned from the write function. This is incorrect as any non-zero value returned is considered a failure while a return value of 0 is success. For callers (such as ast_streamfile) that checked the return value they would have considered it a failure when in reality nothing went wrong and it was actually a success. The write function for the multicast RTP engine now returns -1 on failure and 0 on success, as it should. (closes issue ASTERISK-17254) Reported by: wybecom * channels/chan_sip.c: Add missing checks that I neglected. The SIP technology and SIP info technology should be considered equal. (closes issue ASTERISK-20409) Reported by: michele cicciotti privatewave 2012-09-24 22:15 +0000 [r373504] Matthew Jordan * res/res_rtp_asterisk.c: Revert change to res_rtp_asterisk committed in r373236 (1.8) The change committed in r373236 attempted to account for endpoints that increased their RTP timestamp in DTMF end of event re-transmissions. This change attempted to make Asterisk continue to work with endpoints that failed to follow the RFC while maintaining the fix that allowed for out of order DTMF to be handled. Unfortunately, there is no free lunch, and this patch broke any system that sent DTMF immediately after an RTP session was established or when an SSRC is updated. As such, that patch is being reverted for the previous behavior. Endpoints that erroneously increase the RTP timestamp in DTMF end of event packets will not work properly with Asterisk. (issue ASTERISK-20424) 2012-09-24 22:09 +0000 [r373500] Richard Mudgett * channels/chan_sip.c: Be consistent, send From: "Anonymous" When setting CALLERID(pres)=unavailable in the dialplan, the From header in the SIP message contains "Anonymous" . For consistency, Asterisk should use a lowercase a in the userpart of the URI. * Make the From header use a lowercase A in the userpart of the anonymous URI. (closes issue ASTERISK-19838) Reported by: Antti Yrjola Patches: chan_sip_patch_ASTERISK-19838.patch (license #6383) patch uploaded by Antti Yrjola 2012-09-24 20:57 +0000 [r373467] Jonathan Rose * apps/app_mixmonitor.c, funcs/func_audiohookinherit.c: func_audiohookinherit: Document some missed sources. This patch also mentions that AUDIOHOOK_INHERIT can be used to transfer MixMonitor audiohooks. There is also wiki that addresses audiohooks and the use of AUDIOHOOK_INHERIT at the following link: https://wiki.asterisk.org/wiki/display/AST/Audiohooks (closes issue ASTERISK-18220) Reported by: Ishfaq Malik 2012-09-24 19:15 +0000 [r373438] Joshua Colp * channels/chan_sip.c: Fix a deadlock caused by a race condition between removing a hint and reloading the dialplan and subscribing to the removed hint. If conditions were right it was possible for both the PBX core and chan_sip to deadlock by both having a lock that the other wants. In the case of the PBX core it had the contexts lock and wanted a SIP dialog lock, while in the case of chan_sip it had the SIP dialog lock and wanted the contexts lock. This fix unlocks the SIP dialog before getting the extension state so that the other thread will not block on trying to lock it. Once the extension state is retrieved the SIP dialog is locked again and life carries on. As the SIP dialog is reference counted it is not possible for it to go away after unlocking. (closes issue ASTERISK-20437) Reported by: jhutchins 2012-09-24 15:40 +0000 [r373424] Richard Mudgett * channels/chan_sip.c: Fix potential reentrancy problems in chan_sip. Asterisk v1.8 and later was not as vulnerable to this issue. * Made find_call() lock each private as it processes the found dialogs. (Primary cause of ABE-2876) * Made the other functions that traverse the dialogs container lock each private as it examines them. * Fix race condition in sip_call() if the thread that sent the INVITE is held up long enough for a response to be processed. The p->initid for the INVITE retransmission could be added after it was canceled by the response processing. * Made __sip_destroy() clean up resource pointers after freeing. This is primarily defensive in case someone has a stale private pointer. * Removed redundant memset() in reqprep(). The call to init_req() already does the memset() and is the first reference to req in reqprep(). * Removed useless set of req.method in transmit_invite(). The calls to initreqprep() and reqprep() have to do this because they memset() the req. JIRA ABE-2876 .......... Merged -r373423 from https://origsvn.digium.com/svn/asterisk/be/branches/C.3-bier 2012-09-21 19:00 +0000 [r373298-373342] Jonathan Rose * channels/iax2-provision.c: iax2-provision: Fix improper return on failed cache retrieval (closes issue ASTERISK-20337) reported by: John Covert Patches: iax2-provision.c.patch uploaded by John Covert (license 5512) * apps/app_queue.c: app_queue: Make queue reload members and variants of that work Prior to this patch, 'queue reload members' cli command did not work at all. This also affects the manager function 'QueueReload' when supplied with the 'members: yes' field. (closes issue AST-956) Reported by: John Bigelow 2012-09-20 19:12 +0000 [r373242] Joshua Colp * apps/app_meetme.c: 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 2012-09-20 18:41 +0000 [r373236] Matthew Jordan * res/res_rtp_asterisk.c: 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 2012-09-19 16:02 +0000 [r373165] Joshua Colp * channels/chan_sip.c: Fix a regression where direct media was not permitted for calls using SIP INFO DTMF. A change was committed to fix direct media ACL support. This change wrongly assumed that only a single channel technology structure exists for chan_sip. This is in fact false as a second exists for calls using SIP INFO DTMF. The code which performs direct media ACL checking now checks for both the non-INFO DTMF and INFO DTMF channel technology structures. (closes issue ASTERISK-20409) Reported by: michele cicciotti privatewave 2012-09-18 20:12 +0000 [r373131] Sean Bright * main/manager.c: Don't crash when passing a NULL message to __astman_get_header. Before this commit, __astman_get_header would blindly dereference the passed in 'struct message *' to traverse the header list. There are cases, however, such as '*CLI> sip qualify peer foo' where the message pointer is NULL, so we need to check for that. 2012-09-15 00:13 +0000 [r373090] Richard Mudgett * channels/sig_ss7.c: Made companding law for SS7 calls only determined by SS7 signaling type. For SS7, the companding law for a call was chosen inconsistently depending upon ss7type (ITU vs ANSI) and the DAHDI companding default (T1 vs E1). For incoming calls, the companding law was determined by ss7type. For outgoing calls, the companding law was determined by the DAHDI default. With the wrong combination you would get A-law/u-law conflicts. An A-law/u-law conflict sounds like bad static on the line. SS7 ITU signaling with E1 line: ok SS7 ITU signaling with T1 line: noise SS7 ANSI signaling with E1 line: noise SS7 ANSI signaling with T1 line: ok * Fix the companding law used to be determined by the SS7 signaling type only. 2012-09-14 19:07 +0000 [r373061] Matthew Jordan * main/ssl.c, main/tcptls.c, channels/chan_sip.c: Resolve memory leaks in TLS initialization and TLS client connections This patch resolves two sources of memory leaks when using TLS in Asterisk: 1) It removes improper initialization (and multiple re-initializations) of portions of the SSL library. Asterisk calls SSL_library_init and SSL_load_error_strings during SSL initialization; collectively this obviates the need for calling any of the following during initialization or client connection handling: * ERR_load_crypto_strings (handled by SSL_load_error_strings) * OpenSSL_add_all_algorithms (synonym for SSL_library_init) * SSLeay_add_ssl_algorithms (synonym for SSL_library_init) 2) Failure to completely clean up all memory allocated by Asterisk and by the SSL library for TLS clients. This included not freeing the SSL_CTX object in the SIP channel driver, as well as not clearing the error stack when the TLS client exited. Note that these memory leaks were found by Thomas Arimont, and this patch was essentially written by him with some minor tweaks. (closes issue AST-889) Reported by: Thomas Arimont Tested by: Thomas Arimont patches: (bugAST-889.patch) by Thomas Arimont (license 5525) Review: https://reviewboard.asterisk.org/r/2105 2012-09-13 18:39 +0000 [r373024] dlee : * include/asterisk/channel.h, main/channel.c: Fix timeouts for ast_waitfordigit[_full]. ast_waitfordigit_full would simply pass its timeout to ast_waitfor_nandfds, expecting it to decrement the timeout by however many milliseconds were waited. This is a problem if it consistently waits less than 1ms. The timeout will never be decremented, and we wait... FOREVER! This patch makes ast_waitfordigit_full manage the timeout itself. It maintains the previously undocumented behavior that negative timeouts wait forever. (closes issue ASTERISK-20375) Reported by: Mark Michelson Tested by: Mark Michelson Review: https://reviewboard.asterisk.org/r/2109/ 2012-09-13 Asterisk Development Team * Asterisk 1.8.17.0-rc1 Released. 2012-09-12 15:42 +0000 [r372959] Matthew Jordan * main/astobj2.c, include/asterisk/astobj2.h: Constify __ao2_ref_debug in astobj2 When REF_DEBUG is enabled in certain files - most notably ccss.c - the 'tag' parameter passed to __ao2_ref_debug will be a const char *. The function currently expects that parameter to not be const. This causes a warning when compiling, as the const qualifier is being discarded. With dev-mode enabled, this prevents compiling Asterisk. This patch makes __ao2_ref_debug's tag and file parameters const. (closes issue ASTERISK-20408) Reported by: mjordan 2012-09-12 14:51 +0000 [r372932] Mark Michelson * channels/chan_sip.c: Add channel name to a warning to make debugging easier. The "autodestruct with owner in place" message is typically indicative of a channel reference leak. Printing out the name of the channel in the message may be helpful when trying to debug the issue. 2012-09-11 22:11 +0000 [r372902] Jonathan Rose * channels/chan_local.c: chan_local: Switch from using a random 4 digit hex identifier to unique id Changes chan_local channels to use an 8 digit hex identifier generated atomically and sequentially in order to eliminate the chance of having multiple channels with the same name during high call volume situations. (issue ASTERISK-20318) Reported by: Dan Cropp Review: https://reviewboard.asterisk.org/r/2104/ 2012-09-11 15:26 +0000 [r372840] Mark Michelson * main/features.c: Fix bad channel application data reference. When channels get bridged due to an AMI bridge action or a DTMF attended transfer, the two channels that get bridged have their application data pointing to the other channel's name. This means that if one channel is hung up but the other moves on, it means that the channel that moves on will have its application data pointing at freed memory. (issue ASTERISK-20335) Reported by: aragon 2012-09-10 20:53 +0000 [r372804] Kinsey Moore * channels/chan_iax2.c: Ensure iax2 debug output is displayed when expected When IAX2 debug was changed from iax_showframe to iax_outputframe, some instances were missed (or added afterward). This was causing debug output to not be displayed when expected. (closes issue ASTERISK-20338) Reported-by: John Covert Patch-by: John Covert 2012-09-10 18:35 +0000 [r372765] Jonathan Rose * apps/app_meetme.c: app_meetme: Document that 'p' option will continue in dialplan. (closes issue AST-991) Reported by John Bigelow 2012-09-10 18:31 +0000 [r372763] Kinsey Moore * channels/chan_sip.c: Warn on CLI when UDPTL init fails This adds a CLI warning when a SDP offer is rejected due to UDPTL initialization failure. Previously, there was no indication of the reason for offer rejection in this case. (closes issue ASTERISK-20357) Reported-by: Francesco Usseglio Gaudi 2012-09-10 17:07 +0000 [r372736] Jonathan Rose * main/channel.c: Masquerade: Retain parkinglot settings made by CHANNEL function. Prior to this patch, the user would have a parkinglot set on a channel that was parked and when the channel was retrieved, any attempt by that channel to park would simply use the default. This patch makes parkinglot values set in this way be retained through the masquerade. (closes issue AST-990) Reported by: Nick Huskinson Patches: masquerade_parkinglot_patch.diff Uploaded by Jonathan Rose (license 6182) 2012-09-09 01:19 +0000 [r372709] Matthew Jordan * channels/sip/sdp_crypto.c: Only re-create an SRTP session when needed; respond with correct crypto policy In r356604, SRTP handling was fixed to accomodate multiple crypto keys in an SDP offer and the ability to re-create an SRTP session when the crypto keys changed. In certain circumstances - most notably when a phone is put on hold after having been bridged for a significant amount of time - the act of re-creating the SRTP session causes problems for certain models of phones. The patch committed in r356604 always re-created the SRTP session regardless of whether or not the cryptographic keys changed. Since this is technically not necessary, this patch modifies the behavior to only re-create the SRTP session if Asterisk detects that the remote key has changed. This allows models of phones that do not handle the SRTP session changing to continue to work, while also providing the behavior needed for those phones that do re-negotiate cryptographic keys. In addition, in Asterisk 1.8 only, it was found that phones that offer AES_CM_128_HMAC_SHA1_32 will end up with no audio if the phone is the initiator of the call. The phone will send an INVITE request specifying that AES_CM_128_HMAC_SHA1_32 be used for the cryptographic policy; Asterisk will set its policy to that value. Unfortunately, when the call is Answered and a 200 OK is sent back to the UA, the policy sent in the response's SDP will be the hard coded value AES_CM_128_HMAC_SHA1_80. This potentially results in Asterisk using the INVITE request's policy of AES_CM_128_HMAC_SHA1_32, while the phone uses Asterisk's response of AES_CM_128_HMAC_SHA1_80. Hilarity ensues as both endpoints think the other is crazy. This patch fixes that by caching the policy from the request and responding with it. Note that this is not a problem in Asterisk 10 and later, as the ability to configure the policy was added in that version. (issue ASTERISK-20194) Reported by: Nicolo Mazzon Tested by: Nicolo Mazzon Review: https://reviewboard.asterisk.org/r/2099 2012-09-08 03:54 +0000 [r372682] dlee : * main/Makefile: Add OPENSSL_INCLUDE to the CFLAGS for ssl.c and tcptls.c. Without this flag, those files will compile with the system installed OpenSSL headers (if they exist). This is a real bummer if a different path was specified using --with-ssl= (closes issue ASTERISK-20392) 2012-09-07 23:05 +0000 [r372620-372655] Richard Mudgett * main/astmm.c: Fix MALLOC_DEBUG version of ast_strndup(). (closes issue ASTERISK-20349) Reported by: Brent Eagles * funcs/func_math.c: Remove annoying unconditional debug message from INC/DEC functions. (closes issue AST-1001) Reported by: Guenther Kelleter * apps/app_queue.c: Fix exception path typo in app_queue.c try_calling(). (closes issue ASTERISK-20380) Reported by: Jeremy Pepper Patches: fix-local-channel-locking.patch (license #6350) patch uploaded by Jeremy Pepper * apps/app_voicemail.c: Fix VoicemailUserEntry event headers ServerEmail and MailCommand reported values. The AMI action VoicemailUsersList VoicemailUserEntry event headers ServerEmail and MailCommand did not report the global values if they were not overridden. The VoicemailUserEntry event header ServerEmail was not populated with the global value if the voicemail user did not override it. The VoicemailUserEntry event header MailCommand was never populated with a value. * Removed unused struct ast_vm_user member mailcmd[]. (closes issue AST-973) Reported by: John Bigelow Tested by: rmudgett 2012-09-07 02:24 +0000 [r372554-372581] Matthew Jordan * apps/app_minivm.c: Free ast_str objects when temp file fails to be created in MiniVM The previous commit (r372554) was from a patch that was written before r366880, which ensured that ast_str objects allocated in the sendmail routine were free'd in off nominal paths. This commit frees the string objects in the off nominal path introduced in r372554. (issue ASTERISK-17133) Reported by: Tzafrir Cohen * apps/app_minivm.c: Fix file descriptor leak and pointer scope issue in MiniVM when sending mail When MiniVM sends an e-mail and it has the volgain option set, it will spawn sox in a separate process to handle the manipulation of the sound file. In doing so, it creates a temporary file. There are two problems here: 1) The file descriptor returned from mkstemp is leaked 2) The finalfilename character pointer points to a buffer that loses scope once volgain processing is finished. Note that in r316265, Russell fixed some gcc warnings by using the return value of the mkstemp call. A warning was placed in minivm that the file descriptor was going to be leaked. This patch reverts that change, as it handles the leak and 'uses' the file descriptor returned from mkstemp. (closes issue ASTERISK-17133) Reported by: Tzafrir Cohen patches: minivm_18501_demo.diff uploaded by Tzafrir Cohen (license #5035) 2012-09-06 21:38 +0000 [r372517] Kinsey Moore * apps/app_queue.c: Ensure listed queues are not offered for completion When using tab-completion for the list of queues on "queue reset stats" or "queue reload {all|members|parameters|rules}", the tab-completion listing for further queues erroneously listed queues that had already been added to the list. The tab-completion listing now only displays queues that are not already in the list. (closes issue AST-963) Reported-by: John Bigelow 2012-09-06 18:54 +0000 [r372498] dsessions : * configs/res_ldap.conf.sample, channels/chan_sip.c: LDAP Realtime Peers Cannot Register Prior to 1.8, it was not necessary for an explicit "type" to be set for an asterisk LDAP realtime peer. Now the routine find_peer actually checks the type field during registration and fails to find the peer if it is not set. The attached patches make the realtime type equal whatever type is being searched for if the type is 0 upon return from routine build_peer. (closes issue ASTERISK-17222) Reported by: John Covert Patch by: David Vossel Tested by: Darren Sessions Review: https://reviewboard.asterisk.org/r/2095/ 2012-09-06 15:52 +0000 [r372471] Jonathan Rose * UPGRADE.txt: chan_sip: Note change in behavior to how directmediapermit/deny ACL works r366547 introduced a change to the directmedia ACL for chan_sip which modified the behavior significantly. Prior to the patch, this option would bridge peers with directmedia if a peer's IP address matched its own directmedia ACL. After that patch, the peer would check the bridged peer's ACL instead. This change has been present since 1.8.14.0. That patched failed to document the change in Upgrade.txt, so this patch adds mention of that change to UPGRADE.txt (UPGRADE-1.8.txt in newer branches) (issue AST-876) 2012-09-06 14:28 +0000 [r372444] Kinsey Moore * apps/app_queue.c: Ensure "rules" is tab-completable for "queue show" Previously, tabbing at the end of "queue show" produced a list of available queues about which information could be shown, but did not include an alternative command, "rules", to access information about queue rules. The "rules" item should now be shown in the list of tab-completable items. (closes issue AST-958) Reported-by: John Bigelow 2012-09-06 02:48 +0000 [r372390-372417] Matthew Jordan * pbx/pbx_dundi.c: Fix DUNDi message routing bug when neighboring peer is unreachable Consider a scenario where DUNDi peer PBX1 has two peers that are its neighbors, PBX2 and PBX3, and where PBX2 and PBX3 are also neighbors. If the connection is temporarily broken between PBX1 and PBX3, PBX1 should not include PBX3 in the list of peers it sends to PBX2 in a DPDISCOVER message, as it cannot send messages to PBX3. If it does, PBX2 will assume that PBX3 already received the message and fail to forward the message on to PBX3 itself. This patch fixes this by only including peers in a DPDISCOVER message that are reachable by the sending node. This includes all peers with an empty address (00:00:00:00:00:00) and that are have been reached by a qualify message. This patch also prevents attempting to qualify a dynamic peer with an empty address until that peer registers. (closes issue ASTERISK-19309) Reported by: Peter Racz patches: dundi_routing.patch uploaded by Peter Racz (license 6290) The patch uploaded by Peter was modified slightly for this commit. * apps/app_followme.c: Allow configured numbers for FollowMe to be greater than 90 characters When parsing a 'number' defined in followme.conf, FollowMe previously parsed the number in the configuration file into a buffer with a length of 90 characters. This can artificially limit some parallel dial scenarios. This patch allows for numbers of any length to be defined in the configuration file. Note that Clod Patry originally wrote a patch to fix this problem and received a Ship It! on the JIRA issue. The patch originally expanded the buffer to 256 characters. Instead, the patch being committed duplicates the string in the config file on the stack before parsing it for consumption by the application. (closes issue ASTERISK-16879) Reported by: Clod Patry Tested by: mjordan patches: followme_no_limit.diff uploaded by Clod Patry (license #5138) Slightly modified for this commit. 2012-09-05 19:20 +0000 [r372354] Kinsey Moore * main/manager.c: Correct documentation for ModuleLoad AMI action The documentation incorrectly listed 'rtp' as a reloadable subsystem and left out many other reloadable subsystems. It is now also documented that subsystems may only be reloaded, not loaded or unloaded. (closes issue AST-977) Reported-by: John Bigelow 2012-09-05 18:34 +0000 [r372339] Alec L Davis * main/dsp.c: dsp.c: in ast_mf_detect_init incorrectly sets goertzel samples to 160, should be MF_GSIZE Related https://reviewboard.asterisk.org/r/2097/ 2012-09-05 18:29 +0000 [r372337] Kinsey Moore * main/pbx.c: Ensure counts generated in manager_show_dialplan_helper are correct When manager_show_dialplan_helper was written, the counter increment for the total number of contexts was placed with the extensions increment instead of in the enclosing loop. This function should now generate correct context counts. (closes issue AST-970) Reported-by: John Bigelow 2012-09-05 13:13 +0000 [r372268] Matthew Jordan * apps/app_voicemail.c: Fix memory leaks in app_voicemail when using IMAP storage or realtime config This patch fixes two memory leaks: 1. When find_user is called with NULL as its first parameter, the voicemail user returned is allocated on the heap. The inboxcount2 function uses find_user in such a fashion when counting new messages, and fails to free the resulting voicemail user object. 2. When populate_defaults is called on a voicemail user, it wipes whatever flags have been set on the object by copying over the global flags object. If the VM_ALLOCED flag was ste on the voicemail user prior to doing so, that flag is removed. This leaks the voicemail user when free_user is later called. (closes issue ASTERISK-19155) Reported by: Filip Jenicek patches: asterisk.patch2 uploaded by Filip Jenicek (license 6277) Patch slightly modified for this commit. Review: https://reviewboard.asterisk.org/r/2096 2012-09-05 07:35 +0000 [r372212-372239] Alec L Davis * main/dsp.c: dsp.c: Fix multiple issues when no-interdigit delay is present, and fast DTMF 50ms/50ms Revert DTMF hit/miss detector to original -r349249 method with some changes, remove unnecessary; 1. reseting of hits=0, when no signal, only need to set it once. 2. incrementing of hits, when the hit is the same as the current hit. 3. setting of lasthit, when it's the same as before. Change HITS_TO_BEGIN to 2, MISSES_TO_END to 3 & 3 spelling mistakes (closes issue ASTERISK-19610) alecdavis (license 585) Reported by: Jean-Philippe Lord Tested by: alecdavis Review: https://reviewboard.asterisk.org/r/2085/ * main/dsp.c: dsp.c: optimize goerztzel sample loops, in dtmf_detect, mf_detect and tone_detect use a temporary short int when repeatedly used to call goertzel_sample. alecdavis (license 585) Reported by: alecdavis Tested by: alecdavis Review: https://reviewboard.asterisk.org/r/2093/ 2012-09-05 03:45 +0000 [r372185] Michael L. Young * res/res_rtp_asterisk.c: Fix Incrementing Sequence Number For Retransmitted DTMF End Packets In Asterisk 1.4+, a fix was put in place to increment the sequence number for retransmitted DTMF end packets. With the introduction of the RTP engine API in 1.8, the sequence number was no longer being incremented. This patch fixes this regression as well as cleans up a few lines that were not doing anything. (closes issue ASTERISK-20295) Reported by: Nitesh Bansal Tested by: Michael L. Young Patches: 01_rtp_event_seq_num.patch uploaded by Nitesh Bansal (license 6418) asterisk-20295-dtmf-fix-cleanup.diff uploaded by Michael L. Young (license 5026) Review: https://reviewboard.asterisk.org/r/2083/ 2012-09-05 02:16 +0000 [r372158] Matthew Jordan * cel/cel_pgsql.c: Fix memory leak when CEL is successfully written to PostgreSQL database PQClear is not called when the result object of a call to PQExec has a status of PGRES_COMMAND_OK. Interestingly enough, the off nominal case was handled properly, so this memory leak only occurred when CEL records were successfully written. This patch properly clears the result in the nominal code path. (closes issue ASTERISK-19991) Reported by: Etienne Lessard Tested by: Etienne Lessard patches: mem_leak_cel_pgsql.patch uploaded by Etienne Lessard (license #6394) 2012-08-30 20:51 +0000 [r372048-372089] Mark Michelson * apps/app_queue.c: Prevent crash on shutdown due to refcount error on queues container. When app_queue is unloaded, the queues container has its refcount decremented, potentially to 0. Then the taskprocessor responsible for handling device state changes is unreferenced. If the taskprocessor happens to be just about to run its task, then it will create and destroy an iterator on the queues container. This can cause the refcount on the queues container to increase to 1 and then back to 0. Going back to 0 a second time results in double frees. This failure was seen periodically in the testsuite when Asterisk would shut down. * apps/app_queue.c: Help prevent ringing queue members from being rung when ringinuse set to no. Queue member status would not always get updated properly when the member was called, thus resulting in the member getting multiple calls. With this change, we update the member's status at the time of calling, and we also check to make sure the member is still available to take the call before placing an outbound call. (closes issue ASTERISK-16115) reported by nik600 Patches: app_queue.c-svn-r370418.patch uploaded by Italo Rossi (license #6409) 2012-08-30 16:21 +0000 [r371961-372015] Matthew Jordan * channels/chan_iax2.c: AST-2012-013: Resolve ACL rules being ignored during calls by some IAX2 peers When an IAX2 call is made using the credentials of a peer defined in a dynamic Asterisk Realtime Architecture (ARA) backend, the ACL rules for that peer are not applied to the call attempt. This allows for a remote attacker who is aware of a peer's credentials to bypass the ACL rules set for that peer. This patch ensures that the ACLs are applied for all peers, regardless of their storage mechanism. (closes issue ASTERISK-20186) Reported by: Alan Frisch Tested by: mjordan, Alan Frisch * main/manager.c, README-SERIOUSLY.bestpractices.txt: AST-2012-012: Resolve AMI User Unauthorized Shell Access through ExternalIVR The AMI Originate action can allow a remote user to specify information that can be used to execute shell commands on the system hosting Asterisk. This can result in an unwanted escalation of permissions, as the Originate action, which requires the "originate" class authorization, can be used to perform actions that would typically require the "system" class authorization. Previous attempts to prevent this permission escalation (AST-2011-006, AST-2012-004) have sought to do so by inspecting the names of applications and functions passed in with the Originate action and, if those applications/functions matched a predefined set of values, rejecting the command if the user lacked the "system" class authorization. As noted by IBM X-Force Research, the "ExternalIVR" application is not listed in the predefined set of values. The solution for this particular vulnerability is to include the "ExternalIVR" application in the set of defined applications/functions that require "system" class authorization. Unfortunately, the approach of inspecting fields in the Originate action against known applications/functions has a significant flaw. The predefined set of values can be bypassed by creative use of the Originate action or by certain dialplan configurations, which is beyond the ability of Asterisk to analyze at run-time. Attempting to work around these scenarios would result in severely restricting the applications or functions and prevent their usage for legitimate means. As such, any additional security vulnerabilities, where an application/function that would normally require the "system" class authorization can be executed by users with the "originate" class authorization, will not be addressed. Instead, the README-SERIOUSLY.bestpractices.txt file has been updated to reflect that the AMI Originate action can result in commands requiring the "system" class authorization to be executed. Proper system configuration can limit the impact of such scenarios. (closes issue ASTERISK-20132) Reported by: Zubair Ashraf of IBM X-Force Research * doc/CODING-GUIDELINES (added): Restore CODING-GUIDELINES to doc folder In r294740, the CODING-GUIDELINES was removed from the doc folder in favor of the content on the Asterisk wiki. Some folks still look in the doc folder initially for coding guideline suggestions; as such, this patch adds a CODING-GUIDELINES file back into the doc folder. The content of the file merely points to the correct page on the Asterisk wiki where the coding guidelines currently live. (closes issue ASTERISK-20279) Reported by: Andrew Latham Patches: CODING-GUIDELINES.diff uploaded by Andrew Latham (license 5985) 2012-08-29 20:42 +0000 [r371919] Jonathan Rose * apps/app_meetme.c: app_meetme: Adding test events for following activity in MeetMe. 2012-08-29 19:38 +0000 [r371860-371888] Richard Mudgett * main/channel.c: Initialize file descriptors for dummy channels to -1. Dummy channels usually aren't read from, but functions like SHELL and CURL use autoservice on the channel. (closes issue ASTERISK-20283) Reported by: Gareth Palmer Patches: svn-371580.patch (license #5169) patch uploaded by Gareth Palmer (modified) * apps/app_dial.c: Fix hangup cause passthrough regression. The v1.8 -r369258 change to fix the F and F(x) action logic introduced a regression in passing the hangup cause from the called channel to the caller channel. (closes issue ASTERISK-20287) Reported by: Konstantin Suvorov Patches: app_dial_hangupcause.patch (license #6421) patch uploaded by Konstantin Suvorov (modified) Tested by: rmudgett 2012-08-29 16:59 +0000 [r371824] Jonathan Rose * channels/chan_sip.c: chan_sip: Send 408 on retransmit timeout instead of 603 (closes issue ASTERISK-20124) Reported by: Walter Doekes 2012-08-27 21:47 +0000 [r371747-371787] Mark Michelson * configs/agents.conf.sample: Fix misleading documentation in agents.conf.sample regarding ackcall usage. The documentation made it sound as if the DTMF acknowledgment was needed at the time the agent logs in, rather than when the agent is called. This is likely a relic from the days when there were multiple ways of logging in agents. (closes issue AST-962) reported by Steve Pitts * main/manager.c: Fix incorrect documentation of the MailboxStatus manager command. The "Waiting" field was misdocumented as reporting the number of messages waiting. In reality, it simply indicated the presence or absence of waiting messages. (closes issue AST-975) reported by John Bigelow * configs/queues.conf.sample: Fix incorrectly documented option in queues.conf sharedlastcall defaults to "no" not "yes" (closes issue AST-979) reported by Steve Pitts 2012-08-27 16:40 +0000 [r371718] dlee : * main/lock.c: Fixes ast_rwlock_timed[rd|wr]lock for BSD and variants. The original implementations simply wrap pthread functions, which take absolute time as an argument. The spinlock version for systems without those functions treated the argument as a delta. This patch fixes the spinlock version to be consistent with the pthread version. (closes issue ASTERISK-20240) Reported by: Egor Gorlin Patches: lock.c.patch uploaded by Egor Gorlin (license 6416) 2012-08-27 13:43 +0000 [r371690] Kinsey Moore * main/utils.c: Implement workaround for BETTER_BACKTRACES crash When compiling with BETTER_BACKTRACES enabled, Asterisk will sometimes crash when "core show locks" is run. This happens regularly in the testsuite since several tests run "core show locks" to help with debugging. This seems to be a fault with libraries on certain operating systems (notably CentOS 6.2/6.3) running on virtual machines and utilizing gcc 4.4.6. (closes issue ASTERISK-20090) 2012-08-26 23:03 +0000 [r371662] Alec L Davis * main/dsp.c: mf_detect: incorrectly used DTMF_GSIZE instead of MF_GSIZE 2012-08-21 20:35 +0000 [r371590] Mark Michelson * main/utils.c, apps/app_queue.c, pbx/pbx_config.c, res/res_jabber.c, apps/app_stack.c, channels/chan_oss.c, res/res_config_sqlite.c, cdr/cdr_tds.c, main/xmldoc.c, apps/app_dial.c, channels/chan_dahdi.c, channels/chan_sip.c, funcs/func_odbc.c, main/file.c: Fix misuses of asprintf throughout the code. This fixes three main issues * Change asprintf() uses to ast_asprintf() so that it pairs properly with ast_free() and no longer causes MALLOC_DEBUG to freak out. * When ast_asprintf() fails, set the pointer NULL if it will be referenced later. * Fix some memory leaks that were spotted while taking care of the first two points. (Closes issue ASTERISK-20135) reported by Richard Mudgett Review: https://reviewboard.asterisk.org/r/2071 2012-08-20 15:25 +0000 [r371544] Kinsey Moore * main/udptl.c: Ignore recovered zero-length secondary UDPTL packets In some cases, recovering lost packets using the secondary packet recovery mechanism with UDPTL/T.38 can result in the recovery of zero-length packets. These must be ignored or the frame generated from them can cause segfaults and allocation failures. (closes issue ASTERISK-19762) (closes issue ASTERISK-19373) Reported-by: Benjamin (bulkorok) Reported-by: Rob Gagnon (rgagnon) 2012-08-17 18:51 +0000 [r371469] Matthew Jordan * main/xmldoc.c: Fix memory leak in XML documentation When formatting documentation fields, the XML documentation parser calls xmldoc_get_formatted. This function allocates a string buffer at the beginning of its routine. Unfortunately, on certain code paths, it also calls xmldoc_string_cleanup, which assumes that it will create the string buffer. The previously allocated string buffer is then leaked by the xmldoc_string_cleanup routine. Now: we don't do that. (closes issue AST-932) Reported by: Alexander Homig 2012-08-17 15:49 +0000 [r371393-371436] Kinsey Moore * main/loader.c: Add instrumentation to subsystem reloads When Asterisk is built with TEST_FRAMEWORK defined, Asterisk will now generate TestEvent AMI events on subsystem reloads such as cdr, dnsmgr, extconfig, etc. (issue PQ-1126) * main/loader.c: Add module reload instrumentation for TEST_FRAMEWORK This adds AMI events for module reloads when Asterisk is built with TEST_FRAMEWORK enabled and corrects generation of the module load AMI event. (issue PQ-1126) 2012-08-16 22:30 +0000 [r371392] Terry Wilson * main/config.c: Handle integer over/under-flow in ast_parse_args The strtol family of functions will return *_MIN/*_MAX on overflow. To detect when an overflow has happened, errno must be set to 0 before calling the function, then checked afterward. (closes issue ASTERISK-20120) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/2073/ 2012-08-16 18:57 +0000 [r371337-371357] Jonathan Rose * channels/chan_sip.c: chan_sip: Use pvt outgoing_call variable to set Remote-Party-ID Header Previously the pvt SIP_OUTGOING flag was used instead, which will frequently flip during reinvites. (closes issue AST-897) Reported by: Thomas Arimont * channels/chan_sip.c: chan_sip: Trigger reinvite if the SDP answer is included in the SIP ACK Under certain conditions, a SIP transaction involving directmedia wouldn't trigger a re-invite because the SDP answer was included in an ACK instead of in a message that we would have triggered the invite with. This patch just queues a source change control frame if the dialog is using directmedia when we find sdp for an ACK. (closes issue AST-913) Reported by: Thomas Arimont 2012-08-15 23:10 +0000 [r371306] Mark Michelson * apps/app_queue.c: Fix bug where final queue member would not be removed from memory. If a static queue had realtime members, then there could be a potential for those realtime members not to be properly deleted from memory. If the queue's members were loaded from realtime and then all the members were deleted from the backend, then the queue would still think these members existed. The reason was that there was a short- circuit in code such that if there were no members found in the backend, then the queue would not be updated to reflect this. Note that this only affected static queues with realtime members. Realtime queues with realtime members were unaffected by this issue. (closes issue ASTERISK-19793) reported by Marcus Haas 2012-08-15 20:14 +0000 [r371270] Kinsey Moore * channels/chan_sip.c: Avoid unconditional NULLing of mwipvt on relatedpeer on SIP dialog destruction The other instance of this bug was fixed by jcolp/file in r121496. If we are destroying a dialog only set the MWI dialog pointer on the related peer to NULL if it is the dialog currently being destroyed. (closes issue ASTERISK-20119) Patch-by: Misha Vodsedalek 2012-08-13 20:00 +0000 [r371201] Kinsey Moore * main/loader.c, apps/app_meetme.c: Add test instrumentation This adds test instrumentation for loading and unloading of modules and for certain actions in MeetMe to be used in the testsuite or any other consumer of AMI events. These will only be generated when Asterisk is built with TEST_FRAMEWORK enabled. (issue PQ-1131) (issue PQ-1133) 2012-08-13 19:49 +0000 [r371198] Mark Michelson * channels/chan_sip.c: Fix problem where incorrect pointer was checked for nullity. 2012-08-10 21:21 +0000 [r371141] Mark Michelson * apps/app_queue.c: Fix a couple of documentation problems in app_queue.c * The RemoveQueueMember app made mention of options that could be passed in, but no options are supported. I have removed the listing of options from the documentation. * The RQMSTATUS variable did not list "NOTDYNAMIC" as a possible value that could be set. (closes issue AST-949) reported by Steve Pitts (closes issue AST-954) reported by Steve Pitts 2012-08-10 16:40 +0000 [r371060-371089] Alexandr Anikin * addons/chan_ooh323.c: remove ALREADYGONE flag on ooh323 call data by ooh323_indicate (CONGESTION/BUSY) due to call hasn't gone there really. This indication arrive from asterisk core not h.323 stack (closes issue ASTERISK-19308) Reported by: Dmitry Melekhov Patches: ASTERISK-19308.patch * addons/ooh323c/src/ooGkClient.c: Send re-register packets by GRQ (gatekeeper request) interval (close issue ASTERISK-20094) Patches: ASTERISK-20094-2.patch 2012-08-09 18:58 +0000 [r371012] Richard Mudgett * channels/sig_pri.c, channels/sig_ss7.c, channels/chan_dahdi.c, configure, include/asterisk/autoconfig.h.in, configure.ac: Use better libss7 detection test and move libpri compile test. 2012-08-09 18:58 +0000 [r370988-371011] Alexandr Anikin * addons/ooh323c/src/ooGkClient.c: Fix to resend GRQ/RRQ if RRJ (registration reject) is received (close issue ASTERISK-20094) Patches: ASTERISK-20094.patch * addons/ooh323c/src/ooh323ep.c: change opening h323 logfile with append mode instead of overwrite 2012-08-09 17:39 +0000 [r370985] Kinsey Moore * apps/app_meetme.c: Correct documentation for the MeetMe x flag The documentation for the x flag for MeetMe incorrectly described its function as closing down the conference when the last marked user left. It actually causes the users with that flag to leave the conference when the last marked user exits. The functionality of this flag is not changing. 2012-08-08 22:40 +0000 [r370952] Michael L. Young * apps/app_chanspy.c: Fix Not Unreferencing A Spied Channel When a channel hangs up while being spied upon and the option to exit the ChanSpy application when the spied on channel hangs up is set, ast_autochan_destroy is not being called and therefore a reference to the spied upon channel is not removed. The symptom being reported was that when using func_group in the dialplan and calling "group show channels" at the cli, the spied upon channel was still being shown while "core show channels" showed that the channel was not up. This patch calls ast_autochan_destroy when a spied upon channel hangs up and the option to exit the ChanSpy application is set, removing the reference to the channel allowing the count for the group that the spied channel was part of to be decremented. (closes issue ASTERISK-17515) Reported by: Arkadiusz Malka Tested by: Alexandr Gordeev, Michael L. Young Patches: asterisk-17515-destroy-autochan.diff uploaded by Michael L. Young (license 5026) 2012-08-08 20:28 +0000 [r370923] Kinsey Moore * main/channel.c: Do not define a cause that doesn't actually exist AST_CAUSE_NOTDEFINED is a placeholder for usage when there is no cause information. As such, it should not be defined and translatable as a cause. 2012-08-08 19:58 +0000 [r370900] Richard Mudgett * channels/chan_dahdi.c, channels/sig_analog.c, channels/sig_analog.h: Fix the analog dial *0 flash-hook of bridged peer feature. The flash-hook the bridged peer feature now correctly determines if the bridged peer is another chan_dahdi channel, that it is an analog channel, and that it has the correct signaling for an FXO port. It now also flash-hooks the correct channel. 2012-08-07 19:19 +0000 [r370856] Kinsey Moore * main/channel.c: Add missing AST_CAUSE_* -> text translations 2012-08-06 15:00 +0000 [r370797] Mark Michelson * channels/chan_sip.c: Improve debug message for temporary outbound proxies. Thanks to Paul Belanger for pointing this out. 2012-08-03 21:43 +0000 [r370769-370771] Mark Michelson * channels/sip/config_parser.c: Seriously? Another compilation error fixed. Somebody beat me. * channels/chan_sip.c: Remove unused variable. * channels/sip/config_parser.c, channels/sip/include/sip.h, channels/chan_sip.c: Fix error in the "IPorHost" section of a SIP dialstring. This is based on the review request posted by Walter Doekes (referenced lower in the commit message) The main fix here is to treat the IPorHost portion of the dial string as a temporary outbound proxy. This ensures requests get sent to the proper location. Due to the age of the request, some parts were no longer relevant. For instance, the request moved outbound proxy parsing code into a single method. This is done in a previous commit, so it was not necessary to do again. Also, the review request fixed some errors with regards to request routing for CANCEL and ACK requests. This has also been fixed in more recent commits. (closes issue ASTERISK-19677) reported by Walter Doekes Review https://reviewboard.asterisk.org/r/1859 2012-08-01 02:25 +0000 [r370697] Kinsey Moore * utils/extconf.c: Revert alloca changes for utils These changes were a tad overzealous in the utils directory. Unfortunately, these don't compile with a "make". 2012-07-31 20:54 +0000 [r370666] Matthew Jordan * channels/chan_sip.c: Schedule pokes of registered SIP peers within a given timespan after SIP reload With a large number of SIP peers registered, performing a SIP reload causes a flood of SIP OPTIONS request packets. These are immediately sent out, and, as responses come back, can cause peers to be flagged as 'lagged' due to handling of the many response messages. This fix prevents this "packet storm" and schedules the pokes for a random time. That time varies between 1 ms and the peer's qualify time, or, if the qualify time is unknown, the global qualifyfreq setting. The committed patch has some very small modifications to the patch schmidts wrote for the review. (closes issue ASTERISK-19154) Reported by: Nicolo Mazzon patches: issue19154.patch license #6034 uploaded by schmidts Review: https://reviewboard.asterisk.org/r/1652 2012-07-31 19:31 +0000 [r370642] Kinsey Moore * main/utils.c, funcs/func_logic.c, channels/chan_gtalk.c, cdr/cdr_pgsql.c, channels/chan_iax2.c, res/res_jabber.c, main/config.c, main/channel.c, res/ael/pval.c, apps/app_osplookup.c, main/manager.c, pbx/pbx_spool.c, main/strcompat.c, apps/app_minivm.c, main/features.c, res/res_agi.c, main/http.c, main/logger.c, pbx/pbx_ael.c, main/app.c, channels/chan_alsa.c, pbx/pbx_realtime.c, addons/chan_mobile.c, apps/app_while.c, include/asterisk/utils.h, main/pbx.c, res/res_config_pgsql.c, channels/chan_sip.c, apps/app_festival.c, pbx/pbx_lua.c, funcs/func_cut.c, tests/test_linkedlists.c, apps/app_getcpeid.c, funcs/func_global.c, channels/chan_jingle.c, main/tcptls.c, funcs/func_channel.c, apps/app_directed_pickup.c, main/callerid.c, main/file.c, apps/app_macro.c, main/astmm.c, apps/app_sms.c, main/event.c, pbx/pbx_dundi.c, include/asterisk/strings.h, utils/extconf.c, apps/app_mixmonitor.c, main/asterisk.c, main/dsp.c, addons/res_config_mysql.c, apps/app_voicemail.c, addons/app_mysql.c, apps/app_meetme.c, apps/app_dictate.c, main/say.c, main/threadstorage.c, funcs/func_strings.c: Clean up and ensure proper usage of alloca() This replaces all calls to alloca() with ast_alloca() which calls gcc's __builtin_alloca() to avoid BSD semantics and removes all NULL checks on memory allocated via ast_alloca() and ast_strdupa(). (closes issue ASTERISK-20125) Review: https://reviewboard.asterisk.org/r/2032/ Patch-by: Walter Doekes (wdoekes) 2012-07-31 15:26 +0000 [r370618] Mark Michelson * configs/sip.conf.sample, channels/sip/include/sip.h, channels/chan_sip.c: Help mitigate potential reinvite glare scenarios. When Asterisk servers are set up back-to-back, and direct media is to be used betweeen endpoints, it is fairly common for the two Asterisk servers to send direct media reinvites to each other simultaneously. This results in 491s and ACKs being exchanged between the servers. While the media eventually gets set up properly, the problem is that there can be a noticeable delay for the streams to stabilize. This patch adds a new directmedia option called "outgoing". With this set, an immediate direct media reinvite will only be sent if the call direction is outgoing. For incoming dialogs, an immediate direct media reinvite will not be sent, but further "reactionary" direct media reinvites may be sent. For those who are having some deja vu, that's because this patch was originally committed to trunk since there is a new configuration option added. After seeing a bug report about audio being slow to set up on SIP calls, it became apparent that this patch would be the best solution for resolving the issue. The patch is unintrusive and will have no effect unless the option is explicitly enabled. (closes issue AST-896) reported by Thomas Arimont (closes issue ASTERISK-19857) reported by Matt Jordan 2012-09-13 Asterisk Development Team * Asterisk 1.8.16.0 Released. 2012-09-11 Asterisk Development Team * Asterisk 1.8.16.0-rc2 Released. * AST-2012-013: Resolve ACL rules being ignored during calls by some IAX2 peers * AST-2012-012: Resolve AMI User Unauthorized Shell Access through ExternalIVR * r371860: Fix hangup cause passthrough regression. The v1.8 -r369258 change to fix the F and F(x) action logic introduced a regression in passing the hangup cause from the called channel to the caller channel. (closes issue ASTERISK-20287) Reported by: Konstantin Suvorov Patches: app_dial_hangupcause.patch (license #6421) patch uploaded by Konstantin Suvorov (modified) Tested by: rmudgett * r372709: Only re-create an SRTP session when needed; respond with correct crypto policy In r356604, SRTP handling was fixed to accomodate multiple crypto keys in an SDP offer and the ability to re-create an SRTP session when the crypto keys changed. In certain circumstances - most notably when a phone is put on hold after having been bridged for a significant amount of time - the act of re-creating the SRTP session causes problems for certain models of phones. The patch committed in r356604 always re-created the SRTP session regardless of whether or not the cryptographic keys changed. Since this is technically not necessary, this patch modifies the behavior to only re-create the SRTP session if Asterisk detects that the remote key has changed. This allows models of phones that do not handle the SRTP session changing to continue to work, while also providing the behavior needed for those phones that do re-negotiate cryptographic keys. In addition, in Asterisk 1.8 only, it was found that phones that offer AES_CM_128_HMAC_SHA1_32 will end up with no audio if the phone is the initiator of the call. The phone will send an INVITE request specifying that AES_CM_128_HMAC_SHA1_32 be used for the cryptographic policy; Asterisk will set its policy to that value. Unfortunately, when the call is Answered and a 200 OK is sent back to the UA, the policy sent in the response's SDP will be the hard coded value AES_CM_128_HMAC_SHA1_80. This potentially results in Asterisk using the INVITE request's policy of AES_CM_128_HMAC_SHA1_32, while the phone uses Asterisk's response of AES_CM_128_HMAC_SHA1_80. Hilarity ensues as both endpoints think the other is crazy. This patch fixes that by caching the policy from the request and responding with it. Note that this is not a problem in Asterisk 10 and later, as the ability to configure the policy was added in that version. (issue ASTERISK-20194) Reported by: Nicolo Mazzon Tested by: Nicolo Mazzon Review: https://reviewboard.asterisk.org/r/2099 * r372840: Fix bad channel application data reference. When channels get bridged due to an AMI bridge action or a DTMF attended transfer, the two channels that get bridged have their application data pointing to the other channel's name. This means that if one channel is hung up but the other moves on, it means that the channel that moves on will have its application data pointing at freed memory. (issue ASTERISK-20335) 2012-07-31 Asterisk Development Team * Asterisk 1.8.16.0-rc1 Released. 2012-07-30 16:47 +0000 [r370563] Richard Mudgett * channels/chan_misdn.c: Release B channel allocation on error path in chan_misdn. 2012-07-25 21:00 +0000 [r370494] Jonathan Rose * res/res_agi.c: res_agi: Add message indicating need for \n character in verbose message The while loop responsible for reading AGI messages from a fastAGI service can end up looping indefinitely when an AGI script fails to indicate the end of a message with a \n character. This patch adds an indication that we are expecting a \n character to end the message to make it more clear to users that this is necessary if they are receiving this warning over and over. (issue ASTERISK-20061) Reported by: Eike Kuiper 2012-07-24 16:53 +0000 [r370429] Kevin P. Fleming * main/frame.c: Rewrite a comment that didn't adequately explain the code it was documenting. 2012-07-24 16:49 +0000 [r370428] Tzafrir Cohen * channels/chan_oss.c: chan_oss: fix "sample rate" error message 2012-07-23 21:09 +0000 [r370360-370383] Kevin P. Fleming * funcs/func_shell.c: Improve documentation for the SHELL() dialplan function. * main/channel.c: Free any datastores attached to dummy channels. Revision 370205 added the use of a datastore attached to a dummy channel to resolve a memory leak, but ast_dummy_channel_destructor() in this branch did not free datastores, resulting in a continued (but slightly smaller) memory leak. This patch backports the change to free said datastores from the Asterisk trunk. (related to issue AST-916) 2012-07-19 22:07 +0000 [r370275] Richard Mudgett * main/cel.c: Fix compiler warnings. gcc (GCC) 4.2.4 has problems casting away constness. 2012-07-19 22:00 +0000 [r370252-370273] Matthew Jordan * main/cel.c: Fix compilation error when MALLOC_DEBUG is enabled To fix a memory leak in CEL, a channel datastore was introduced whose destruction function pointer was pointed to the ast_free macro. Without MALLOC_DEBUG enabled this compiles as fine, as ast_free is defined as free. With MALLOC_DEBUG enabled, however, ast_free takes on a definition from a different place then utils.h, and became undefined. This patch resolves this by using a reference to ast_free_ptr. When MALLOC_DEBUG is enabled, this calls ast_free; when MALLOC_DEBUG is not enabled, this is defined to be ast_free, which is defined to be free. (issue AST-916) Reported by: Thomas Arimont * res/res_rtp_asterisk.c: Handle extremely out of order RFC 2833 DTMF The current implementation of RFC 2833 DTMF handling in res_rtp_asterisk will, if a packet arrives out of order, drop the packet. This is to prevent duplicate ton generation in the Asterisk core. Since the RTP layer does not buffer data itself, this is the only option the RTP layer currently has for handling packets that arrive out of order. For the most part, this doesn't matter. For a particular digit, so long as a BEGIN packet arrives before the first END packet, the digit will be produced. If subsequent BEGIN packets arrive interleaved with the ENDs, they will be dropped; likewise, if the BEGIN or END packets themselves are out of order, those packets are dropped but sufficient information is conveyed to the Asterisk core to produce the appropriate digit. For certain sequences of DTMF packets - most notably when, for a particular digit, an END packet arrives before any BEGIN packet for that digit - this is a real problem. When an END arrives before any BEGINs, the END packet is dropped - but at the same time, it causes subsequent BEGIN packets for that digit to be ignored. When the next in order END packet arrives, it too is dropped - Asterisk believes that there was no initial BEGIN. The solution this patch provides is to trust the END packet to convey the information needed for the Asterisk core to produce the DTMF digit. If we receive an END packet, and it: * Has a timestamp greater then the last timestamp received from an END packet * Does not have the same sequence number as the last received sequence number (and is thus not an END packet retransmission) Then we send the END frame up to the Asterisk core. It contains enough DTMF information for Asterisk to produce the digit. On the other hand, if we receive a BEGIN or continuation packet that occurs with a timestamp equal to or less then the last END timestamp, then we've received something out of order - but we already have received enough information to produce the digit. These packets are dropped. Much thanks goes to Olle Johansson (oej) for providing the idea for this solution. Review: https://reviewboard.asterisk.org/r/2033/ (issue ASTERISK-18404) Reporter: Stephane Chazelas Tested by: Matt Jordan 2012-07-18 19:12 +0000 [r370183-370205] Kevin P. Fleming * main/cel.c: Resolve severe memory leak in CEL logging modules. A customer reported a significant memory leak using Asterisk 1.8. They have tracked it down to ast_cel_fabricate_channel_from_event() in main/cel.c, which is called by both in-tree CEL logging modules (cel_custom.c and cel_sqlite3_custom.c) for each and every CEL event that they log. The cause was an incorrect assumption about how data attached to an ast_channel would be handled when the channel is destroyed; the data is now stored in a datastore attached to the channel, which is destroyed along with the channel at the proper time. (closes issue AST-916) Review: https://reviewboard.asterisk.org/r/2053/ * apps/app_macro.c, channels/chan_iax2.c, apps/app_mixmonitor.c, apps/app_stack.c, funcs/func_global.c, res/res_odbc.c, main/channel.c, addons/app_mysql.c, main/pbx.c, funcs/func_curl.c, main/ccss.c, funcs/func_odbc.c, funcs/func_lock.c: Ensure that all ast_datastore_info structures are 'const'. While addressing a bug, I came across a instance of 'struct ast_datastore_info' that was not declared 'const'. Since the API already expects them to be 'const', this patch changes the declarations of all existing instances that were not already declared that way. 2012-07-16 19:50 +0000 [r370131] Walter Doekes * channels/chan_sip.c: Code cleanup and bugfix in chan_sip outboundproxy parsing. The bug was clearing the global outboundproxy when a peer-specific outboundproxy was bad. The cleanup reduces duplicate code. Review: https://reviewboard.asterisk.org/r/2034/ Reviewed by: Mark Michelson 2012-07-16 13:44 +0000 [r370081] Kinsey Moore * UPGRADE.txt, CHANGES: Add comments about the BUILD_NATIVE change This is a significant change and mention of it should have gone into UPGRADE.txt and CHANGES. 2012-07-12 20:15 +0000 [r370017] Richard Mudgett * channels/chan_dahdi.c, channels/sig_analog.c: Add missing ast_hangup() calls on some analog exception paths. Make starting analog_ss_thread() or __analog_ss_thread() failure paths hangup the channel. 2012-07-12 20:05 +0000 [r369993-370014] Kinsey Moore * channels/chan_sip.c: Include Expires header for SIP PUBLISH requests RFC3903 requres SIP PUBLISH requests to have Expires headers, so add them. Review: https://reviewboard.asterisk.org/r/2003/ Patch-by: gareth * channels/chan_sip.c: Prevent double uri_escaping in chan_sip when pedantic is enabled If pedantic mode is enabled, outbound invites will have double-escaped contacts. This avoids setting an already-escaped string into a field where it is expected to be unescaped. (closes issue ASTERISK-20023) Reported-by: Walter Doekes 2012-07-12 14:23 +0000 [r369970] Michael L. Young * funcs/func_math.c: Correct Documentation For DEC Function The documentation for DEC in func_math.c was incorrect. Looks like a copy and paste error. (Closes issue ASTERISK-20095) Reported by: Billy Chia Tested by: Michael L. Young Patches: func_math.patch uploaded by Billy Chia (license 6381) 2012-07-11 17:08 +0000 [r369937] Tilghman Lesher * funcs/func_realtime.c: Allow the REALTIME() function to report errors back to the caller. Also, do more error checking on the arguments specified to the REALTIME() function and clarify the documentation. While I was editing the file, a few coding guidelines fixups, as well. Review: https://reviewboard.asterisk.org/r/2031/ 2012-07-30 Asterisk Development Team * Asterisk 1.8.15.0 Released. 2012-07-11 Asterisk Development Team * Asterisk 1.8.15.0-rc1 Released. 2012-07-10 13:33 +0000 [r369869] Kinsey Moore * apps/app_stack.c, main/pbx.c: Improve Goto and GotoIf related documentation Correct documentation on labeliftrue and labeliffalse parameters of GotoIf() and update several other locations that use the same syntax. (closes issue ASTERISK-20007) Patch-by: Leif Madsen Reported-by: WIMPy 2012-07-09 17:05 +0000 [r369818] Jason Parker * configs/sip_notify.conf.sample: Add Digium phones context to sip_notify sample config. This makes it so that they can be reconfigured remotely. (closes issue ASTERISK-19910) 2012-07-09 14:38 +0000 [r369792] Jonathan Rose * channels/chan_sip.c: chan_sip: Fix small behavioral change accidentally introduced in r369750 When removing the warning for AST_CONTROL_FLASH from sip_indicate, I also inadvertently changed the return value, which would likely make the indication not be sent in audio. This fixes that while still removing the warning message. 2012-07-06 20:54 +0000 [r369750] Jonathan Rose * channels/chan_sip.c: chan_sip: Add case for FLASH control frames so that we don't display a warning. chan_sip channels can receive flash control frames when connected to analog phones and possibly for other reasons. There really isn't a reason to warn when these frames are received, we can safely ignore them. Patches: dahdi_sip_flash.diff uploaded by Jonathan Rose (license 6182) 2012-07-06 18:40 +0000 [r369708-369731] Mark Michelson * main/tcptls.c: Remove a superfluous and dangerous freeing of an SSL_CTX. The problem here is that multiple server sessions share a SSL_CTX. When one session ended, the SSL_CTX would be freed and set NULL, leaving the other sessions unable to function. The code being removed is superfluous because the SSL_CTX structures for servers will be properly freed when ast_ssl_teardown is called. (closes issue ASTERISK-20074) Reported by Trevor Helmsley Patches: ASTERISK-20074.diff uploaded by Mark Michelson (license #5049) Testers: Trevor Helmsley * main/bridging.c: Fix bridging thread leak. The bridge thread was exiting but was never being reaped using pthread_join(). This has been fixed now by calling pthread_join() in ast_bridge_destroy(). (closes issue ASTERISK-19834) Reported by Marcus Hunger Review: https://reviewboard.asterisk.org/r/2012 2012-07-05 19:01 +0000 [r369652] Kinsey Moore * apps/app_voicemail.c: AST-2012-011: Resolve heap corruption issue with voicemail The heard and deleted arrays in the voicemail state structure were not handled properly following the memory leak fix in r354890 and a fix for an invalid free in r356797. This could result in accessing and writing into freed memory. The allocation for these arrays has been reworked to avoid the possibility of invalid frees, access of freed memory, and crashes that were occurring as a result of this. Locking around accesses and modifications of the voicemail state structure members dh_arraysize, heard, and deleted has been added to prevent simultaneous modification and access when IMAP storage is in use. If IMAP storage is not in use, this locking is not compiled in. Review: https://reviewboard.asterisk.org/r/1994/ (closes issue ASTERISK-19923) Reported by: Dan Delaney Tested by: Dan Delaney, Julian Yap Patches: vm_alloc_fix.diff uploaded by kmoore (license 6273) 2012-07-05 17:01 +0000 [r369626] Matthew Jordan * channels/chan_sip.c: Do not send a BYE when a provisional response arrives during a re-INVITE Commits r369557 and r369579 were done to improve handling of re-INVITEs when the UA that was supposed to receive the re-INVITE fails to respond. A limitation of those patches occurred when a UA sent a provisional response to the re-INVITE. This triggered a sending of a BYE in check_pending. This patch tweaks the handling of the re-INVITE such that a BYE is not sent in response to those messages. (issue ASTERISK-19992) Reported by: Steve Davies Tested by: Steve Davies patches: (reinvite_tweak.diff license #5012 by Steve Davies) 2012-07-03 16:58 +0000 [r369557-369579] Terry Wilson * channels/chan_sip.c: More improvements to re-INVITEs timing out after a provisional response There is no need to call check_pendings() on a final response to an INVITE when destroying the scheduler entry as it will be done later during normal processing. (issue ASTERISK-19992) * channels/sip/include/sip.h, channels/chan_sip.c: Better handle re-INVITEs with provisional but no final repsonses A previous attempt at fixing this issue had negative side effects related to attended transfers which this patch should resolve. Many thanks to Steve Davies for all of the good suggestions and testing. (closes issue ASTERISK-19992) Reported by: Steve Davies Tested by: Steve Davies, Terry Wilson Review: https://reviewboard.asterisk.org/r/2009/ 2012-06-29 16:52 +0000 [r369471-369490] Joshua Colp * channels/chan_sip.c: With some configurations a transport is not actually specified so assume UDP in these cases. * channels/chan_sip.c: Make the address family filter specific to the transport. (closes issue ASTERISK-16618) Reported by: Leif Madsen Review: https://reviewboard.asterisk.org/r/1667/ 2012-06-27 20:58 +0000 [r369436] Terry Wilson * channels/sip/include/sip.h, channels/chan_sip.c: AST-2012-010: Clean up after a reinvite that never gets a final response The basic problem is that if a re-INVITE is sent by Asterisk and it receives a provisional response, but no final response, then the dialog is never torn down. In addition to leaking memory, this also leaks file descriptors and will eventually lead to Asterisk no longer being able to process calls. This patch just keeps track of whether there is an outstanding re-INVITE, and if there is goes ahead and cleans up everything as though there was no outstanding reinvite. Review: https://reviewboard.asterisk.org/r/2009/ (closes issue ASTERISK-19992) Reported by: Steve Davies Tested by: Steve Davies, Terry Wilson 2012-06-26 13:21 +0000 [r369366-369390] Matthew Jordan * main/adsi.c: Fix crash in unloading of res_adsi module When res_adsi is unloaded, it removes the ADSI functions that it previously installed by passing a NULL adsi_funcs pointer to ast_adsi_install_funcs. This function was not checking whether or not the adsi_funcs pointer passed in was NULL before dereferencing it to check whether or not the version of the functions matches what the core was expecting it. This patch makes it so that the version is only checked if a potentially valid adsi_funcs pointer was passed in. Passing in NULL removes the installed functions, bypassing the version check. * main/cdr.c: Tweak CDR change in r369351 As Tilghman pointed out on review 1996, the check to see if a CDR end time has been set is sufficient to know whether or not the duration value can be used. The check-in done for r369351 forgot to include this change. 2012-06-25 19:13 +0000 [r369352] Mark Michelson * channels/sip/include/sip.h, channels/chan_sip.c: Re-fix how local tag is generated when sending a 481 to an INVITE. Match our local tag to whatever to-tag was sent in the initial INVITE. Because the size of the to-tag may not fit in the buffer in the sip_pvt, it has been changed to a string field. (closes issue ASTERISK-19892) reported by Walter Doekes Review: https://reviewboard.asterisk.org/r/1977 2012-06-25 19:12 +0000 [r369351] Matthew Jordan * main/cdr.c: Fix incorrect duration reporting in CDRs created in batch mode Certain places in core/cdr.c would, if the duration value were 0, calculate the duration as being the delta between the current time and the time at which the CDR record was started. While this does not typically cause a problem in non-batch mode, this can cause an issue in batch mode where CDR records are gathered and written long after those calls have ended. In particular, this affects calls that were never answered, as those are expected to have a duration of 0. Often, this would result in CDR logs with a significant number of calls with lengthy durations, but dispositions of "BUSY". Note that this does not affect cdr_csv, as that backend does not use ast_cdr_getvar and instead directly reports the duration value. The affected core backends include cdr_apative_odbc and cdr_custom; other extended or deprecated CDR backends may potentially still directly manipulate the duration values. (issue ASTERISK-19860) Reported by: Thomas Arimont (issue AST-883) Reported by: Thomas Arimont Tested by: Matt Jordan Review: https://reviewboard.asterisk.org/r/1996/ 2012-06-25 15:57 +0000 [r369327] Richard Mudgett * main/features.c: Fix Bridge application occasionally returning to the wrong location. * Fix do_bridge_masquerade() getting the resume location from the zombie channel. The code must not touch a clone channel after it has masqueraded it. The clone channel has become a zombie and is starting to hangup. (closes issue ASTERISK-19985) Reported by: jamicque Patches: jira_asterisk_19985_v1.8.patch (license #5621) patch uploaded by rmudgett Tested by: jamicque 2012-06-25 15:50 +0000 [r369302-369324] Mark Michelson * main/adsi.c (added): Forgot to svn add this file in my last commit. * res/res_adsi.exports.in (removed), include/asterisk/adsi.h, main/Makefile, res/res_adsi.c: Eliminate embedding of res_adsi.so module. The way this is done is to stop using the optional API. Instead, res_adsi.so, when loaded fills in a table of function pointers. Review: https://reviewboard.asterisk.org/r/1991 * channels/chan_sip.c: Be more consistent with the return code for requests received from invalid domain. When Asterisk receives an INVITE from an external domain when allowexternaldomains=no send a 403 instead of a 404. This is consistent with Asterisk's behavior when receiving a REGISTER in this situation. (Closes issue ASTERISK-19601) Reported by Matthew Jordan Patches: ASTERISK-19601-no401.patch uploaded by Mark Michelson (License #5049) 2012-06-23 00:04 +0000 [r369235-369282] Richard Mudgett * main/features.c: Fix Bridge application and AMI Bridge action error handling. * Fix AMI Bridge action disconnecting the AMI link on error. * Fix AMI Bridge action and Bridge application not checking if their masquerades were successful. * Fix Bridge application running the h-exten when it should not. * Made do_bridge_masquerade() return if the masquerade was successful so the Bridge application and AMI Bridge action could deal with it correctly. * Made bridge_call_thread_launch() hangup the passed in channels if the bridge_call_thread fails to start. Those channels would have been orphaned. * Made builtin_atxfer() check the success of the transfer masquerade setup. * apps/app_queue.c: Explicitly check caller hangup in app Queue rather than a polluted res2 value. * apps/app_dial.c: Check if PBX was started and fix F and F(x) action logic in Dial application. * main/ccss.c: Check if PBX was started for generic CCSS recall. * channels/chan_sip.c: Change incorrect chan_sip zombie hangup debug message. They are all zombies now. 2012-06-22 19:28 +0000 [r369214] Terry Wilson * channels/chan_sip.c: Don't crash on a guest directmedia call A sip_pvt may not have relatedpeer set if a call doesn't match up with a peer. If there is no relatedpeer, there is no direct media ACL to apply, so just return that it is allowed. (closes issue ASTERISK-20040) Reported by: Terry Wilson 2012-06-22 17:14 +0000 [r369195] Kinsey Moore * channels/chan_sip.c: Don't parse media stream state for SIP video streams The sendonly/recvonly/sendrecv/inactive media stream attributes were parsed for video, but nothing was ever done with them. With this code removed, an UNSUPPORTED message is produced when these attributes are used in conjunction with a video stream which is the better behavior since they were never really supported in the first place. 2012-06-20 17:33 +0000 [r369130-369146] Alexandr Anikin * addons/ooh323c/src/ooq931.c, addons/ooh323c/src/ooCalls.c: fix locking issue on empty callList (issue ASTERISK-19298) Reported by: Dmitry Melekhov Patches: ASTERISK-18322-2.patch * addons/chan_ooh323.c: fix compile error (1.8 don't have ast_channel_name macro) 2012-06-20 02:03 +0000 [r369108] Michael L. Young * include/asterisk/netsock2.h, main/netsock2.c: Fix NULL pointer segfault in ast_sockaddr_parse() While working with ast_parse_arg() to perform a validity check, a segfault occurred. The segfault occurred due to passing a NULL pointer to ast_sockaddr_parse() from ast_parse_arg(). According to the documentation in config.h, "result pointer to the result. NULL is valid here, and can be used to perform only the validity checks." This patch fixes the segfault by checking for a NULL pointer. This patch also adds documentation to netsock2.h about why it is necessary to check for a NULL pointer. (Closes issue ASTERISK-20006) Reported by: Michael L. Young Tested by: Michael L. Young Patches: asterisk-20006-netsock-null-ptr.diff uploaded by Michael L. Young (license 5026) Review: https://reviewboard.asterisk.org/r/1990/ 2012-06-19 23:28 +0000 [r369090] Alexandr Anikin * addons/chan_ooh323.c: check rtptimeouts in ooh323 channels as per config file (rtp voice, video, udptl except rtcp) (closes issue ASTERISK-19179) Reported by: TSAREGORODTSEV Yury Patches: 19179-ooh323-2.patch 2012-06-19 15:30 +0000 [r369066] Mark Michelson * channels/chan_sip.c: Fix request routing issue when outboundproxy is used. Asterisk was incorrectly setting the destination of CANCELs and ACKs for error responses to the URI of the initial INVITE. This resulted in further requests, such as INVITEs with authentication credentials, to be routed incorrectly. Instead, when these CANCEL or ACKs are to be sent, we should simply keep the destination the same as what it previously was. There is no need to alter it any. (closes issue ASTERISK-20008) Reported by Marcus Hunger Patches: ASTERISK-20008.patch uploaded by Mark Michelson (license #5049) 2012-06-18 18:07 +0000 [r369043] Richard Mudgett * main/features.c: Fix monitoring calls put in a parking lot. * Fix a regression that was introduced by -r366167 which effectively disabled monitoring parked calls. (closes issue ASTERISK-20012) Reported by: sdolloff Tested by: rmudgett 2012-06-15 15:57 +0000 [r369001-369002] Kevin P. Fleming * build_tools/find_missing_support_level (added): Add a script to enable finding source files without support-levels defined. * main/devicestate.c, main/astfd.c, main/ssl.c, main/taskprocessor.c, main/astobj2.c, main/indications.c, main/config.c, main/loader.c, main/term.c, main/cli.c, channels/sig_analog.c, main/framehook.c, main/strcompat.c, main/plc.c, res/ais/evt.c, main/fskmodem_int.c, main/syslog.c, main/stdtime/localtime.c, main/db.c, main/bridging.c, channels/sig_ss7.c, main/datastore.c, main/sched.c, channels/sip/sdp_crypto.c, main/pbx.c, main/strings.c, channels/vcodecs.c, channels/iax2-provision.c, main/aoc.c, pbx/dundi-parser.c, main/cel.c, channels/iax2-parser.c, main/chanvars.c, main/netsock.c, main/data.c, main/srv.c, channels/chan_misdn.c, main/privacy.c, channels/sip/dialplan_functions.c, main/fixedjitterbuf.c, main/test.c, main/audiohook.c, main/alaw.c, main/asterisk.c, main/timing.c, main/global_datastores.c, main/fskmodem_float.c, main/ccss.c, channels/sip/reqresp_parser.c, channels/misdn/isdn_msg_parser.c, main/utils.c, main/xml.c, main/autochan.c, main/enum.c, channels/misdn/isdn_lib.c, main/fskmodem.c, channels/misdn_config.c, main/io.c, res/ael/pval.c, main/channel.c, main/cdr.c, main/ulaw.c, main/dial.c, main/tdd.c, main/heap.c, channels/console_gui.c, channels/misdn/ie.c, main/logger.c, channels/console_board.c, main/app.c, main/image.c, main/dns.c, main/lock.c, main/stun.c, main/dnsmgr.c, channels/sip/srtp.c, main/translate.c, main/slinfactory.c, main/jitterbuf.c, main/acl.c, channels/sig_pri.c, main/tcptls.c, main/hashtab.c, main/abstract_jb.c, main/callerid.c, main/file.c, res/snmp/agent.c, main/astmm.c, channels/misdn/portinfo.c, main/event.c, channels/sip/config_parser.c, channels/vgrabbers.c, main/xmldoc.c, main/dsp.c, main/udptl.c, main/netsock2.c, main/autoservice.c, main/rtp_engine.c, main/frame.c, main/security_events.c, res/ais/clm.c, main/threadstorage.c, main/say.c, channels/console_video.c: Add support-level indications to many more source files. Since we now have tools that scan through the source tree looking for files with specific support levels, we need to ensure that every file that is a component of a 'core' or 'extended' module (or the main Asterisk binary) is explicitly marked with its support level. This patch adds support-level indications to many more source files in tree, but avoids adding them to third-party libraries that are included in the tree and to source files that don't end up involved in Asterisk itself. 2012-06-14 15:23 +0000 [r368898-368927] Mark Michelson * main/Makefile: Revert Makefile change to remove embedding res_adsi.so The change has resulted in a linking error for certain versions of GCC. This is much worse than the original issue, so for now, temporarily revert the change. A more thorough change will be sought out. * funcs/func_volume.c: Fix a deadlock that occurs when func_volume is used on a local channel. This was discovered by trying to perform a call forward to an extension that makes use of func_volume. When the local channel is optimized away, the datastore on the local;2 channel would have its audiohook destroyed rather than detaching the audiohook from the channel and then destroying it. With this patch, func_volume's datastore destructor takes the proper route of detaching the audiohook and then destroying it. (closes issue ASTERISK-19611) reported by Volker Sauer Patches: ASTERISK-19611.patch uploaded by Mark Michelson (license #5049) 2012-06-13 20:26 +0000 [r368894] Matthew Jordan * res/res_smdi.c, res/res_adsi.c: Mark res_smdi/res_adsi as 'core' supported modules Recently, various issues surrounding weak symbols have caused problems with modules that rely on that feature to be enabled in menuselect. This includes app_voicemail and chan_dahdi, as they both rely upon res_smdi and res_adsi, which, in certain circumstances, may not be enabled by default in menuselect. Because res_smdi/res_adsi are dependencies for chan_dahdi/app_voicemail, this patch marks both as 'core' supported modules. This will allow both app_voicemail and chan_dahdi to be enabled as well, regardless of whether or not that system supports weak symbols. (issue AST-900) Reported by: Thomas Arimont (issue AST-885) Reported by: Denis Alberto Martinez 2012-06-13 19:00 +0000 [r368873] Mark Michelson * main/Makefile: Remove forced linking of res_adsi.o In GCC 4.5+ the result is that Asterisk has a phantom module loaded at startup, claiming to be res_adsi. (closes issue ASTERISK-19920) reported by Leif Madsen 2012-06-13 14:27 +0000 [r368830-368852] Matthew Jordan * Makefile: Do not install empty directories; add ASTLIBDIR r368830 modified the installation script to only create a directory if that directory does not exist. If some directory variable was empty, it would attempt to create the empty location. It also failed to create the ASTLIBDIR directory. This patch fixes it such that the correct directories are made and only created if a value specifying them actually exists. * Makefile: Do not perform install on existing directories If a directory already exists, performing a 'make install' will remove the permissions associated with the current directory and replace them with the permissions of the user executing the install. This patch changes this behavior to only perform an install on the directory if the directory does not exist. Thus, if a user later changes the permissions on that directory, those permissions will be preserved in subsequent installs. Review: https://reviewboard.asterisk.org/r/1986 Review: https://reviewboard.asterisk.org/r/1864 (closes issue ASTERISK-19492) Reported by: Karl Fife Tested by: Paul Belanger, Tilghman Lesher patches: ASTERISK-19492 by pabelanger (uploaded by mjordan) 2012-06-12 15:36 +0000 [r368807] Mark Michelson * channels/chan_sip.c: Set the Caller ID "tag" on peers even if remote party information is present. On incoming calls, we were setting the cid_tag on the dialog only if there was no remote party information (Remote-Party-ID or P-Asserted-Identity) present. The Caller ID tag is an invented parameter, though, and should be set no matter the circumstance. (closes issue ASTERISK-19859) Reported by Thomas Arimont (closes issue AST-884) Reported by Trey Blancher 2012-06-11 17:03 +0000 [r368759] Richard Mudgett * include/asterisk/channel.h, channels/chan_iax2.c, main/channel.c, channels/chan_dahdi.c, channels/sig_analog.c, channels/chan_sip.c: Fix deadlock potential with ast_set_hangupsource() calls. Calling ast_set_hangupsource() with the channel lock held can result in a deadlock because the function also locks the bridged channel. (issue ASTERISK-19537) (closes issue AST-891) Reported by: Guenther Kelleter Tested by: Guenther Kelleter (closes issue ASTERISK-19801) Reported by: Alec Davis 2012-06-11 15:13 +0000 [r368719-368738] Kinsey Moore * apps/app_queue.c, main/loader.c, channels/chan_dahdi.c, res/res_config_odbc.c, channels/sip/dialplan_functions.c, pbx/pbx_config.c, apps/app_directory.c, res/res_odbc.c, res/res_speech.c, apps/app_voicemail.c, main/udptl.c, channels/sip/sdp_crypto.c, channels/chan_sip.c, res/res_fax.c, main/say.c, funcs/func_strings.c, channels/sip/reqresp_parser.c: Fix coverity UNUSED_VALUE findings in core support level files Most of these were just saving returned values without using them and in some cases the variable being saved to could be removed as well. (issue ASTERISK-19672) * main/md5.c: Fix compilation in dev-mode Backport a compilation fix in md5.c from trunk that only showed up in dev-mode under certain compiler versions. 2012-07-10 Asterisk Development Team * Asterisk 1.8.14.0 Released. 2012-07-06 Asterisk Development Team * Asterisk 1.8.14.0-rc2 Released. * AST-2012-010: Possible Resource Leak on Uncompleted Re-INVITE transactions * AST-2012-011: Remote Crash Vulnerability in VoiceMail Application * Fix crash on a guest directmedia call A sip_pvt may not have relatedpeer set if a call doesn't match up with a peer. If there is no relatedpeer, there is no direct media ACL to apply, so just return that is is allowed. (closes issue ASTERISK-20040) * Fix request routing issue when outboundproxy is used Asterisk was incorrectly setting the destination of CANCELs and ACKs for error responses to the URI of the initial INVITE. This resulted in further requests, such as INVITEs with authentication credentials, to be routed incorrectly. Instead when these CANCEL or ACKs are to be esnt, we should simply keep the destination the same as what it previously was. There is no need to alter it any. (closes issue ASTERISK-20008) * Fix monitoring calls put in a parking lot Fix a regression that was introduced by r366167 which effectively disabled monitoring parked calls. (closes issue ASTERISK-20012) 2012-06-08 Asterisk Development Team * Asterisk 1.8.14.0-rc1 Released. 2012-06-06 21:27 +0000 [r368644] Richard Mudgett * channels/chan_dahdi.c, channels/sig_analog.c: Fix POTS flash hook to orignate a second call deadlock. A deadlock can occur when a POTS phone tries to flash hook to originate a second call for 3-way or transfer. If another process is scanning the channels container when the POTS line flash hooks then a deadlock will occur. * Release the channel and private locks when creating a new channel as a result of a flash hook. (closes issue ASTERISK-19842) Reported by: rmudgett Tested by: rmudgett 2012-06-06 19:13 +0000 [r368625] Mark Michelson * channels/chan_sip.c: Fix a specific scenario where ACKs are not matched. If a dialog-starting INVITE contains a to-tag, then Asterisk will respond with a 481. In this case, the resulting incoming ACK would not be matched, so Asterisk would continue retransmitting the 481 until the transaction times out. There were two issues. Asterisk, upon creating a sip_pvt would generate a local tag. However, when the time came to transmit the 481, since there was a to-tag in the INVITE, Asterisk would place this original to-tag in the 481 response. When the ACK came in, Asterisk would attempt to match the to-tag in the ACK to the generated local tag. Unfortunately, Asterisk never actually transmitted a response with the generated local tag, so the to-tag in the ACK would not match. The other problem was that when the 481 was sent, nothing was set on the sip_pvt to indicate what CSeq is expected in the ACK. To fix the first problem, we zero out the to-tag seen in the incoming INVITE. This way, Asterisk, when time to send a response, will send its generated local tag instead. To fix the second problem, we set the sip_pvt's pendinginvite to the CSeq of the INVITE when we send a 481. (closes issue ASTERISK-19892) Reported by Mark Michelson 2012-06-06 17:20 +0000 [r368604] Matthew Jordan * build_tools/make_version: Add feature modifier to versions produced from branches Certain branches, such as Certified Asterisk, may have a modifier added to them that specifies the features available in that branch. For branches, this modifier is expected to be reflected in the location of the branch in subversion. For example, a subversion of URL of /certified/branches/1.8.11 would have a feature modifier of 'certified'. This is slightly different then how features are determined for tags, where the feature is part of the actual tag name, e.g., "10.5.0-digiumphones". In keeping with the nomenclature used for tags, the feature specifier for branches is translated and placed after the revision numbers. For the example given previously, this would result in a branch version of "Asterisk SVN-branch-1.8.11-cert-rXXXXXX". 2012-06-06 16:07 +0000 [r368586] Kinsey Moore * channels/chan_sip.c: Ensure overlapping hold flags do not conflict When changing between different modes of hold, the flags were not being cleared out properly causing a failure to change hold states. (closes issue ASTERISK-19919) Patch-by: Morten Tryfoss Reported-by: Morten Tryfoss 2012-06-06 01:08 +0000 [r368567] Richard Mudgett * main/features.c: Fix parked call performing a DTMF blind transfer after being retrieved. When a parked call was retrieved from the parking lot, it could not do a blind transfer because it caused the involved calls to be hung up unconditionally. * Made the ParkedCall application return the ast_bridge_call() return value. (closes issue ABE-2862) Reported by: Vlad Povorozniuc 2012-06-05 15:26 +0000 [r368520-368533] Kinsey Moore * apps/app_minivm.c: Resolve some build warnings My newly upgraded compiler caught these usages of uninitialized values. They weren't actually used. * apps/app_voicemail.c: Ensure that pages and emails are sent using RFC822-compliant date format When localization was added to app_voicemail, these headers were altered when they should have remained in en_US format for RFC compliance. This reverts the changes to those two lines. (closes issue ASTERISK-19876) 2012-06-04 21:56 +0000 [r368498] Mark Michelson * channels/chan_sip.c: Relay proper SIP responses on calling side. Revision 351130 broke corect HANGUPCAUSE setting for the 404 case in chan_sip. Other cases were also potentially broken. This patch fixes the relaying of causes to be what they used to be. (closes issue ASTERISK-19914) Reported by Pavel Troller Tested by Walter Doekes (via a reviewboard test to be committed later) Patches: chan_sip.diff uploaded by Pavel Troller (license #6302) 2012-06-04 21:10 +0000 [r368405-368469] Richard Mudgett * UPGRADE.txt: Document BLINDTRANSFER behavior change. (issue ASTERISK-19322) (closes issue ASTERISK-19875) Reported by: call * main/channel.c: Fix potential deadlock between masquerade and chan_local. * Restructure ast_do_masquerade() to not hold channel locks while it calls ast_indicate(). * Simplify many calls to ast_do_masquerade() since it will never return a failure now. If it does fail internally because a channel driver callback operation failed, the only thing ast_do_masquerade() can do is generate a warning message about strange things may happen and press on. * Fixed the call to ast_bridged_channel() in ast_do_masquerade(). This change fixes half of the deadlock reported in ASTERISK-19801 between masquerades and chan_iax. (closes issue ASTERISK-19537) Reported by: rmudgett Tested by: rmudgett Review: https://reviewboard.asterisk.org/r/1915/ 2012-06-01 23:21 +0000 [r368308] Richard Mudgett * apps/app_stack.c: Fix deadlock when Gosub used with alternate dialplan switches. Attempting to remove a channel from autoservice with the channel lock held will result in deadlock. * Restructured gosub_exec() to not call ast_parseable_goto() and ast_exists_extension() with the channel lock held. (closes issue ASTERISK-19764) Reported by: rmudgett Tested by: rmudgett 2012-06-01 18:18 +0000 [r368218] Kevin P. Fleming * channels/chan_sip.c: Improve SDP parsing warning messages * 'Unsupported media type' is only reported when that is in fact the case, not when a supported media type is included in an 'm' line that has an invalid format. * All warning messages related to parsing 'm' lines now include the 'm' line contents. * (minor bugfix) newline added to port-number-zero warning messages. * Warning messages improved to use RFC-specified terminology for various items. * Warnings for offers that include more than one port for a single media type now include the media type. Review: https://reviewboard.asterisk.org/r/1811/ 2012-06-01 03:25 +0000 [r368092] Michael L. Young * funcs/func_channel.c: Add documentation to function CHANNEL for options echocan_mode and buffers The ability to set "echocan_mode" and "buffers" through the dialplan was added to chan_dahdi some time ago. This patch adds some documentation to func_channel. (Closes issue ASTERISK-19911) Reported by: Dale Noll Tested by: Michael L. Young Patches: asterisk-19911-branch18.diff uploaded by Michael L. Young (license 5026) Review: https://reviewboard.asterisk.org/r/1949/ 2012-05-31 18:00 +0000 [r367906-368039] Richard Mudgett * main/db1-ast/btree/bt_open.c, apps/app_queue.c, channels/chan_iax2.c, pbx/pbx_config.c, res/ael/pval.c, main/tcptls.c, main/manager.c, res/res_config_odbc.c, channels/chan_sip.c, channels/chan_agent.c, funcs/func_math.c, main/features.c: Coverity Report: Fix issues for error type REVERSE_INULL (core modules) * Fixes findings: 0-2,5,7-15,24-26,28-31 (issue ASTERISK-19648) Reported by: Matt Jordan * channels/sig_pri.c, channels/sig_ss7.c: Use the DEADLOCK_AVOIDANCE() macro instead. (issue ASTERISK-19854) * channels/sig_pri.c, channels/sig_ss7.c: Fix deadlock when executing CLI "pri show channels" and "ss7 show channels" commands. * Fix sig_pri_lock_owner() to avoid deadlock properly. * Code pri_grab() better. * Fix sig_ss7_lock_owner() to avoid deadlock properly. * Code ss7_grab() better. (closes issue ASTERISK-19854) Reported by: Jaxon Patches: jira_asterisk_19854_v1.8.6.patch (license #5621) patch uploaded by rmudgett (Modified to do the same thing to sig_ss7) Tested by: Jaxon * apps/app_meetme.c: Coverity Report: Fix issues for error type REVERSE_INULL (deprecated modules) * Fix only issue pointed out by deprecated_REVERSE_INULL.txt for app_meetme.c in find_user(). * Change use of %i to %d in sscanf() in find_user(). The use of %i gives unexpected parsing because it can accept hex, octal, and decimal integer formats. * Changed other uses of %i in app_meetme() to use %d for consistency. (issue ASTERISK-19648) Reported by: Matt Jordan 2012-05-29 18:30 +0000 [r367843] Matthew Jordan * channels/chan_skinny.c: AST-2012-008: Fix remote crash vulnerability in chan_skinny When a skinny session is unregistered, the corresponding device pointer is set to NULL in the channel private data. If the client was not in the on-hook state at the time the connection was closed, the device pointer can later be dereferenced if a message or channel event attempts to use a line's pointer to said device. The patches prevent this from occurring by checking the line's pointer in message handlers and channel callbacks that can fire after an unregistration attempt. (closes issue ASTERISK-19905) Reported by: Christoph Hebeisen Tested by: mjordan, Damien Wedhorn Patches: AST-2012-008-1.8.diff uploaded by mjordan (license 6283) AST-2012-008-10.diff uploaded by mjordan (license 6283) 2012-05-25 16:28 +0000 [r367781] Richard Mudgett * channels/chan_iax2.c: AST-2012-007: Fix IAX receiving HOLD without suggested MOH class crash. * Made schedule_delivery() set the received frame f->data.ptr to NULL if the datalen is zero. * Fix queue_signalling() memcpy() size error. * Made queue_signalling() not use C++ keyword variable names. (closes issue ASTERISK-19597) Reported by: mgrobecker Patches: jira_asterisk_19597_v1.8.patch (license #5621) patch uploaded by rmudgett Tested by: rmudgett, Michael L. Young 2012-05-25 02:27 +0000 [r367730] Michael L. Young * channels/chan_sip.c: Fix pvt_sip for inbound call to use peer's allowtransfer setting The pvt_sip allowtransfer was not being set to that of the peer's setting. Therefore, the global allowtransfer setting was being used instead which would lead to calls not being transfered if the global setting was set to 'no' despite the setting on the peer being 'yes' and vice versa, calls would be allowed to transfer even if the peer's setting was 'no' but the global setting was 'yes'. (Closes issue ASTERISK-19856) Reported by: Jacek Tested by: Michael L. Young, Jacek Patches: issue-asterisk-19856-branch10-v3.diff uploaded by Michael L. Young (license 5026) Review: https://reviewboard.asterisk.org/r/1923/ 2012-05-24 22:21 +0000 [r367469-367678] Richard Mudgett * apps/app_queue.c, apps/app_dial.c: Fix Dial I option ignored if dial forked and one fork redirects. The Dial and Queue I option is intended to block connected line updates and redirecting updates. However, it is a feature that when a call is locally redirected, the I option is disabled if the redirected call runs as a local channel so the administrator can have an opportunity to setup new connected line information. Unfortunately, the Dial and Queue I option is disabled for *all* forked calls if one of those calls is redirected. * Make the Dial and Queue I option apply to each outgoing call leg independently. Now if one outgoing call leg is locally redirected, the other outgoing calls are not affected. * Made Dial not pass any redirecting updates when forking calls. Redirecting updates do not make sense for this scenario. * Made Queue not pass any redirecting updates when using the ringall strategy. Redirecting updates do not make sense for this scenario. * Fixed deadlock potential with chan_local when Dial and Queue send redirecting updates for a local redirect. * Converted the Queue stillgoing flag to a boolean bitfield. (closes issue ASTERISK-19511) Reported by: rmudgett Tested by: rmudgett Review: https://reviewboard.asterisk.org/r/1920/ * main/pbx.c: Fix WaitExten(x,m(musicclass)) string termination. The AST_CONTROL_HOLD MOH class from the WaitExten application can now be queued onto a channel, passed over local channels with the /m option, and passed over IAX channels. 2012-05-23 20:27 +0000 [r367416] Mark Michelson * main/tcptls.c: Only call SSL_CTX_free if DO_SSL is defined. Thanks to Paul Belanger for pointing out this error. 2012-05-23 13:06 +0000 [r367362] Matthew Jordan * channels/chan_sip.c: Update a peer's LastMsgsSent when the peer is notified of waiting messages Previously, MWI logic utilized a counter called 'lastmsgssent' to know whether or not MWI NOTIFY requests had been sent to a specific peer. When MWI notifications were changed to use the internal event framework, this value was no longer needed for its original purpose. Hence, it was no longer updated with the new/old message counts for a peer. However, the value was still presented when, either by AMI or CLI, a 'sip show peer [peer]' command was executed. The output of the command would always display the erroneous value of 32767/65535 for 'LastMsgsSent'. This patch makes it so that the value of lastmsgssent is updated appropriately. The value should now display the new/old message counts for a particular peer. (closes issue ASTERISK-17866) Reported by: Steve Davies patches by: ast-17866-rb1272.patch (License #5041 by irroot) Modified slightly for this commit Review: https://reviewboard.asterisk.org/r/1939 2012-05-22 17:14 +0000 [r367266-367292] Terry Wilson * include/asterisk/channel.h, main/cel.c, main/asterisk.c, main/channel.c, include/asterisk/cel.h: Fix race condition for CEL LINKEDID_END event This patch fixes to situations that could cause the CEL LINKEDID_END event to be missed. 1) During a core stop gracefully, modules are unloaded when ast_active_channels == 0. The LINKDEDID_END event fires during the channel destructor. This means that occasionally, the cel_* module will be unloaded before the channel is destroyed. It seemed generally useful to wait until the refcount of all channels == 0 before unloading, so I added a channel counter and used it in the shutdown code. 2) During a masquerade, ast_channel_change_linkedid is called. It calls ast_cel_check_retire_linkedid which unrefs the linkedid in the linkedids container in cel.c. It didn't ref the new linkedid. Now it does. Review: https://reviewboard.asterisk.org/r/1900/ * channels/chan_sip.c: Resolve crash in subscribing for MWI notifications ASTOBJ_UNREF sets the variable to NULL after unreffing it, so the variable should definitely not be used after that. To solve this in the two cases that affect subscribing for MWI notifications, we instead save the ref locally, and unref them in the error conditions. (closes issue ASTERISK-19827) Reported by: B. R Review: https://reviewboard.asterisk.org/r/1940/ 2012-05-18 17:47 +0000 [r367002-367027] Mark Michelson * channels/chan_dahdi.c, main/say.c: Address MISSING_BREAK static analysis reports some more. This addresses core findings 4 and 6. Moises Silva helped me by stating that a break could be safely added to the case where it is added in chan_dahdi.c In say.c, I have added a comment indicating that static analysis complains but that it is currently unknown if this is correct. This fixes all core findings of this type. (closes issue ASTERISK-19662) reported by Matthew Jordan * include/asterisk/tcptls.h, main/tcptls.c, channels/chan_sip.c: Fix memory leak of SSL_CTX structures in TLS core. SSL_CTX structures were allocated but never freed. This was a bigger issue for clients than servers since new SSL_CTX structures could be allocated for each connection. Servers, on the other hand, typically set up a single SSL_CTX for their lifetime. This is solved in two ways: 1. In __ssl_setup(), if a tcptls_cfg has an ssl_ctx on it, it is freed so that a new one can take its place. 2. A companion to ast_ssl_setup() called ast_ssl_teardown() has been added so that servers can properly free their SSL_CTXs. (issue ASTERISK-19278) 2012-05-18 15:42 +0000 [r366944] Matthew Jordan * main/cli.c, channels/chan_sip.c, funcs/func_odbc.c: Fix more memory leaks This patch adds to what was fixed in r366880. Specifically, it addresses the following: * chan_sip: dispose of an allocated frame in off nominal code paths in sip_rtp_read * func_odbc: when disposing of an allocated resultset, ensure that any rows that were appended to that resultset are also disposed of * cli: free the created return string buffer in another off nominal code path (issue ASTERISK-19665) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/1922/ 2012-05-18 14:16 +0000 [r366882] Kinsey Moore * channels/sip/config_parser.c: Reorder and renumber tests appropriately It appears that a patch did not apply properly when adding tests 12 and 13 and test 11 was duplicated. These tests have been reordered and renumbered such that they make sense. 2012-05-18 13:58 +0000 [r366880] Matthew Jordan * res/res_calendar_caldav.c, res/res_musiconhold.c, res/res_jabber.c, apps/app_queue.c, channels/chan_iax2.c, main/enum.c, main/editline/term.c, main/config.c, res/res_srtp.c, main/editline/tokenizer.c, main/cli.c, channels/chan_dahdi.c, main/data.c, funcs/func_odbc.c, apps/app_minivm.c, main/features.c, main/editline/readline.c, channels/sip/config_parser.c, main/xmldoc.c, res/res_calendar.c, apps/app_voicemail.c, res/res_rtp_asterisk.c, main/netsock2.c, res/res_calendar_icalendar.c, res/res_calendar_exchange.c, main/pbx.c, apps/app_page.c, channels/chan_sip.c, funcs/func_dialgroup.c, apps/app_record.c: Fix a variety of memory leaks This patch addresses a number of memory leaks in a variety of modules that were found by a static analysis tool. A brief summary of the changes: * app_minivm: free ast_str objects on off nominal paths * app_page: free the ast_dial object if the requested channel technology cannot be appended to the dialing structure * app_queue: if a penalty rule failed to match any existing rule list names, the created rule would not be inserted and its memory would be leaked * app_read: dispose of the created silence detector in the presence of off nominal circumstances * app_voicemail: dispose of an allocated unique ID field for MWI event un-subscribe requests in off nominal paths; dispose of configuration objects when using the secret.conf option * chan_dahdi: dispose of the allocated frame produced by ast_dsp_process * chan_iax2: properly unref peer in CLI command "iax2 unregister" * chan_sip: dispose of the allocated frame produced by sip_rtp_read's call of ast_dsp_process; free memory in parse unit tests * func_dialgroup: properly deref ao2 object grhead in nominal path of dialgroup_read * func_odbc: free resultset in off nominal paths of odbc_read * cli: free match_list in off nominal paths of CLI match completion * config: free comment_buffer/list_buffer when configuration file load is unchanged; free the same buffers any time they were created and config files were processed * data: free XML nodes in various places * enum: free context buffer in off nominal paths * features: free ast_call_feature in off nominal paths of applicationmap config processing * netsock2: users of ast_sockaddr_resolve pass in an ast_sockaddr struct that is allocated by the method. Failures in ast_sockaddr_resolve could result in the users of the method not knowing whether or not the buffer was allocated. The method will now not allocate the ast_sockaddr struct if it will return failure. * pbx: cleanup hash table traversals in off nominal paths; free ignore pattern buffer if it already exists for the specified context * xmldoc: cleanup various nodes when we no longer need them * main/editline: various cleanup of pointers not being freed before being assigned to other memory, cleanup along off nominal paths * menuselect/mxml: cleanup of value buffer for an attribute when that attribute did not specify a value * res_calendar*: responses are allocated via the various *_request method returns and should not be allocated in the various write_event methods; ensure attendee buffer is freed if no data exists in the parsed node; ensure that calendar objects are de-ref'd appropriately * res_jabber: free buffer in off nominal path * res_musiconhold: close the DIR* object in off nominal paths * res_rtp_asterisk: if we run out of ports, close the rtp socket object and free the rtp object * res_srtp: if we fail to create the session in libsrtp, destroy the temporary ast_srtp object (issue ASTERISK-19665) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/1922 2012-05-17 14:40 +0000 [r366791] Jonathan Rose * channels/chan_sip.c: chan_sip: Fix missed locking of opposing pvt for directmedia acl from r366547 It also required deadlock avoidance since two sip_pvts structs needed to be locked simultaneously. Trunk handles it differently, so this is a 1.8 and 10 patch only. (issue AST-876) 2012-05-17 12:51 +0000 [r366740] Matthew Jordan * res/res_calendar_ews.c, channels/chan_dahdi.c: Fix checking bounds of array index after using it; improper sizeof This patch fixes two problems pointed out by a static analysis tool. * In chan_dahdi, when an event is handled the index of the sub channel is first obtained. In very off nominal cases, the method that determines the index can return a negative value. In the event handling code, whether or not the index returned is valid was being checked after that value was used to index into an array. This patch makes it so the value is checked before any indexing is done. * In res_calendar_ews, sizeof was being passed a pointer instead of the struct to determine the amount of memory to allocate. (issue ASTERISK-19651) Reported by: Matt Jordan (closes issue ASTERISK-19671) Reported by: Matt Jordan 2012-05-16 15:52 +0000 [r366597-366650] Mark Michelson * main/http.c: Fix incorrect default port number for HTTP server. Thanks to Tzafrir Cohen for bringing this up on the Asterisk developers mailing list. * channels/chan_sip.c: Correct misuse of ast_strip_quoted() when getting a Diversion header's reason parameter. The use here was assuming that the pointer would be updated, but the updated string is actually returned by ast_strip_quoted() instead. 2012-05-15 20:14 +0000 [r366547] Jonathan Rose * channels/chan_sip.c: chan_sip: Check the right channel's host address for directmediapermit/deny Prior to this patch, when checking the addresses for directmediapermit and directmediadeny, Asterisk would check the host address of the channel permit/deny was specified, which differs from the expectations of both our users and the development team. Instead, directmediapermit/deny now checks against the address of the channel that the peer with the ACL is connected to. (issue AST-876) Review: https://reviewboard.asterisk.org/r/1899/ 2012-05-14 19:57 +0000 [r366389-366409] Mark Michelson * pbx/dundi-parser.c: Fix two more coverity constant expression result findings. These correspond to findings 0 and 1 in the core findings of ASTERISK-19649. After contacting Mark Spencer, he was unsure of what the intent behind these lines of code were, so they are being axed. For Asterisk 1.8 and 10, the output of debugging DUNDi frames will not be changed, but for trunk the "Retry" portion will be omitted since it does not properly distinguish retransmissions from initial frames. (closes issue ASTERISK-19649) Reported by Matthew Jordan * channels/chan_sip.c: Fix broken reinvite glare scenario. To make a long story short, reinvite glares were broken because Asterisk would invert the To and From headers when ACKing a 491 response. The reason was because the initreq of the dialog was being changed to the incoming glared reinvite instead of being set to the outgoing glared reinvite. This change has three parts * In handle_incoming, we never will reject an ACK because it has a to-tag present, even if we think the request may be out of dialog. * In handle_request_invite, we do not change the initreq when receiving a reinvite to which we will respond with a 491. * In handle_request_invite, several superflous settings up pendinginvite have been removed since this is dones automatically by transmit_response_reliable Review: https://reviewboard.asterisk.org/r/1911 2012-05-11 23:53 +0000 [r366296] Russell Bryant * addons/format_mp3.c: format_mp3: Fix a possible crash mp3_read(). This patch fixes a potential crash in mp3_read() by not assuming that dbuf has enough data to finish filling up the output buffer. The patch also makes sure that the dbuf state gets reset after we know we read everything out of it already. In passing, this patch includes some other cleanups of this module, including stripping trailing whitespace, formatting fixes based on coding guidelines, and removing a number of unused members from the private state struct. (closes issue ASTERISK-19761) Reported by: Chris Maciejewsk Tested by: Chris Maciejewsk 2012-05-10 23:38 +0000 [r366240] Richard Mudgett * main/channel.c: * Made ast_change_name() hold the channels container lock while changing the channel name. * Eliminate redundant list not empty check in clone_variables(). 2012-05-10 20:50 +0000 [r366167] Kinsey Moore * main/devicestate.c, pbx/dundi-parser.c, channels/chan_iax2.c, channels/iax2-parser.c, main/config.c, res/res_monitor.c, main/channel.c, main/cdr.c, res/ael/pval.c, main/data.c, channels/chan_dahdi.c, main/tcptls.c, main/manager.c, main/features.c, main/app.c, main/event.c, pbx/pbx_dundi.c, res/res_odbc.c, main/xmldoc.c, apps/app_voicemail.c, funcs/func_speex.c, main/pbx.c, res/res_calendar_icalendar.c, channels/chan_sip.c, funcs/func_lock.c, channels/chan_agent.c, channels/sip/reqresp_parser.c: Resolve FORWARD_NULL static analysis warnings This resolves core findings from ASTERISK-19650 numbers 0-2, 6, 7, 9-11, 14-20, 22-24, 28, 30-32, 34-36, 42-56, 82-84, 87, 89-90, 93-102, 104, 105, 109-111, and 115. Finding numbers 26, 33, and 29 were already resolved. Those skipped were either extended/deprecated or in areas of code that shouldn't be disturbed. (Closes issue ASTERISK-19650) 2012-05-10 16:47 +0000 [r366094] Jonathan Rose * channels/iax2-provision.c, apps/app_queue.c, channels/chan_iax2.c, res/ael/ael.flex, funcs/func_devstate.c, main/asterisk.c, main/db.c, main/xmldoc.c, apps/app_voicemail.c, main/pbx.c, channels/sig_analog.c, channels/chan_sip.c, funcs/func_lock.c, main/features.c, main/acl.c: Coverity Report: Fix issues for error type CHECKED_RETURN for core (issue ASTERISK-19658) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/1905/ 2012-05-10 16:10 +0000 [r366052] Mark Michelson * channels/chan_sip.c: Close the proper tcptls_session when session creation fails. (issue AST-998) Reported by: Thomas Arimont Tested by: Thomas Arimont 2012-05-10 15:35 +0000 [r365989-366048] Jonathan Rose * apps/app_chanspy.c, apps/app_page.c, funcs/func_cdr.c, main/features.c, apps/app_disa.c: Coverity Report: Fix issues for error type UNINIT in Core supported modules (issue ASTERISK-19652) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/1909/ * codecs/codec_dahdi.c: Block on frameout if the hardware has enough samples to complete a frame. Fixes some problems with skipping audio in elaborate scenarios involving multiple codecs by making codec_dahdi operate in a more synchronous fashion similar to codec_g729. This change also fixes the use of file conversion tools from Asterisk's CLI. This change may cause the thread responsible for transcoding audio to block briefly (Shaun Ruffell describes this as 'several milliseconds') while waiting for the hardware transcoder. (closes issue ASTERISK-19643) reported by: Shaun Ruffell Patches: 0001-codec_dahdi-Block-on-frameout-the-hardware-has-enoug.patch uploaded by Shaun Ruffell (license 5417) 2012-05-09 16:11 +0000 [r365896] Mark Michelson * channels/chan_sip.c: Prevent sip_pvt refleak when an ast_channel outlasts its corresponding sip_pvt. chan_sip was coded under the assumption that a SIP dialog with an owner channel will always be destroyed after the owner channel has been hung up. However, there are situations where the SIP dialog can time out and auto destruct before the corresponding channel has hung up. A typical example of this would be if the 'h' extension in the dialplan takes a long time to complete. In such cases, __sip_autodestruct() would complain about the dialog being auto destroyed with an owner channel still in place. The problem is that even once the owner channel was hung up, the sip_pvt would still be linked in its ao2_container because nothing would ever unlink it. The fix for this is that if __sip_autodestruct() is called for a sip_pvt that still has an owner channel in place, the destruction is rescheduled for 10 seconds in the future. This will continue until the owner channel is finally hung up. (closes issue ASTERISK-19425) reported by David Cunningham Patches: ASTERISK-19425.patch uploaded by Mark Michelson (License #5049) (closes issue ASTERISK-19455) reported by Dean Vesvuio Tested by Dean Vesvuio 2012-05-08 20:14 +0000 [r365631-365692] Richard Mudgett * apps/app_followme.c: * Fix FollowMe memory leak on error paths in app_exec(). * Fix FollowMe leaving recorded caller name file on error paths in app_exec(). * Use correct buffer dimension define in struct call_followme.moh[] and struct fm_args.namerecloc[]. This fixes unexpected namerecloc filename length restriction. * apps/app_followme.c: * Fix accept/decline DTMF buffer overwrite in FollowMe. * Made use MAX_YN_STRING define to make all accept/decline DTMF buffers the same size. Just using 20 isn't good enough when someone didn't get the memo. * Fix stupid use of a global variable in FollowMe. (ynlongest) * Fix bit field declarations in FollowMe. * Fix FollowMe n option documentation. 2012-05-08 15:48 +0000 [r365574] Mark Michelson * channels/chan_sip.c: Send more accurate identification information in dialog-info SIP NOTIFYs. This uses the calling channel's caller ID and connected line information to populate the remote and local identities in the dialog-info NOTIFY when an extension is ringing. There is a bit of an oddity here, and that is that we seed the remote target with the To header of the outbound call rather than the from header. This is because it was reported that seeding with the from header caused hints to be broken with certain SNOM devices. A comment has been added to the code to explain this. (closes issue ASTERISK-16735) reported by Maciej Krajewski patches: local_remote_hint2.diff uploaded by Mark Michelson (license #5049) 16735_tweak1.diff uploaded by Mark Michelson (license #5049) Tested by Niccolo Belli 2012-05-07 18:40 +0000 [r365476] Richard Mudgett * tests/test_config.c: Fix type punned compiler warning in test_config.c 2012-05-07 18:36 +0000 [r365474] Matthew Jordan * apps/app_voicemail.c, main/pbx.c: Support VoiceMail d() option when extension does not exist in channel's context The VoiceMail d([c]) option is documented to accept digits for a new extension in context , if played during the greeting. This option works fine if the extension being redirected to has an extension with the same initial digit in the channel's current context. If that digit did not happen to exist in some extension, a dialplan match would fail and the user would not be redirected. This patch fixes it such that if the option is used, the extensions are matched in that context as opposed to the caller's original context. (closes issue ASTERISK-18243) Reported by: mjordan Tested by: mjordan Review: https://reviewboard.asterisk.org/r/1892 2012-05-07 16:01 +0000 [r365460] Mark Michelson * main/audiohook.c, res/res_speech.c, channels/sig_analog.c, main/abstract_jb.c, res/res_agi.c: Fix findings 0-3, 5, and 8 for Coverity MISSING_BREAK errors. (Issue ASTERISK-19662) 2012-05-04 22:12 +0000 [r365398] Kinsey Moore * apps/app_followme.c, channels/chan_iax2.c, channels/sip/config_parser.c, pbx/pbx_config.c, apps/app_chanspy.c, apps/app_stack.c, main/config.c, apps/app_voicemail.c, channels/chan_sip.c, funcs/func_aes.c, main/features.c: Fix many issues from the NULL_RETURNS Coverity report Most of the changes here are trivial NULL checks. There are a couple optimizations to remove the need to check for NULL and outboundproxy parsing in chan_sip.c was rewritten to avoid use of strtok. Additionally, a bug was found and fixed with the parsing of outboundproxy when "outboundproxy=," was set. (Closes issue ASTERISK-19654) 2012-05-04 16:24 +0000 [r365313] Richard Mudgett * channels/chan_local.c: Fix local channel chains optimizing themselves out of a call. * Made chan_local.c:check_bridge() check the return value of ast_channel_masquerade(). In long chains of local channels, the masquerade occasionally fails to get setup because there is another masquerade already setup on an adjacent local channel in the chain. * Made the outgoing local channel (the ;2 channel) flush one voice or video frame per optimization attempt. * Made sure that the outgoing local channel also does not have any frames in its queue before the masquerade. * Made do the masquerade immediately to minimize the chance that the outgoing channel queue does not get any new frames added and thus unconditionally flushed. * Made block indication -1 (Stop tones) event when the local channel is going to optimize itself out. When the call is answered, a chain of local channels pass down a -1 indication for each bridge. This blizzard of -1 events really slows down the optimization process. (closes issue ASTERISK-16711) Reported by: Alec Davis Tested by: rmudgett, Alec Davis Review: https://reviewboard.asterisk.org/r/1894/ 2012-05-04 15:48 +0000 [r365298] Mark Michelson * res/res_rtp_asterisk.c: Fix core FINDING 2, FINDING 3, and FINDING 4 from Coverity's CONSTANT_EXPRESSION_RESULT report. These three all are in RTP code that attempts to print the number of sequence number cycles in an RTCP RR report. The code was masking out the upper 16 bits and then shifting the number right by 16 bits. This led to an all zero result in all cases. The fix is to do the shift without the bit masking. (issue ASTERISK-19649) 2012-05-03 14:54 +0000 [r365143-365159] Alexandr Anikin * addons/ooh323c/src/h323/H323-MESSAGES.h, addons/ooh323c/src/h323/H323-MESSAGESEnc.c, addons/ooh323c/src/ooh323.c: Fix warning of Coverity Static analysis, change H225ProtocolIdentifier from value to pointer per functions that use this. (close issue ASTERISK-19670) Reported by: Matt Jordan Patches: ASTERISK-19670.patch (License #5415) * addons/ooh323c/src/ooq931.c: Fix coverity static analysis warning, allocate full ie structure instead of without data buffer (close issue ASTERISK-19674) Reported by: Matt Jordan Patches: ASTERISK-19674.patch (License #5415) 2012-06-04 Asterisk Development Team * Asterisk 1.8.13.0 Released. 2012-05-30 Asterisk Development Team * Asterisk 1.8.13.0-rc2 Released. * Resolve crash in subscribing for MWI notifications. ASTOBJ_UNREF sets the variable to NULL after unreffing it, so the variable should definitely not be used after that. To solve this in the two cases that affect subscribing for MWI notifications, we instead save the ref locally, and unref them in the error conditions. (closes issue ASTERISK-19827) Reported by: B. R. Review: https://reviewboard.asterisk.org/r/1940/ * AST-2012-007 * AST-2012-008 2012-05-03 Asterisk Development Team * Asterisk 1.8.13.0-rc1 Released. 2012-05-02 17:02 +0000 [r365006-365068] Terry Wilson * main/cel.c, channels/chan_local.c: Don't leak a ref if out of memory and can't link the linkedid If the ao2_link fails, we are most likely out of memory and bad things are going to happen. Before those bad things happen, make sure to clean up the linkedid references. This patch also adds a comment explaining why linkedid can't be passed to both local channel allocations and combines two ao2_ref calls into 1. Review: https://reviewboard.asterisk.org/r/1895/ * main/cel.c, channels/chan_local.c: Fix a CEL LINKEDID_END race and local channel linkedids This patch has the ;2 channel inherit the linkedid of the ;1 channel and fixes the race condition by no longer scanning the channel list for "other" channels with the same linkedid. Instead, cel.c has an ao2 container of linkedid strings and uses the refcount of the string as a counter of how many channels with the linkedid exist. Not only does this eliminate the race condition, but it also allows us to look up the linkedid by the hashed key instead of traversing the entire channel list. Review: https://reviewboard.asterisk.org/r/1895/ 2012-05-01 23:11 +0000 [r364902] Richard Mudgett * main/astobj2.c: Fixed __ao2_ref() validating user_data twice. (closes issue ASTERISK-19755) Reported by: Gunther Kelleter Patches: ao2_ref.patch (license #6372) patch uploaded by Gunther Kelleter 2012-05-01 23:08 +0000 [r364899] Mark Michelson * funcs/func_volume.c: Fix Coverity-reported ARRAY_VS_SINGLETON error. As it turned out, this wasn't a huge deal. We were calling ast_app_parse_options() for a set of options of which none took arguments. The proper thing to do for this case is to pass NULL for the "args" parameter here. We were instead passing a seemingly-randomly chosen char * from the function. While this would never get written to, you can rest assured things would have gotten bad had new options (which took arguments) been added to func_volume. (closes issue ASTERISK-19656) 2012-05-01 21:37 +0000 [r364841] Jason Parker * main/manager.c: Prevent a potential crash when using manager hooks. Found by me while poking at DPMA-127. 2012-05-01 21:36 +0000 [r364840] Richard Mudgett * channels/chan_local.c: * Fix error path resouce leak in local_request(). * Restructure local_request() to reduce indentation. 2012-05-01 19:03 +0000 [r364786] Kinsey Moore * apps/app_confbridge.c: Play conf-placeintoconf message to the correct channel Correct the code in app_confbridge to play the conf-placeintoconf message to the marked user entering the bridge instead of to the conference while the marked user hears silence. (closes issue ASTERISK-19641) Reported-by: Mark A Walters 2012-05-01 18:16 +0000 [r364769] Jonathan Rose * main/app.c: Fix bad check in voicemail functions for ast_inboxcount2_func Check looks for ast_inboxcount_func instead of ast_inboxcount2_func on ast_inboxcount2_func calls. (closes issue ASTERISK-19718) Reported by: Corey Farrell Patches: ast_app_inboxcount2-null-refcheck.patch uploaded by Corey Farrell (license 5909) 2012-04-30 19:39 +0000 [r364706] Mark Michelson * channels/chan_sip.c: Revert improved identities sent in dialog-info NOTIFY requests in r360862 Revision 360862 was intended to improve identities sent in dialog-info NOTIFY requests. Some users reported that hint became broken once this was done. It's not clear exactly what part of the patch has caused this regression, but broken hints are bad. For now, this revision is being reverted so that the next releases of Asterisk do not have bad behavior in them. The original reported issue will have to be fixed differently in the next version of Asterisk. (issue ASTERISK-16735) 2012-04-30 16:37 +0000 [r364649] Alexandr Anikin * addons/ooh323cDriver.c: Fix use freed pointer in return value from call thread (issue ASTERISK-19663) Reported by: Matt Jordan Patches: ASTERISK-19663-ooh323.patch (License #5415) 2012-04-30 15:51 +0000 [r364635] Mark Murawki * main/logger.c: Sanatize result from bfd_find_nearest_line (BETTER_BACKTRACES) bfd_find_nearest_line can possibly set file to null resulting in a crash when strrchr(file) runs (closes issue ASTERISK-19815) Reported by Mark Murawski Tested by Mark Murawski 2012-04-29 19:31 +0000 [r364578] Matthew Jordan * formats/format_g723.c, formats/format_h263.c, formats/format_h264.c, formats/format_sln16.c, formats/format_wav_gsm.c, formats/format_siren14.c, formats/format_gsm.c, formats/format_g719.c, formats/format_siren7.c, formats/format_g729.c, formats/format_ilbc.c, formats/format_sln.c, formats/format_vox.c, formats/format_wav.c, formats/format_pcm.c: Fix error that caused truncate operations to fail Another very inappropriate placement of a ')' (again introduced in r362151) caused the various truncate operations to attempt to truncate the sound file at a position of '0'. (issue ASTERISK-19655) Reported by: Matt Jordan (issue ASTERISK-19810) Reported by: colbec 2012-04-27 21:48 +0000 [r364341] Mark Michelson * channels/chan_sip.c: Don't attempt to make use of the dynamic_exclude_static ACL if DNS lookup fails. (closes issue ASTERISK-18321) Reported by Dan Lukes Patches: ASTERISK-18321.patch by Mark Michelson (license #5049) 2012-04-27 21:45 +0000 [r364340] Terry Wilson * tests/test_config.c (added), main/config.c: Fix ast_parse_arg numeric type range checking and add tests ast_parse_arg wasn't checking for strto* parse errors or limiting the results by the actual range of the numeric types. This patch fixes that and adds unit tests as well. Review: https://reviewboard.asterisk.org/r/1879/ 2012-04-27 19:26 +0000 [r364277] Matthew Jordan * include/asterisk/time.h: Prevent overflow in calculation in ast_tvdiff_ms on 32-bit machines The method ast_tvdiff_ms attempts to calculate the difference, in milliseconds, between two timeval structs, and return the difference in a 64-bit integer. Unfortunately, it assumes that the long tv_sec/tv_usec members in the timeval struct are large enough to hold the calculated values before it returns. On 64-bit machines, this might be the case, as a long may be 64-bits. On 32-bit machines, however, a long may be less (32-bits), in which case, the calculation can overflow. This overflow caused significant problems in MixMonitor, which uses the method to determine if an audio factory, which has not presented audio to an audiohook, is merely late in providing said audio or will never provide audio. In an overflow situation, the audiohook would incorrectly determine that an audio factory that will never provide audio is merely late instead. This led to situations where a MixMonitor never recorded any audio. Note that this happened most frequently when that MixMonitor was started by the ConfBridge application itself, or when the MixMonitor was attached to a Local channel. (issue ASTERISK-19497) Reported by: Ben Klang Tested by: Ben Klang Patches: 32-bit-time-overflow-10-2012-04-26.diff (license #6283) by mjordan (closes issue ASTERISK-19727) Reported by: Mark Murawski Tested by: Michael L. Young Patches: 32-bit-time-overflow-2012-04-27.diff (license #6283) by mjordan) (closes issue ASTERISK-19471) Reported by: feyfre Tested by: feyfre (issue ASTERISK-19426) Reported by: Johan Wilfer Review: https://reviewboard.asterisk.org/r/1889/ 2012-04-27 18:57 +0000 [r364258] Kinsey Moore * channels/chan_sip.c: Allow SIP pvts involved in Replaces transfers to fall out of reference sooner Unref the SIP pvt stored in the refer structure as soon as it is no longer needed so that the pvt and associated file descriptors can be freed sooner. This change makes a reference decrement unnecessary in code that handles SIP BYE/Also transfers which should not touch the reference anyway. (related to issue ASTERISK-19579) 2012-04-27 14:42 +0000 [r364203] Matthew Jordan * channels/chan_sip.c: Allow for reloading SRTP crypto keys within the same SIP dialog As a continuation of the patch in r356604, which allowed for the reloading of SRTP keys in re-INVITE transfer scenarios, this patch addresses the more common case where a new key is requested within the context of a current SIP dialog. This can occur, for example, when certain phones request a SIP hold. Previously, once a dialog was associated with an SRTP object, any subsequent attempt to process crypto keys in any SDP offer - either the current one or a new offer in a new SIP request - were ignored. This patch changes this behavior to only ignore subsequent crypto keys within the current SDP offer, but allows future SDP offers to change the keys. (issue ASTERISK-19253) Reported by: Thomas Arimont Tested by: Thomas Arimont Review: https://reviewboard.asteriskorg/r/1885/ 2012-04-26 21:10 +0000 [r364060-364108] Richard Mudgett * apps/app_directed_pickup.c: Update Pickup application documentation. (With feeling this time.) * main/features.c: Fix DTMF atxfer running h exten after the wrong bridge ends. When party B does an attended transfer of party A to party C, the attending bridge between party B and C should not be running an h exten when the bridge ends. Running an h exten now sets a softhangup flag to ensure that an AGI will run in dead AGI mode. * Set the AST_FLAG_BRIDGE_HANGUP_DONT on the party B channel for the attending bridge between party B and C. (closes issue AST-870) (closes issue ASTERISK-19717) Reported by: Mario (closes issue ASTERISK-19633) Reported by: Andrey Solovyev Patches: jira_asterisk_19633_v1.8.patch (license #5621) patch uploaded by rmudgett Tested by: rmudgett, Andrey Solovyev, Mario 2012-04-26 19:24 +0000 [r364046] Terry Wilson * main/asterisk.c: Add more constness to the end_buf pointer in the netconsole issue ASTERISK-18308 Review: https://reviewboard.asterisk.org/r/1876/ 2012-04-26 13:24 +0000 [r363986] Kinsey Moore * channels/chan_sip.c: Fix reference leaks involving SIP Replaces transfers The reference held for SIP blind transfers using the Replaces header in an INVITE was never freed on success and also failed to be freed in some error conditions. This caused a file descriptor leak since the RTP structures in use at the time of the transfer were never freed. This reference leak and another relating to subscriptions in the same code path have now been corrected. (closes issue ASTERISK-19579) 2012-04-26 09:44 +0000 [r363934] Alec L Davis * channels/chan_sip.c: chan_sip: [general] maxforwards, not checked for a value greater than 255 The peer maxforwards is checked for both '< 1' and '> 255', but the default 'maxforwards' in the [general] section is only checked for '< 1' alecdavis (license 585) Reported by: alecdavis Tested by: alecdavis Review: https://reviewboard.asterisk.org/r/1888/ 2012-04-26 03:11 +0000 [r363375-363875] Richard Mudgett * apps/app_directed_pickup.c: Update Pickup application documentation. (Even better) * apps/app_directed_pickup.c: Update Pickup application documentation. * channels/sig_pri.c, channels/chan_dahdi.c: Make DAHDISendCallreroutingFacility wait 5 seconds for a reply before disconnecting the call. Some switches may not handle the call-deflection/call-rerouting message if the call is disconnected too soon after being sent. Asteisk was not waiting for any reply before disconnecting the call. * Added a 5 second delay before disconnecting the call to wait for a potential response if the peer does not disconnect first. (closes issue ASTERISK-19708) Reported by: mehdi Shirazi Patches: jira_asterisk_19708_v1.8.patch (license #5621) patch uploaded by rmudgett Tested by: rmudgett * channels/sig_pri.c, channels/sig_pri.h, channels/chan_dahdi.c: Clear ISDN channel resetting state if the peer continues to use it. Some ISDN switches occasionally fail to send a RESTART ACKNOWLEDGE in response to a RESTART request. * Made the second SETUP received after sending a RESTART request clear the channel resetting state as if the peer had sent the expected RESTART ACKNOWLEDGE before continuing to process the SETUP. The peer may not be sending the expected RESTART ACKNOWLEDGE. (issue ASTERISK-19608) (issue AST-844) (issue AST-815) Patches: jira_ast_815_v1.8.patch (license #5621) patch uploaded by rmudgett (modified) * main/features.c: Fix recalled party B feature flags for a failed DTMF atxfer. 1) B calls A with Dial option T 2) B DTMF atxfer to C 3) B hangs up 4) C does not answer 5) B is called back 6) B answers 7) B cannot initiate transfers anymore * Add dial features datastore to recalled party B channel that is a copy of the original party B channel's dial features datastore. * Extracted add_features_datastore() from add_features_datastores(). * Renamed struct ast_dial_features features_caller and features_callee members to my_features and peer_features respectively. These better names eliminate the need for some explanatory comments. * Simplified code accessing the struct ast_dial_features datastore. (closes issue ASTERISK-19383) Reported by: lgfsantos * main/features.c: Hangup affected channel in error paths of bridge_call_thread(). 2012-04-23 16:02 +0000 [r363209] Tilghman Lesher * main/astfd.c: On some platforms, O_RDONLY is not a flag to be checked, but merely the absence of O_RDWR and O_WRONLY. The POSIX specification does not mandate how these 3 flags must be specified, only that one of the three must be specified in every call. 2012-04-23 14:33 +0000 [r363141] Jonathan Rose * main/manager.c, /: AST-2012-004: Fix an error that allows AMI users to run shell commands sans authorization. As detailed in the advisory, AMI users without write authorization for SYSTEM class AMI actions were able to run system commands by going through other AMI commands which did not require that authorization. Specifically, GetVar and Status allowed users to do this by setting their variable/s options to the SHELL or EVAL functions. Also, within 1.8, 10, and trunk there was a similar flaw with the Originate action that allowed users with originate permission to run MixMonitor and supply a shell command in the Data argument. That flaw is fixed in those versions of this patch. (closes issue ASTERISK-17465) Reported By: David Woolley Patches: 162_ami_readfunc_security_r2.diff uploaded by jrose (license 6182) 18_ami_readfunc_security_r2.diff uploaded by jrose (license 6182) 10_ami_readfunc_security_r2.diff uploaded by jrose (license 6182) ........ Merged revisions 363117 from http://svn.asterisk.org/svn/asterisk/branches/1.6.2 2012-04-23 14:05 +0000 [r363102-363106] Matthew Jordan * channels/chan_sip.c: AST-2012-006: Fix crash in UPDATE handling when no channel owner exists If Asterisk receives a SIP UPDATE request after a call has been terminated and the channel has been destroyed but before the SIP dialog has been destroyed, a condition exists where a connected line update would be attempted on a non-existing channel. This would cause Asterisk to crash. The patch resolves this by first ensuring that the SIP dialog has an owning channel before attempting a connected line update. If an UPDATE request is received and no channel is associated with the dialog, a 481 response is sent. (closes issue ASTERISK-19770) Reported by: Thomas Arimont Tested by: Matt Jordan Patches: ASTERISK-19278-2012-04-16.diff uploaded by Matt Jordan (license 6283) * /, channels/chan_skinny.c: AST-2012-005: Fix remotely exploitable heap overflow in keypad button handling When handling a keypad button message event, the received digit is placed into a fixed length buffer that acts as a queue. When a new message event is received, the length of that buffer is not checked before placing the new digit on the end of the queue. The situation exists where sufficient keypad button message events would occur that would cause the buffer to be overrun. This patch explicitly checks that there is sufficient room in the buffer before appending a new digit. (closes issue ASTERISK-19592) Reported by: Russell Bryant ........ Merged revisions 363100 from http://svn.asterisk.org/svn/asterisk/branches/1.6.2 2012-04-21 01:44 +0000 [r362997] Richard Mudgett * apps/app_dial.c: Update app_dial M and U option GOTO return value documentation. 2012-04-20 16:09 +0000 [r362815-362868] Terry Wilson * main/asterisk.c: OpenBSD doesn't have rawmemchr, use strchr (closes issue ASTERISK-19758) Reported by: Barry Miller Tested by: Terry Wilson Patches: 362758-diff uploaded by Barry Miller (license 5434) * apps/app_speech_utils.c: Document Speech* apps hangup on failure and suggest TryExec The Speech API apps return -1 on failure, which will hang up the channel. This may not be desirable behavior for some, but it isn't something that can be changed without breaking people's dialplans or writing an option to all of the Speech apps that does what TryExec already does. This patch documents the hangup behavior of the apps, and suggests TryExec as the solution. (closes issue AST-813) 2012-04-19 21:58 +0000 [r362729] Walter Doekes * funcs/func_version.c: Fix documentation for ${VERSION(ASTERISK_VERSION_NUM)}. 2012-04-19 21:05 +0000 [r362680] Michael L. Young * tests/test_linkedlists.c, tests/test_poll.c: Add leading and trailing backslashes A couple of unit tests did not have have leading or trailing backslashes when setting their test category resulting in a warning message being displayed. Added the backslash where needed. 2012-04-19 20:59 +0000 [r362677] Richard Mudgett * configs/queues.conf.sample: Update membermacro and membergosub documentation in queues.conf.sample. 2012-04-19 15:53 +0000 [r362586] Sean Bright * apps/app_externalivr.c: Prevent a crash in ExternalIVR when the 'S' command is sent first. If the first command sent from an ExternalIVR client is an 'S' command, we were blindly removing the first element from the play list and deferencing it, even if it was NULL. This corrects that and also locks appropriately in one place. (issue ASTERISK-17889) Reported by: Chris Maciejewski 2012-04-19 14:26 +0000 [r362536] Terry Wilson * main/asterisk.c: Handle multiple commands per connection via netconsole Asterisk would accept multiple NULL-delimited CLI commands via the netconsole socket, but would occasionally miss a command due to the command not being completely read into the buffer. This patch ensures that any partial commands get moved to the front of the read buffer, appended to, and properly sent. (closes issue ASTERISK-18308) Review: https://reviewboard.asterisk.org/r/1876/ 2012-04-19 02:08 +0000 [r362485] Matthew Jordan * apps/app_sms.c, main/stdtime/localtime.c, utils/extconf.c, addons/chan_mobile.c, main/asterisk.c, channels/chan_unistim.c, main/frame.c, main/tdd.c, main/jitterbuf.c: Fix a variety of potential buffer overflows * chan_mobile: Fixed an overrun where the cind_state buffer (an integer array of size 16) would be overrun due to improper bounds checking. At worst, the buffer can be overrun by a total of 48 bytes (assuming 4-byte integers), which would still leave it within the allocated memory of struct hfp. This would corrupt other elements in that struct but not necessarily cause any further issues. * app_sms: The array imsg is of size 250, while the array (ud) that the data is copied into is of size 160. If the size of the inbound message is greater then 160, up to 90 bytes could be overrun in ud. This would corrupt the user data header (array udh) adjacent to ud. * chan_unistim: A number of invalid memmoves are corrected. These would move data (which may or may not be valid) into the ends of these buffers. * asterisk: ast_console_toggle_loglevel does not check that the console log level being set is less then or equal to the allowed log levels of 32. * frame: In ast_codec_pref_prepend, if any occurrence of the specified codec is not found, the value used to index into the array pref->order would be one greater then the maximum size of the array. * jitterbuf: If the element being placed into the jitter buffer lands in the last available slot in the jitter history buffer, the insertion sort attempts to move the last entry in the buffer into one slot past the maximum length of the buffer. Note that this occurred for both the min and max jitter history buffers. * tdd: If a read from fsk_serial returns a character that is greater then 32, an attempt to read past one of the statically defined arrays containing the values that character maps to would occur. * localtime: struct ast_time and tm are not the same size - ast_time is larger, although it contains the elements of tm within it in the same layout. Hence, when using memcpy to copy the contents of tm into ast_time, the size of tm should be used, as opposed to the size of ast_time. * extconf: this treats ast_timing's minmask array as if it had a length of 48, when it has defined the size of the array as 24. pbx.h defines minmask as having a size of 48. (issue ASTERISK-19668) Reported by: Matt Jordan 2012-04-18 16:20 +0000 [r362428] Richard Mudgett * channels/sig_pri.c, channels/sig_pri.h, channels/chan_dahdi.c, configs/chan_dahdi.conf.sample: Add ability to ignore layer 1 alarms for BRI PTMP lines. Several telcos bring the BRI PTMP layer 1 down when the line is idle. When layer 1 goes down, Asterisk cannot make outgoing calls. Incoming calls could fail as well because the alarm processing is handled by a different code path than the Q.931 messages. * Add the layer1_presence configuration option to ignore layer 1 alarms when the telco brings layer 1 down. This option can be configured by span while the similar DAHDI driver teignorered=1 option is system wide. This option unlike layer2_persistence does not require libpri v1.4.13 or newer. Related to JIRA AST-598 JIRA ABE-2845 2012-04-17 21:18 +0000 [r362355-362368] Matthew Jordan * main/frame.c: Handle case where an unknown format is used to get the preferred codec size In ast_codec_pref_getsize, if an unknown format is passed to the method, no preferred codec will be selected and a negative number will be used to index into the format list. The method now logs an unknown format as a warning, and returns an empty format list. (issue ASTERISK-19655) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/1863/ * res/res_musiconhold.c, res/res_rtp_asterisk.c, res/res_agi.c: Fix places in resources where a negative return value could impact execution This patch addresses a number of modules in resources that did not handle the negative return value from function calls adequately. This includes: * res_agi.c: if the result of the read function is a negative number, indicating some failure, the result would instead be treated as the number of bytes read. This patch now treats negative results in the same manner as an end of file condition, with the exception that it also logs the error code indicated by the return. * res_musiconhold.c: if spawn_mp3 fails to assign a file descriptor to srcfd, and instead assigns a negative value, that file descriptor could later be passed to functions that require a valid file descriptor. If spawn_mp3 fails, we now immediately retry instead of continuing in the logic. * res_rtp_asterisk.c: if no codec can be matched between two RTP instances in a peer to peer bridge, we immediately return instead of attempting to use the codec payload type as an index to determine the appropriate negotiated codec. (issue ASTERISK-19655) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/1863/ * main/asterisk.c, main/manager.c, main/translate.c: Fix places in main where a negative return value could impact execution This patch addresses a number of modules in main that did not handle the negative return value from function calls adequately, or were not sufficiently clear that the conditions leading to improper handling of the return values could not occur. This includes: * asterisk.c: A negative return value from the read function would be used directly as an index into a buffer. We now check for success of the read function prior to using its result as an index. * manager.c: Check for failures in mkstemp and lseek when handling the temporary file created for processing data returned from a CLI command in action_command. Also check that the result of an lseek is sanitized prior to using it as the size of a memory map to allocate. * translate.c: Note in the appropriate locations where powerof cannot return a negative value, due to proper checks placed on the inputs to that function. (issue ASTERISK-19655) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/1863/ * funcs/func_env.c: Fix places where a negative return from ftello could be used as invalid input In a variety of locations in both reading and writing a file, the result from the C library function ftello is used as input to other functions. For the parameters and functions in question, a negative value is invalid input. This patch checks the return value from the ftello function to determine if we were able to determine the current position in the file stream and, if not, fail gracefully. (issue ASTERISK-19655) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/1863/ 2012-04-17 20:43 +0000 [r362354] Jonathan Rose * main/utils.c, res/res_config_curl.c, res/res_config_pgsql.c, res/res_config_odbc.c: Make use of va_args more appropriate to form in various res_config modules plus utils. A number of va_copy operations weren't matched with a corresponding va_end in res_config_odbc. Also, there was a potential for va_end to be invoked twice on the same va_arg in utils, which would mean invoking va_end on an undefined variable... which is bad. va_end is removed from various functions in config_pgsql and config_curl since they aren't making their own copy. The invokers of those functions are responsible for calling va_end on them. (issue ASTERISK-19451) Reported by: Walter Doekes Review: https://reviewboard.asterisk.org/r/1848/ 2012-04-17 18:25 +0000 [r362304] Matthew Jordan * formats/format_sln16.c, formats/format_wav_gsm.c, formats/format_siren14.c, formats/format_gsm.c, formats/format_g719.c, formats/format_siren7.c, formats/format_sln.c, formats/format_vox.c, formats/format_wav.c, formats/format_pcm.c: Fix error that caused seek format operations to set max file size to '1' or '0' A very inappropriate placement of a ')' (introduced in r362151) caused the maximum size of a file to be set as the result of a comparison operation, as opposed to the result of the ftello operation. This resulted in seeking being restricted to the beginning of the file, or 1 byte into the file. Thanks to the Asterisk Test Suite for properly freaking out about this on at least one test. (issue ASTERISK-19655) Reported by: Matt Jordan 2012-04-17 02:37 +0000 [r362253] Michael L. Young * channels/chan_sip.c: Turn off warning message when bind address is set to any. When a bind address is set to an ANY address (udpbindport=::), a warning message is displayed stating that "Address remapping activated in sip.conf but we're using IPv6, which doesn't need it. Please remove 'localnet' and/or 'externaddr' settings." But if one is running dual stack, we shouldn't be told to turn those settings off. This patch checks if the bind address is an ANY address or not. The warning message will now only be displayed if the bind address is NOT an ANY address and IPv6 is being used. Also, updated the copyright year. (closes issue ASTERISK-19456) Reported by: Michael L. Young Tested by: Michael L. Young Patches: chan_sip_ipv6_message.diff uploaded by Michael L. Young (license 5026) 2012-04-16 21:56 +0000 [r362151-362204] Matthew Jordan * channels/chan_dahdi.c, channels/chan_agent.c: Fix negative return handling in channel drivers In chan_agent, while handling a channel indicate, the agent channel driver must obtain a lock on both the agent channel, as well as the channel the agent channel is using. To do so, it attempts to lock the other channel first, then unlock the agent channel which is locked prior to entry into the indicate handler. If this unlock fails with a negative return value, which can occur if the object passed to agent_indicate is an invalid ao2 object or is NULL, the return value is passed directly to strerror, which can only accept positive integer values. In chan_dahdi, the return value of dahdi_get_index is used to directly index into the sub-channel array. If dahd_get_index returns a negative value, it would use that value to index into the array, which could cause an invalid memory access. If dahdi_get_index returns a negative number, we now default to SUB_REAL. (issue ASTERISK-19655) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/1863/ * apps/app_voicemail.c: Fix handling of negative return code when storing voicemails in ODBC storage When storing a voicemail message using an ODBC connection to a database, the voicemail message is first stored on disk. The sound file associated with the message is read into memory before being transmitted to the database. When this occurs, a failure in the C library's lseek function would cause a negative value to be passed to the mmap as the size of the memory map to create. This would almost certainly cause the creation of the memory map to fail, resulting in the message being lost. (issue ASTERISK-19655) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/1863 * formats/format_g723.c, formats/format_h263.c, formats/format_h264.c, formats/format_sln16.c, formats/format_wav_gsm.c, formats/format_siren14.c, formats/format_gsm.c, formats/format_g719.c, formats/format_siren7.c, formats/format_g729.c, formats/format_ilbc.c, formats/format_sln.c, formats/format_vox.c, formats/format_wav.c, formats/format_pcm.c: Check for IO stream failures in various format's truncate/seek operations For the formats that support seek and/or truncate operations, many of the C library calls used to determine or set the current position indicator in the file stream were not being checked. In some situations, if an error occurred, a negative value would be returned from the library call. This could then be interpreted inappropriately as positional data. This patch checks the return values from these library calls before using them in subsequent operations. (issue ASTERISK-19655) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/1863/ 2012-04-13 15:54 +0000 [r362079-362082] Jonathan Rose * apps/app_forkcdr.c: Make ForkCDR e option not set end time of the newly forked CDR log Prior to this patch, ForkCDR's e option would immediately set the end time of the forked CDR to that of the CDR that is being terminated. This resulted in the new CDR's end time being roughly the same as it's beginning time (which is in turn roughly the same as the original's end time). (closes issue ASTERISK-19164) Reported by: Steve Davies Patches: cdr_fork_end.v10.patch uploaded by Steve Davies (license 5012) * apps/app_meetme.c: Send relative path named recordings to the meetme directory instead of sounds Prior to this patch, no effort was made to parse the path name to determine a proper destination for recordings of MeetMe's r option. This fixes that. Review: https://reviewboard.asterisk.org/r/1846/ 2012-04-12 16:18 +0000 [r361955-361972] Kinsey Moore * channels/chan_iax2.c: Make trunkfreq take effect when set Previously, setting trunkfreq had no effect on initial load or on reload and only ever used the default value. This causes trunkfreq to be used appropriately on initial load and reload. (closes issue ASTERISK-19521) Patch-by: Jaco Kroon * Makefile.rules, makeopts.in, codecs/lpc10/Makefile, Makefile, build_tools/cflags.xml, build_tools/menuselect-deps.in, codecs/gsm/src/k6opt.s, configure, codecs/gsm/Makefile, configure.ac: Simplify build system architecture optimization This change to the build system rips out any usage of PROC along with architecture-specific optimizations in favor of using -march=native where it is supported. This fixes broken builds on 64bit Intel systems and results in better optimized code on systems running GCC 4.2+. Review: https://reviewboard.asterisk.org/r/1852/ (closes issue ASTERISK-19462) 2012-04-10 21:43 +0000 [r361854] Richard Mudgett * channels/chan_dahdi.c: Prevent invalid access of free'd memory if DAHDI channel during an MWI event In the MWI processing loop, when a valid event occurs the temporary caller ID information is deallocated. If a new DAHDI channel is successfully created, the event is passed up to the analog_ss_thread without error and the loop exits. If, however, the DAHDI channel is not created, then the caller ID struct has been free'd, and the gains reset to their previous level. This will almost certainly cause an invalid access to the free'd memory, either in subsequent calls to callerid_free or calls to callerid_feed. * Rework the -r361705 patch to better manage the cs and mtd allocated resources. * Fixed use of mwimonitoractive flag to be correct if the mwi_thread() fails to start. 2012-04-10 19:57 +0000 [r361657-361803] Matthew Jordan * main/http.c: Fix crash caused by unloading or reloading of res_http_post When unlinking itself from the registered HTTP URIs, res_http_post could inadvertently free all URIs registered with the HTTP server. This patch modifies the unregister method to only free the URI that is actually being unregistered, as opposed to all of them. * funcs/func_curl.c: Allow func_curl to exit gracefully if list allocation fails during write If the global_curl_info data structure could not be allocated, the datastore associated with the operation would be free'd, but the function would not return. This would later dereference the datastore, almost certainly causing Asterisk to crash. With this patch, if the data structure is not allocated the method will return an error code, and not attempt any further operation. * channels/chan_dahdi.c: Prevent invalid access of free'd memory if DAHDI channel during an MWI event In the MWI processing loop, when a valid event occurs the temporary caller ID information is deallocated. If a new DAHDI channel is successfully created, the event is passed up to the analog_ss_thread without error and the loop exits. If, however, the DAHDI channel is not created, then the caller ID struct has been free'd, and the gains reset to their previous level. This will almost certainly cause an invalid access to the free'd memory, either in subsequent calls to callerid_free or calls to callerid_feed. This patch makes it so that we only free the caller ID structure if a DAHDI channel is successfully created, and we bump the gains back up if we fail to make a DAHDI channel. * funcs/func_global.c: Change SHARED function to use a safe traversal when modifying a variable When the SHARED function modifies a variable, it removes it from its list of variables and reinserts the new value at the head of the list of variables. Doing this inside a standard list traversal can be dangerous, as the standard list traversal does not account for the list being changed. While the code in question should not cause a use after free violation due to its breaking out of the loop after freeing the variable, it could lead to a maintenance issue if the loop was modified. This also fixes a violation reported by a static analysis tool, which also makes this code easier to maintain in the future. 2012-04-06 21:50 +0000 [r361558-361606] Matthew Jordan * res/res_calendar_ews.c: Fix memory leak in res_calendar_ews when event email address node is empty If the XML calendar data returned by a Microsoft Exchange Web Service specifies an XML Event E-Mail Address ("EmailAddress"), and no e-mail address is provided, a condition existed where an ast_calendar_attendee struct would be allocated but not appended to the list of attendees. Because of that, the memory associated with the attendee would never be freed. This patch frees the memory if no e-mail address is provided. * apps/app_meetme.c: Fix memory leak when using MeetMeAdmin 'e' option with user specified A memory leak/reference counting leak occurs if the MeetMeAdmin 'e' command (eject last user that joined) is used in conjunction with a specified user. Regardless of the command being executed, if a user is specified for the command, MeetMeAdmin will look up that user. Because the 'e' option kicks the last user that joined, as opposed to the one specified, the reference to the user specified by the command would be leaked when the user variable was assigned to the last user that joined. 2012-04-06 18:09 +0000 [r361471] Kinsey Moore * apps/app_ices.c, channels/chan_gtalk.c, channels/chan_iax2.c, res/res_config_sqlite.c, res/res_srtp.c, main/cdr.c, main/tcptls.c, funcs/func_channel.c, channels/console_gui.c, apps/app_sms.c, apps/app_chanspy.c, addons/chan_mobile.c, channels/chan_mgcp.c, main/xmldoc.c, apps/app_voicemail.c, res/res_clioriginate.c, channels/chan_unistim.c, main/pbx.c, channels/chan_sip.c, res/res_fax.c, funcs/func_strings.c, channels/console_video.c, formats/format_ogg_vorbis.c: Add missing newlines to CLI logging 2012-04-06 16:27 +0000 [r361403-361412] Paul Belanger * funcs/func_sysinfo.c: Fix typo in svn:keywords * bridges/bridge_multiplexed.c, bridges/bridge_builtin_features.c: Fix typo in svn:keywords 2012-04-06 15:47 +0000 [r361380] Russell Bryant * apps/rpt_flow.pdf (removed), configs/rpt.conf.sample (removed), configs/usbradio.conf.sample (removed): Remove a few more files related to chan_usbradio and app_rpt. 2012-04-06 14:01 +0000 [r361332] Matthew Jordan * channels/chan_sip.c: Fix a typo in the warning messages for an ignored media stream Added a '\n' to the warning messages when we ignore a media stream due to the port number being '0'. (closes issue ASTERISK-19646) Reported by: Badalian Vyacheslav 2012-04-06 13:30 +0000 [r361329] Kinsey Moore * apps/app_dial.c: Remove unnecessary error message in app_dial.c The error message for failure to stop autoservice after a gosub or macro call during a dial was removed for macro while Asterisk 1.4 was still being actively developed. The corresponding gosub error message was never removed. (closes issue ASTERISK-19551) 2012-04-05 16:36 +0000 [r361201-361269] Jonathan Rose * apps/app_meetme.c: Fix MusicOnHold in MeetMe so that it always uses the class if it's been defined There were a few instances of restarting music on hold in meetme that would cause Asterisk to revert to the default class of music on hold for no adequate reason. Review: https://reviewboard.asterisk.org/r/1844/ * addons/ooh323cDriver.c: Fix some stuff involving calls to memcpy and memset The important parts of the patch were already applied through other updates. (closes issue ASTERISK-19445) Reported by: Makoto Dei Patches: memset-memcpy-length.patch uploaded by Makoto Dei (license 5027) * funcs/func_devstate.c: Make 'help devstate change' display properly (get rid of excess comma) (closes issue ASTERISK-19444) Reported by: Makoto Dei Patches: devstate-change-usage-truncate.patch uploaded by Makoto Dei (license 5027) 2012-05-02 Asterisk Development Team * Asterisk 1.8.12.0 Released. 2012-05-01 Asterisk Development Team * Asterisk 1.8.12.0-rc3 Released. * channels/chan_sip.c: Revert revision 360862 Revision 360862 was intended to improve identities sent in dialog-info NOTIFY requests. Some users reported that hint became broken once this was done. It's not clear exactly what part of the patch has caused this regression, but broken hints are bad. For now, this revision is being reverted so that the next releases of Asterisk do not have bad behavior in them. The original reported issue will have to be fixed differently in the next version of Asterisk. (issue ASTERISK-16735) 2012-04-24 Asterisk Development Team * Asterisk 1.8.12.0-rc2 Released. * AST-2012-004 * AST-2012-005 * AST-2012-006 2012-04-04 Asterisk Development Team * Asterisk 1.8.12.0-rc1 Released. 2012-04-04 16:29 +0000 [r361090-361142] Jonathan Rose * main/app.c, pbx/pbx_realtime.c, apps/app_externalivr.c, channels/chan_iax2.c, apps/app_milliwatt.c, main/channel.c, pbx/pbx_loopback.c, addons/chan_ooh323.c, channels/chan_sip.c: Replace GNU old-style field designator extensions to fix clang warnings (issue ASTERISK-19540) Reported by: Makoto Dei Patches: clang-gnu-designator.patch uploaded by Makoto Dei (license 5027) * apps/app_meetme.c: Make the MeetMeAdmin N command (mute all nonadmins) not mute admins (Closes Issue ASTERISK-19335) Reported by: Johan Wilfer Review: https://reviewboard.asterisk.org/r/1843/ 2012-04-03 20:08 +0000 [r360987-361040] Kinsey Moore * apps/app_transfer.c: Fix the display of documentation for Transfer This came up while fixing documentation generation for many other cases where the argument separator was not being displayed properly. Now that it is displayed properly, it shows up in the wrong place for Transfer since the '/' is only required if Tech is present. (related to issue ASTERISK-18168) * channels/chan_sip.c: Stop sending out RTCP if RTP is inactive This change prevents Asterisk from sending RTCP receiver reports during a remote bridge since it is no longer receiving media and should not be reporting anything. (related to ASTERISK-19366) 2012-03-30 21:26 +0000 [r360933] Richard Mudgett * main/logger.c: Fix logger deadlock on Asterisk shutdown. The logger_thread() had an exit path that failed to release the logmsgs list lock. * Make logger_thread() exit path unlock the logmsgs list lock. * Made ast_log() not queue any messages to the logmsgs list if the close_logger_thread flag is set. (issue ASTERISK-19463) Reported by: Matt Jordan 2012-03-29 23:32 +0000 [r360862-360884] Mark Michelson * main/features.c: Fix potential race condition during call pickup. Prior to this patch, a connected line update was queued during call pickup and then an answer frame was queued. The original caller would presumably then have his connected line updated and then the call would be answered. In actuality, the answer frame was not how the call ended up being answered. Rather, an odd section in app_dial that checks if the called channel's state is up. The result is that the order of the connected line update and the answer were variable. In most cases, this wasn't actually a bad thing. However, if the 'I' option was passed to dial, the connected line update would be inhibited. The fix is to queued the connected line after the answer frame is queued. This way the race in app_dial is between two conditions resulting in an answer. This way the connected line update occurs after the answer every time. (closes issue ASTERISK-19183) Reported by: Thomas Arimont Tested by: Thomas Arimont Mark Michelson Patches: ASTERISK-19183.patch uploaded by Mark Michelson (license 5049) * channels/chan_sip.c: Improve accuracy of identifying information sent in dialog-info SIP NOTIFY requests. This change makes use of connected party information in addition to caller ID in order to populate local and remote XML elements in the dialog-info NOTIFYs. (closes issue ASTERISK-16735) Reported by: Maciej Krajewski Tested by: Maciej Krajewski Patches: local_remote_hint2.diff uploaded by Mark Michelson (license 5049) 2012-03-28 19:06 +0000 [r360712] Terry Wilson * cdr/cdr_adaptive_odbc.c, addons/cdr_mysql.c, channels/chan_gtalk.c, channels/chan_jingle.c, addons/chan_ooh323.c: Destroy configs when they are no longer used https://reviewboard.asterisk.org/r/1834/ 2012-03-27 16:59 +0000 [r360625] Mark Michelson * channels/chan_sip.c: Make a debug message regarding subscription changes more accurate. I was getting confused during some testing why Asterisk was saying that a subscription was being added when it was clearly being removed. This fixes that confusion. 2012-03-27 14:32 +0000 [r360488-360574] Jonathan Rose * configure: Updates config with bootstrap where I changed configure.ac in r360488 (issue ASTERISK-17842) Reported by: Bryon Clark * configure.ac: Fix BETTER_BACKTRACES library detection for Fedora/RedHat/CentOS (closes ASTERISK-17842) Reported by: Bryon Clark Patches: 20110512__issue19278.diff.txt uploaded by Tilghman Lesher (license 5003) configure_bfd_with_dl_and_iberty.patch uploaded by Bryon Clark (license 6157) 2012-03-26 18:37 +0000 [r360471-360474] Paul Belanger * CHANGES: Update CHANGES for r360471 * CHANGES: Fix Asterisk version typo * main/dnsmgr.c: Increase verbosity level for ast_verb messages While this does not fix the issue of the CLI being flooded by 'doing dnsmgr_lookup' messages, increasing the verbosity level above 5 should help minimize it. 2012-03-24 23:46 +0000 [r360356-360413] Russell Bryant * funcs/func_curl.c: func_curl: Fix leak of an ast_str in error handling code path. * apps/app_page.c: app_page: Fix a memory leak on every Page(). dial_list is a dynamically allocated array that is allocated at the beginning of Page() based on how many devices will be dialed. This was never being freed. * apps/app_jack.c: app_jack: fix datastore memory leak in error handling path. * res/ael/ael.tab.h, main/ast_expr2.c, main/ast_expr2.h, res/ael/ael.tab.c, main/ast_expr2f.c, res/ael/ael_lex.c: Rebuild parsers. This is needed to include the last fix to main/ast_expr2.y. The changes look much bigger as this regeneration of the code was done with newer versions of flex and bison. * main/ast_expr2.y: expression parser: Fix (theoretical) memory leak. Fix a memory leak that is very unlikely to actually happen. If a malloc() succeeded, but the following strdup() failed, the memory from the original malloc() would be leaked. 2012-03-24 00:35 +0000 [r360262-360309] Richard Mudgett * channels/sig_pri.c, main/channel.c: Make number not available presentation also set screening to network provided. Q.951 indicates that when the presentation indicator is "Number not available due to interworking" for a number then the screening indicator field should be "Network provided". * Made ast_party_id_presentation() return AST_PRES_NUMBER_NOT_AVAILABLE when the presentation is "Number not available due to interworking". This fix makes Asterisk consistent and it also makes it consistent with earlier branches as far as this presentation value is concerned. * Made pri_to_ast_presentation() and ast_to_pri_presentation() conversions handle the "Number not available due to interworking" case better in sig_pri.c. This change is possible because the minimum required libpri version (v1.4.11) has the necessary defines in libpri.h. * channels/chan_sip.c: Add missing initialization of update_redirecting in chan_sip.c 2012-03-21 14:51 +0000 [r360138] Jonathan Rose * contrib/scripts/install_prereq: Update install_prereq script to include missing GSM library for debian amd move SQLite3. (closes issue ASTERISK-19367) Reported by: Andrew Latham Patches: debian_install_prereq.diff uploaded by Andrew Latham (license 5985) 2012-03-21 13:19 +0000 [r360087] Tzafrir Cohen * configure, configure.ac: Also detect gmime 2.6 Also detect gmime version 2.6 (Michael Biebl) Signed-off-by: Tzafrir Cohen (License #5035) 2012-03-21 13:19 +0000 [r360086] Matthew Jordan * channels/chan_sip.c: Ensure Asterisk sends a BYE when pending on the final response to a re-INVITE When Asterisk detects a hangup and cannot send a BYE due to a pending INVITE, it sets the pendingbye flag and waits for the final response to that INVITE. When the response is received, it transmits the BYE. If, however, that INVITE request is a pending re-INVITE, it needs to first send a CANCEL request to terminate the pending re-INVITE. In that circumstance, Asterisk was, in some scenarios, clearing the pendingbye flag after processing the CANCEL request and not checking for a pending BYE when receiving the final 487 response to the INVITE. This patch ensures that if the pendingbye flag is set, it is honored regardless of the nature of the INVITE request currently in flight. (closes issue ASTERISK-19365) Reported by: Thomas Arimont Tested by: Thomas Arimont Patches: bugASTERISK-19365_2012_03_08.patch uploaded by mjordan (license 6283) Review: https://reviewboard.asterisk.org/r/1807 2012-03-20 20:32 +0000 [r360033] Kinsey Moore * apps/app_echo.c: Prevent Echo() from relaying control, null, and modem frames Echo()'s description states that it echoes audio, video, and DTMF except for # while it actually echoes any frame that it receives other than DTMF #. This was causing frame storms in the test suite in some circumstances where Echo() was attached to both ends of a pair of local channels and control frames were being periodically generated. Echo()'s behavior and description have been modifed so that it only echoes media and non-# DTMF frames. 2012-03-20 17:21 +0000 [r359979] Richard Mudgett * include/asterisk/manager.h, main/manager.c: Allow AMI action callback to be reentrant. Fix AMI module reload deadlock regression from ASTERISK-18479 when it tried to fix the race between calling an AMI action callback and unregistering that action. Refixes ASTERISK-13784 broken by ASTERISK-17785 change. Locking the ao2 object guaranteed that there were no active callbacks that mattered when ast_manager_unregister() was called. Unfortunately, this causes the deadlock situation. The patch stops locking the ao2 object to allow multiple threads to invoke the callback re-entrantly. There is no way to guarantee a module unload will not crash because of an active callback. The code attempts to minimize the chance with the registered flag and the maximum 5 second delay before ast_manager_unregister() returns. The trunk version of the patch changes the API to fix the race condition correctly to prevent the module code from unloading from memory while an action callback is active. * Don't hold the lock while calling the AMI action callback. (closes issue ASTERISK-19487) Reported by: Philippe Lindheimer Review: https://reviewboard.asterisk.org/r/1818/ Review: https://reviewboard.asterisk.org/r/1820/ 2012-03-16 20:13 +0000 [r359892] Jonathan Rose * apps/app_chanspy.c: Prevent chanspy from binding to zombie channels This patch addresses a bug with chanspy on local channels which roughly 50% of the time would create a situation where chanspy can latch onto a zombie channel, keeping the zombie alive forever and causing the channel doing the spying to never be able to hang up. (closes issue ASTERISK-19493) Reported by: lvl Review: https://reviewboard.asterisk.org/r/1819/ 2012-03-16 08:22 +0000 [r359809] Alec L Davis * channels/sip/include/sip.h: Missed lastinvite CSeq int to uint32_t change from Review: https://reviewboard.asterisk.org/r/1699/ 2012-03-15 19:01 +0000 [r359656-359706] Matthew Jordan * main/utils.c: Fix remotely exploitable stack overflow in HTTP manager There exists a remotely exploitable stack buffer overflow in HTTP digest authentication handling in Asterisk. The particular method in question is only utilized by HTTP AMI. When parsing the digest information, the length of the string is not checked when it is copied into temporary buffers allocated on the stack. This patch fixes this behavior by parsing out pre-defined key/value pairs and avoiding unnecessary copies to the stack. (closes issue ASTERISK-19542) Reported by: Russell Bryant Tested by: Matt Jordan * apps/app_milliwatt.c, /: Fix remotely exploitable stack overrun in Milliwatt Milliwatt is vulnerable to a remotely exploitable stack overrun when using the 'o' option. This occurs due to the milliwatt_generate function not accounting for AST_FRIENDLY_OFFSET when calculating the maximum number of samples it can put in the output buffer. This patch resolves this issue by taking into account AST_FRIENDLY_OFFSET when determining the maximum number of samples allowed. Note that at no point is remote code execution possible. The data that is written into the buffer is the pre-defined Milliwatt data, and not custom data. (closes issue ASTERISK-19541) Reported by: Russell Bryant Tested by: Matt Jordan Patches: milliwatt_stack_overrun.rev1.txt by Russell Bryant (license 6283) Note that this patch was written by Russell, even though Matt uploaded it ........ Merged revisions 359645 from http://svn.asterisk.org/svn/asterisk/branches/1.6.2 2012-03-15 18:17 +0000 [r359609] Richard Mudgett * apps/app_queue.c, apps/app_dial.c: Add missing connected line macro calls to initial dial for Dial and Queue apps. The connected line interception macros do not get executed when the outgoing channel is initially created and that channel's caller-id is implicitly imported into the incoming channel's connected line data. If you are using the interception macros, you would expect that they get run for every change to a channel's connected line information outside of normal dialplan execution. Review: https://reviewboard.asterisk.org/r/1817/ 2012-03-15 00:52 +0000 [r359452-359558] Russell Bryant * channels/chan_iax2.c: chan_iax2: Fix use of uninitialized sockaddr_in in try_transfer(). Initialize a struct sockaddr_in in try_transfer() so that the code isn't (potentially) trying to read from it while uninitialized. * channels/chan_gtalk.c: chan_gtalk: Fix use of uninitialized vars in config handling. Fix potential use of context, parkinglot, and prefs before they are initialized. * channels/chan_gtalk.c: chan_gtalk: Fix potential use of uninitialized variable. Avoid potential use of idroster in gtalk_alloc() before it has been initialized. * apps/app_chanisavail.c: app_chanisavail: Fix use of uninitialized variable. Ensure that status is set before it is used by resetting it during each loop iteration. This could have resulted in incorrect results from this app. * main/udptl.c: udptl: Ensure fec[] in udptl_build_packet() is initialized. Scan results indicated that this array could be used uninitialized. At a quick look, it looks correct. In any case, initializing it is a Good Thing (tm). * include/asterisk/app.h: app.h: Always initialize AST_DECLARE_APP_ARGS(). This patch ensures that the struct defined by AST_DECLARE_APP_ARGS() is always fully initialized. I'm not sure if this fixes any real bugs, but it silences a bunch of warnings from coverity, and is generally a good thing to do anyway. 2012-03-14 22:20 +0000 [r359451] Richard Mudgett * include/asterisk/channel.h, main/channel.c, channels/chan_agent.c: Fix deadlock potential with some ast_indicate/ast_indicate_data calls. Calling ast_indicate()/ast_indicate_data() with the channel lock held can result in a deadlock with a local channel because of how local channels need to avoid deadlock. 2012-03-14 17:32 +0000 [r359356] Matthew Jordan * main/jitterbuf.c: Fix incorrect jitter buffer overflow due to missed resynchronizations When a change in time occurs, such that the timestamps associated with frames being placed into an adaptive jitter buffer (implemented in jitterbuf.c) are significantly different then the previously inserted frames, the jitter buffer checks to see if it needs to be resynched to the new time frame. If three consecutive packets break the threshold, the jitter buffer resynchs itself to the new timestamps. This currently only occurs when history is calculated, and hence only on JB_TYPE_VOICE frames. JB_TYPE_CONTROL frames, on the other hand, are never passed to the history calculations. Because of this, if the jump in time is greater then the maximum allowed length of the jitter buffer, the JB_TYPE_CONTROL frames are dropped and no resynchronization occurs. Alterntively, if the overfill logic is not triggered, the JB_TYPE_CONTROL frame will be placed into the buffer, but with a time reference that is not applicable. Subsequent JB_TYPE_VOICE frames will quickly trigger the overflow logic until reads from the jitter buffer reach the errant JB_TYPE_CONTROL frame. This patch allows JB_TYPE_CONTROL frames to resynch the jitter buffer. As JB_TYPE_CONTROL frames are unlikely to occur in multiples, it perform the resynchronization on any JB_TYPE_CONTROL frame that breaks the resynch threshold. Note that this only impacts chan_iax2, as other consumers of the adaptive jitter buffer use the abstract jitter buffer API, which does not use JB_TYPE_CONTROL frames. Review: https://reviewboard.asterisk.org/r/1814/ (closes issue ASTERISK-18964) Reported by: Kris Shaw Tested by: Kris Shaw, Matt Jordan Patches: jitterbuffer-2012-2-26.diff uploaded by Kris Shaw (license 5722) 2012-03-14 17:17 +0000 [r359344] Richard Mudgett * apps/app_dial.c, main/channel.c: Fix Dial m and r options and forked calls generating warnings for voice frames. When connected line support was added, the wait_for_answer() variable single changed its meaning slightly. Unfortunately, the places where single was used did not necessarily get updated to reflect that change. Also audio/video frames were sent to all forked calls when the endpoints were never made compatible. * Don't pass audio/video media frames when the channels have not been made compatible. * Added handling of AST_CONTROL_SRCCHANGE to app_dial.c. * Fixed app_dial.c passing on AST_CONTROL_HOLD because that frame can also pass a requested MOH class. (closes issue ASTERISK-16901) Reported by: Chris Gentle (closes issue ASTERISK-17541) Reported by: clint Review: https://reviewboard.asterisk.org/r/1805/ 2012-03-14 10:52 +0000 [r359050-359259] Russell Bryant * include/asterisk/logger.h, main/logger.c: Fix bogus reads/writes of console log levels in asterisk.c This patch updates the NUMLOGLEVELS define in logger.h to 32, to match the fact that logger.c implements 32 log levels (because of the custom log level stuff). asterisk.c uses this define to size an array of levels per remote console. This array is modified in ast_console_toggle_loglevel(), which is called by the "logger set level" CLI command. While the documentation for the CLI command doesn't make it terribly obvious, you can use this CLI command to toggle a custom log level on a remote console, as well. However, doing so led to an invalid array index in asterisk.c. This array is read from any time a log message is written to a console. So, all custom log level messages resulted in a bogus read if a remote console was connected. * apps/app_externalivr.c, channels/chan_iax2.c: Fix invalid reads/writes due to incorrect sizeof(). These few places in the code used sizeof() on h_addr in struct hostent. This is sizeof(char *). The correct way to get the size of this address is to use h_length. This error would result in reads/writes of 8 bytes instead of 4 on 64-bit machines. * main/sched.c: Fix inaccurate sizeof() in sched.c. This code just needed sizeof(int), not sizeof(int *). * utils/astman.c: Fix incorrect sizeof() in astman. * res/res_crypto.c: Fix incorrect usage of sizeof() in res_crypto. In this case, just remove the memset(). There was a redundant memset that is done correctly just 2 lines later. * res/res_adsi.c: Fix broken usage of sizeof() in res_adsi. * main/features.c: Fix incorrect sizeof() usage in features.c. This didn't actually result in a bug anywhere, luckily. The only place where the result of these memcpys was used is in app_dial, and the only field that it read out of ast_call_feature was the first one, which is an int, so these memcpys always copied just enough to avoid a problem. * main/md5.c: Fix incorrect sizeof() on a pointer in MD5Final(). * main/pbx.c: Don't use a buffer after it goes out of scope. 's' is set to 'workspace'. Make sure 'workspace' doesn't go out of scope while the reference to it via 's' is still used. * res/ais/ais.h, res/res_ais.c, res/ais/clm.c, res/ais/evt.c: Dump cache of published events when a node joins the cluster. Also use a more reliable method for stopping the poll() thread. * makeopts.in, apps/app_rpt.c (removed), channels/chan_usbradio.c (removed), channels/xpmr (removed), build_tools/menuselect-deps.in, configure, include/asterisk/autoconfig.h.in, configure.ac: Remove chan_usbradio and app_rpt. These modules are being maintained outside of the tree and have been for a long time now, so it doesn't make sense to keep them here. Review: https://reviewboard.asterisk.org/r/1764/ 2012-03-13 20:31 +0000 [r358943-358978] Terry Wilson * main/features.c: Fix setting CDR variables in the hangup extension A previous CDR fix for setting CDR variables during a bridge via custom dialplan features broke setting CDR variables in the hangup extension. This patch fixes the issue. Review: https://reviewboard.asterisk.org/r/1794/ * main/devicestate.c, include/asterisk/devicestate.h, channels/chan_sip.c, tests/test_devicestate.c: Make hints for invalid SIP devices return Unavail, not idle This patch drastically simplifies the device state aggegation code. The old method was not only overly complex, but also made it impossible to return AST_DEVICE_INVALID from the aggregation code. The unit test update is as a result of fixing that bug. The SIP change stems from a bug introduced by removing a DNS lookup for hostname-based SIP channels. (closes issue ASTERISK-16702) Review: https://reviewboard.asterisk.org/r/1808/ 2012-03-13 16:54 +0000 [r358810-358859] Tilghman Lesher * UPGRADE.txt, CHANGES: Requested changes documenting the fixed AEL functionality. * utils/ael_main.c, apps/app_stack.c, utils/conf2ael.c, res/ael/pval.c, funcs/func_dialplan.c, tests/test_gosub.c: Enable macros in 1.8 to find the next highest "h" extension in a context, like in 1.4. This change restores functionality that was present in 1.4, when AEL macros were implemented with the Macro dialplan application. Macros are fraught with functionality issues, because they consume a large portion of the underlying application stack. This limits the ability of AEL users to call many layers of subroutines, an issue which Gosub does not have (originally tested to 100,000 levels deep). Therefore, starting in 1.6.0, AEL macros were implemented with Gosub. However, there were some implicit behaviors of Macro, which were not replicated at the same time as with the transition to Gosub, one of which is documented in the related issue. In particular, the "h" extension is designed to execute not in the Macro context, but in the topmost calling context. Due to legacy issues with a misapplied bugfix many years ago, when a macro exited in 1.4, it looks in all calling contexts, bubbling up from the deepest level until it finds an "h" extension. Since AEL hides the complexity of the underlying dialplan logic from the AEL programmer, it's reasonable to assume that this behavior should not change in the transition from Asterisk 1.4 LTS to Asterisk 1.8 LTS, lest we break working AEL configurations in the transition to Asterisk 1.8 LTS. This fix is the result, which implements a search for the "h" extension in all calling Gosub contexts. Fixes ASTERISK-19336 Patch: 20120308__ael_bugfix_for_trunk__2.diff (License #5003) by Tilghman Lesher (with slight modifications for 1.8) Tested by: Johan Wilfer Review: https://reviewboard.asterisk.org/r/1776/ 2012-03-08 16:39 +0000 [r358643] Jonathan Rose * channels/chan_sip.c: Make transfer not ignore port information with SIP. Attempting to transfer with SIP to an address like 1XXXXX@ip.ad.re.ss:5061 would fail because port would be cut from the host string and ignored. This simply keeps chan_sip from cutting off the port number during these kinds of transfers. (closes issue ASTERISK-19321) Reported by: Federico Alves Review: https://reviewboard.asterisk.org/r/1790/diff/#index_header 2012-03-07 18:25 +0000 [r358530] Richard Mudgett * channels/sig_ss7.c: Change directly setting _softhangup in sig_ss7.c to use ast_softhangup_nolock(). Update to: (issue ASTERISK-19372) 2012-03-07 16:11 +0000 [r358484] Sean Bright * codecs/codec_dahdi.c: Return g729 and g723.1 frames with the number of samples set properly. If the wctc4xxp returns more than a single packet, we need to update the number of samples in the returned frame accordingly. Acked-by: Shaun Ruffell 2012-03-07 15:16 +0000 [r358435-358438] Terry Wilson * configs/cdr_adaptive_odbc.conf.sample: Set snarkiness = 0 in cdr_adaptive_odbc.conf.sample * cdr/cdr_adaptive_odbc.c, cel/cel_odbc.c: Add detection for ODBC WCHAR fields Without detecting these types, cel_odbc blows up when the character set for the table is utf8. This also wraps cdr_adaptive_odbc's use of those types in the HAVE_ODBC_WCHAR #ifdef seen in other parts of the code. 2012-03-06 17:44 +0000 [r358260-358377] Richard Mudgett * channels/chan_dahdi.c: Fix ring cadance setup for outgoing calls on FXS ports. * Fix referencing the wrong variable in chan_dahdi.c:my_set_cadence(). Thanks to Sean Bright for compiling with -Wshadow and finding this bug. * channels/sig_ss7.c: Drop SS7 call if not connected yet when INCOMPLETE/BUSY/CONGESTION. SS7 is a trunk protocol and should clear a failed call as soon as possible. * Made SS7 hangup a call immediately if it has not connected yet for INCOMPLETE/BUSY/CONGESTION causes. Otherwise, play an appropriate inband tone. (closes issue ASTERISK-19372) Reported by: Igor Nikolaev * channels/sig_ss7.c, channels/chan_dahdi.c, channels/sig_ss7.h: Setup DSP when SS7 call is connected or early media is available. Outgoing SS7 calls fail to detect incoming DTMF so any bridged channel that requires out-of-band DTMF will not work. * Added sig_ss7_open_media() calls at appropriate places in sig_ss7.c. The new call converts conditionaled out unconverted code and shows that the code really did something useful. * Improved some chan_dahdi DTMF debug messages to help track DTMF handling. (closes issue ASTERISK-19312) Reported by: Igor Nikolaev 2012-03-05 18:49 +0000 [r358214] Jonathan Rose * main/manager.c: Eliminate double close of file descriptor in manager.c The process_output function in manager.c attempted to call fclose and close immediately afterwards. Since fclose implies close, this resulted in a potential double free on file descriptors. This patch changes that behavior and also adds error checking to fclose and close depending on which was deemed necessary. Also error messages. Thanks to Rosen Iliev for pointing out the location of the problem. (closes issue ASTERISK-18453) Reported By: Jaco Kroon Review: https://reviewboard.asterisk.org/r/1793/ 2012-03-05 16:41 +0000 [r358162] Joshua Colp * channels/chan_sip.c: Defer sending the connected line reinvite if a reinvite is already in progress. (issue ASTERISK-19355) Reported by: tomaso (closes issue AST-825) 2012-03-05 15:54 +0000 [r358115] Kinsey Moore * channels/chan_sip.c: Ensure Asterisk acknowledges ACKs to 4xx on Replaces errors Asterisk was not setting pendinginvite in the upper half of handle_request_invite such that the 4xx was retransmitted repeatedly even though an ack was received for every retransmission. (closes issue ASTERISK-19303) Patch-by: Jeremiah Gowdy 2012-03-02 23:27 +0000 [r357986-358029] Terry Wilson * channels/xpmr/xpmr.c, channels/chan_usbradio.c: Fix unused-but-set-variable warnings All of these were pretty obviously unused. Some were unused because the code that used them was #if 0'd. In those cases, I just commented out the unused-but-set variables. * channels/misdn/isdn_msg_parser.c, channels/misdn/isdn_lib.c, channels/chan_misdn.c: Correct some set-but-unused variable warnings in the mISDN library. (from kpfleming's commit to trunk r356292) * channels/xpmr/xpmr.c: Make chan_usbradio compile under dev mode x=++x and x=x=1? Really? 2012-03-02 21:02 +0000 [r357940] Kinsey Moore * main/event.c, include/asterisk/strings.h, main/ccss.c, tests/test_event.c: Fix case-sensitivity for device-specific event subscriptions and CCSS This change fixes case-sensitivity for device-specific subscriptions such that the technology identifier is case-insensitive while the remainder of the device string is still case-sensitive. This should also preserve the original case of the device string as passed in to the event system. CCSS is the only feature affected as it is the only consumer of device-specific event subscriptions. The second part of this patch addresses similar case-sensitivity issues within CCSS itself that prevented it from functioning correctly after the fix to the events system. This adds a unit test to verify that the event system works as expected. (closes issue ASTERISK-19422) Review: https://reviewboard.asterisk.org/r/1780/ 2012-03-02 18:34 +0000 [r357894] Richard Mudgett * channels/sig_pri.c, main/channel.c: Remove ISDN hold restriction for non-bridged calls. The check if an ISDN call is bridged before it could be placed on hold is not necessary and is overly restrictive. The check was originally done to prevent problems with call transfers in case a user tried to transfer a call connected to an application to another call connected to an application. The ISDN transfer code has not required this restriction for quite some time because ECT could transfer any two active calls to each other. * Remove ISDN hold restriction for calls connected to applications. * Made ast_waitfordigit_full() ignore AST_CONTROL_HOLD and AST_CONTROL_UNHOLD instead of generating a warning message. (closes issue ASTERISK-19388) Reported by: Birger Harzenetter Tested by: rmudgett 2012-03-02 15:58 +0000 [r357811] Sean Bright * channels/chan_iax2.c: The default value for mohinterpret is the empty string, so when resetting to default values don't explicitly set the value to "default." 2012-03-02 15:45 +0000 [r357809] Richard Mudgett * apps/app_chanspy.c: Fix channel reference leak in ChanSpy. * Fix next_channel() channel reference leak in ChanSpy. (closes issue ASTERISK-19461) Reported by: Irontec Patches: app_chanspy_iteartor_next_unref.patch (license #6213) patch uploaded by Irontec (issue ASTERISK-17515) 2012-03-02 00:59 +0000 [r357760-357761] Mark Michelson * main/channel.c: Fix race condition that can cause important control frames (such as a hangup) to be missed. This takes two actions. 1. Move the reading of the alertpipe in __ast_read() to immediately before the removal of frames from the readq. This means we won't do something silly like read from the alertpipe, then ignore the fact that there's a frame to get from the readq since channel's fdno is the AST_TIMING_FD. 2. When ast_settimeout() sets the rate to 0 and the timingfunc to NULL, if the channel's fdno is the AST_TIMING_FD, then set the fdno to -1. This is because if the rate is 0 and the timingfunc is NULL, it means that the channel's timing fd is being invalidated, so any pending reads should not occur. This may actually solve more issues than the referenced one below, but it's not known at this time for sure. (closes issue ASTERISK-19223) reported by Frank-Michael Wittig Review: https://reviewboard.asterisk.org/r/1779 * main/translate.c: Second attempt to get optimal translation paths when codec_resample is used. This borrows code heavily from changes made in translation code in Asterisk 10. This uses the quality and sample rate change of translation in order to pick paths rather than the computational cost of translations. Computational cost is used solely in determining if a single translation step from a specific translator is better than the same translation step provided by a different translator. (closes issue ASTERISK-16821) reported by Andrew Lindh Review: https://reviewboard.asterisk.org/r/1772 2012-03-01 14:18 +0000 [r357665] Kinsey Moore * main/acl.c: Prevent outbound SIP NOTIFY packets from displaying a port of 0 In the change from 1.6.2 to 1.8, ast_sockaddr was introduced which changed the behavior of ast_find_ourip such that port number was wiped out. This caused the port in internip (which is used for Contact and Call-ID on NOTIFYs) to be 0. This change causes ast_find_ourip to be port-preserving again. (closes issue ASTERISK-19430) 2012-02-29 19:41 +0000 [r357575] Walter Doekes * apps/app_dial.c: Fix copying of CDR(accountcode) to local channels. In r203638, during the addition of the Channel Event Logging, in mid-2009, this got broken in trunk and ended up in asterisk 1.8 and higher. This fixes so the CDR(accountcode) from the calling channel is available to dialed channels again as well as showing up properly in the CDR's. (closes issue ASTERISK-19384) Patches: accountcode.patch (License #6033) by jamicque Review: https://reviewboard.asterisk.org/r/1775/ Reviewed by: Richard Mudgett 2012-02-28 22:27 +0000 [r357455-357490] Jonathan Rose * UPGRADE.txt, configs/sip.conf.sample: Adding transport=udp to sample sip.conf - Also changes version of Asterisk 1.8 in UPGRADE (issue ASTERISK-19352) Reported by: jamicque Patches: asterisk-19352-transport-warning-message-v1.patch uploaded by Michael L. Young (license 5026) * cdr/cdr_adaptive_odbc.c: Add additional character type types to supported data types for cdr_adaptive_odbc The reporter was uable to use varchar utf8_unicode_ci with cdr_adaptive_odbc, so this patch adds those along with some other character types to the list of types cdr_adaptive_odbc will work using the varchar conditions. The problem wasn't really UTF8 characters as much as it was a failure to respond to the exact type that was declared/in use on that database. (closes issue ASTERISK-19334) Reported By: Igor Nikolaev Patches: cdr_adaptive_odbc.patch uploaded by Igor Nikolaev (license 6236) 2012-02-28 21:19 +0000 [r357416] Tilghman Lesher * apps/app_stack.c: Correctly reset the dialplan priority. When the stack frame is allocated, we save the address to which we should return, when the Gosub returns. However, if we just want to restore the priority, then we need to subtract 1 before setting it. Otherwise, when a Gosub goes to a nonexistent address, it will skip a priority in the dialplan. This is because when we return from an application, the PBX increments the priority for us. 2012-02-28 20:57 +0000 [r357407] Richard Mudgett * channels/sig_pri.c: Use more reasonable cause code when rejecting incoming call waiting calls. (closes issue ASTERISK-19397) Reported by: Birger Harzenetter Patches: nochannel-cause.patch (license #5870) patch uploaded by Birger Harzenetter 2012-02-28 20:26 +0000 [r357356-357386] Jonathan Rose * UPGRADE.txt: Moves UPGRADE.txt notes from r357356 to a new section specific to 1.8.12 (issue ASTERISK-19352) reported by: jamicque * UPGRADE.txt: Adds UPGRADE.txt notes to r357266 indicating changes to transport option (issue ASTERISK-19352) Reported by: jamicque 2012-02-28 19:32 +0000 [r357352] Richard Mudgett * apps/app_page.c: Remove dupliate 'i' option table entry in app_page.c. (closes issue ASTERISK-19310) Reported by: Makoto Dei Patches: app_page-duplicate-i-option.patch (license #5027) patch uploaded by Makoto Dei 2012-02-28 18:00 +0000 [r357266] Jonathan Rose * channels/chan_sip.c: Changes transport option in sip.conf so that using multiple instances doesn't stack. Prior to this patch, Using "transport=" multiple times would cause them to add to one another like allow/deny. This patch changes that behavior to simply use the transport option specified last. Also, if no transport option is applied now, the default will automatically be UDP. (closes ASTERISK-19352) Reported by: jamicque Patches: asterisk-19352-transport-warning-message-v1.patch uploaded by Michael L. Young (license 5026) issueA19352_no_transport_is_udp.patch uploaded by Walter Doekes (license 5674) Review: https://reviewboard.asterisk.org/r/1745/diff/#index_header 2012-02-28 14:45 +0000 [r357212] Kevin P. Fleming * Makefile.rules: Make COMPILE_DOUBLE magic actually work. The build system has some special magic to ensure that if Asterisk is built with --enable-dev-mode *and* DONT_OPTIMIZE, that all the source is still compiled with the optimizer enabled (even though the result will be thrown away), because the compiler is able to find a great deal of coding errors and bugs as a result of running its optimizers. Unfortunately at some point this mode got broken, and the 'throwaway' compile of the code was no longer done with the optimizer enabled. This patch corrects that problem. 2012-02-27 23:34 +0000 [r357093] Richard Mudgett * main/channel.c: Fix callerid of Originated calls. Thanks to Matt Riddell for tracking this down. (closes issue ASTERISK-19385) Reported by: ornix 2012-03-29 Asterisk Development Team * Asterisk 1.8.11.0 Released. 2012-03-26 Asterisk Development Team * Asterisk 1.8.11.0-rc3 Released. * AST-2012-003 * AST-2012-002 * /main/manager.c, /include/asterisk/manager.h: Fix AMI deadlock regression by allowing AMI action callback to be reentrant Fix AMI module reload deadlock from ASTERISK-18479 when it tried to fix the race between calling an AMI action callback and unregistering that action. Refixes ASTERISK-13784 broken by ASTERISK-17785 change. Locking the ao2 object guaranteed that there were no active callbacks that mattered when ast_manager_unregister() was called. Unfortunately, this causes the deadlock situation. The patch stops locking the ao2 object to allow multiple threads to invoke the callback re-entrantly. There is no way to guarantee a module unload will not crash because of an active callback. The code attempts to minimize the chance with the registered flag and the maximum 5 second delay before ast_manager_unregister() returns. The trunk version of the patch changes the API to fix the race condition correctly to prevent the module code from unloading from memory while an action callback is active. * Don't hold the lock while calling the AMI action callback. (closes issue ASTERISK-19487) Reported by: Philippe Lindheimer Review: https://reviewboard.asterisk.org/r/1818/ 2012-03-06 Asterisk Development Team * Asterisk 1.8.11.0-rc2 Released. * main/acl.c: Prevent outbound SIP NOTIFY packets from displaying a port of 0. In the change from 1.6.2 to 1.8, ast_sockaddr was introduced which changed the behavior of ast_find_ourip such that port number was wiped out. This caused the port in internip (which is used for Contact and Call-ID on NOTIFYs) to be 0. This change causes ast_find_ourip to be port-preserving again. 2012-01-30 21:57 +0000 [r353368-353320] Alec L Davis * channels/sip/include/sip.h, channels/sip/include/dialog.h, channels/chan_sip.c: RFC3261 Section 8.1.1.5. The sequence number value MUST be expressible as a 32-bit unsigned integer * fix: use %u instead of %d when dealing with CSeq numbers - to remove possibility of -ve numbers. * fix: change all uses of seqno and friends (ocseq icseq) from 'int' or 'unsigned int' to uint32_t. Summary of CSeq numbers. An initial CSeq number must be less than 2^31 A CSeq number can increase in value up to 2^32-1 An incrementing CSeq number must not wrap around to 0. Tested with Asterisk 1.8.8.2 with Grandstream phones. alecdavis (license 585) Tested by: alecdavis Review: https://reviewboard.asterisk.org/r/1699/ * channels/chan_sip.c: prevent debug messsges displaying -ve Cseq numbers. Missed in R353320 2012-01-30 23:17 +0000 [r353371] Terry Wilson * include/asterisk/dnsmgr.h, main/dnsmgr.c, channels/chan_sip.c: Re-link peers by IP when dnsmgr changes the IP Asterisk's dnsmgr currently takes a pointer to an ast_sockaddr and updates it anytime an address resolves to something different. There are a couple of issues with this. First, the ast_sockaddr is usually the address of an ast_sockaddr inside a refcounted struct and we never bump the refcount of those structs when using dnsmgr. This makes it possible that a refresh could happen after the destructor for that object is called (despite ast_dnsmgr_release being called in that destructor). Second, the module using dnsmgr cannot be aware of an address changing without polling for it in the code. If an action needs to be taken on address update (like re-linking a SIP peer in the peers_by_ip table), then polling for this change negates many of the benefits of having dnsmgr in the first place. This patch adds a function to the dnsmgr API that calls an update callback instead of blindly updating the address itself. It also moves calls to ast_dnsmgr_release outside of the destructor functions and into cleanup functions that are called when we no longer need the objects and increments the refcount of the objects using dnsmgr since those objects are stored on the ast_dnsmgr_entry struct. A helper function for returning the proper default SIP port (non-tls vs tls) is also added and used. This patch also incorporates changes from a patch posted by Timo Teräs to ASTERISK-19106 for related dnsmgr issues. (closes issue ASTERISK-19106) Review: https://reviewboard.asterisk.org/r/1691/ 2012-01-31 16:51 +0000 [r353454] Richard Mudgett * include/asterisk/channel.h, main/manager.c: Fix memory leak in error paths for action_originate(). * Fix memory leak of vars in error paths for action_originate(). * Moved struct fast_originate_helper tech and data members to stringfields. * Simplified ActionID header handling for fast_originate(). * Added doxygen note to ast_request() and ast_call() and the associated channel callbacks that the data/addr parameters should be treated as const char *. Review: https://reviewboard.asterisk.org/r/1690/ 2012-01-31 23:41 +0000 [r353502] Terry Wilson * res/res_calendar.c: Allow res_calendar to be unloaded The calendaring tech modules depend on res_calendar and initially res_calendar just bumped the use count so that it couldn't be unloaded. res_calendar can potentially create many threads and I've seen issues where the Asterisk shutdown has failed where it looked like these threads could be the culprit. This patch adds unload support for res_calendar. Unloading res_calendar will also unload the dependant tech modules as well. (closes issue ASTERISK-16744) Review: https://reviewboard.asterisk.org/r/1657/ 2012-02-01 15:02 +0000 [r353550] Matthew Jordan * contrib/init.d/etc_default_asterisk: Added clarification for the VERBOSITY setting to etc_default_asterisk Clarified that using the VERBOSITY setting in etc_default_asterisk is the same as using the -v command line switch, which causes Asterisk to launch in console mode. (closes issue ASTERISK-17030) Reported by: Jonas 2012-02-01 15:50 +0000 [r353598] Sean Bright * include/asterisk/audiohook.h: Resolve an overlap in the ast_audiohook_flags values. AST_AUDIOHOOK_TRIGGER_WRITE and AST_AUDIOHOOK_WANTS_DTMF were overlapping which may have caused unintended side effects. This patch moves AST_AUDIOHOOK_TRIGGER_WRITE, and updates AST_AUDIOHOOK_TRIGGER_MODE to reflect the original intention. This will affect existing modules that use these flags, so be sure to recompile as necessary. (closes issue ASTERISK-19246) Reported by: feyfre 2012-02-01 21:05 +0000 [r353769-353720] Jonathan Rose * channels/chan_sip.c: Use ast_sockaddr_stringify_fmt wrappers for various functions in chan_sip There are a number of cleaner looking wrappers for ast_sockaddr_stringify_fmt available which are slightly more readable than using a direct call to ast_sockaddr_stringify_fmt. This patch switches a number of those calls in chan_sip to use those wrappers and is generally harmless. (Closes issue ASTERISK-16930) Reported by: Michael L. Young Patches: chan_sip-broken-registration-1.8.diff uploaded by Michael L. Young (license 5026) * channels/chan_sip.c: Fix sip show peers port output, align columns, and fix ami port output. A previous patch I committed from ASTERISK-16930 unexpectedly changed some output for the AMI action "sippeers" which this patch changes back. Also, this aligns the output for the cli command "sip show peers" and fixes another issue that patch introduced by using ast_sockaddr_stringify calls multiple times without immediately using the pointer. I also went ahead and did a little janitorial work to clean up whitespace in _sip_show_peers. (issue ASTERISK-16930) (closes issue ASTERISK-19281) Reported by: Patrick El Youssef Patches: ASTERISK-19281.diff uploaded by Walter Doekes (license 5674) 2012-02-02 16:58 +0000 [r353770] Mark Michelson * UPGRADE.txt, configs/manager.conf.sample, include/asterisk/manager.h, configs/http.conf.sample, main/manager.c, main/http.c: Fix TLS port binding behavior as well as reload behavior: * Removes references to tlsbindport from http.conf.sample and manager.conf.sample * Properly bind to port specified in tlsbindaddr, using the default port if specified. * On a reload, properly close socket if the service has been disabled. A note has been added to UPGRADE.txt to indicate how ports must be set for TLS. (closes issue ASTERISK-16959) reported by Olaf Holthausen (closes issue ASTERISK-19201) reported by Chris Mylonas (closes issue ASTERISK-19204) reported by Chris Mylonas Review: https://reviewboard.asterisk.org/r/1709 2012-02-02 18:31 +0000 [r353818] Jonathan Rose * funcs/func_curl.c: Backports some documentation for func_curl from 10 to 1.8 For some reason this function was completely undocumented in 1.8. I copied the 10 docs over to 1.8 and removed references to an enumerator that was added in the Asterisk 10 version of func_curl. That was the only change I noted. (closes issue ASTERISK-19186) Reported by: Olivier Krief 2012-02-02 20:01 +0000 [r353867] Richard Mudgett * channels/sig_pri.c, channels/sig_pri.h, channels/chan_dahdi.c: Restore the 'w' modifier support for ISDN spans. Dial(DAHDI/g0/1234w888) This feature also causes the sending complete ie to be sent for switch types that do not automatically send the ie. (EuroISDN/ETSI) The main difference between dialing Dial(DAHDI/g0/1234w888) and Dial(DAHDI/g0/1234,,D(888)) is the sending of the sending complete ie. (closes issue ASTERISK-19176) Reported by: rmudgett Tested by: rmudgett 2012-02-02 22:26 +0000 [r353915] Kinsey Moore * channels/chan_sip.c: Ensure entering T.38 passthrough does not cause an infinite loop After R340970 Asterisk was still polling the RTCP file descriptor after RTCP is shut down and removed. If the descriptor happened to have data ready when the removal occured then Asterisk would go into an infinite loop trying to read data that it can never actually access. This change disables the audio RTCP file descriptor for the duration of the T.38 transaction. (closes issue ASTERISK-18951) Reported-by: Kristijan Vrban 2012-02-03 21:24 +0000 [r353999] Jonathan Rose * channels/chan_agent.c: Fixes deadlocks occuring in chan_agent due to r335976 Bad locking order was added to chan_agent to prevent segfaults from having no locking in a patch by irroot. This patch addresses the bad locking order by releasing locks before getting the right locking order to stop deadlocks from occuring when doing multiple interactions with agents. (closes issue ASTERISK-19285) Reported by: Alex Villacis Lasso Review: https://reviewboard.asterisk.org/r/1708/ 2012-02-06 17:28 +0000 [r354216-354116] Richard Mudgett * main/features.c: Add missing headers to AMI UnParkedCall event to uniquely identify the call. The AMI UnParkedCall event was missing the Parkinglot and Uniqueid headers that the AMI ParkedCall event contains. (closes issue ASTERISK-19240) Reported by: Michael Yara * pbx/pbx_config.c: Improved documentation of CLI "dialplan add extension" command. * Documented dialplan add extension ,,)> format. * Allow acceptance of command without the app-data value. There are many applications that do no need any parameters so it is silly to require that field for all commands. * Fixed a couple ast_malloc/ast_free mismatches with ast_add_extension2() calls. (closes issue ASTERISK-19222) Reported by: Andrey Solovyev Tested by: rmudgett 2012-02-07 15:04 +0000 [r354263] Jonathan Rose * cdr/cdr_pgsql.c: Fix column duplication bug in module reload for cdr_pgsql. Prior to this patch, attempts to reload cdr_pgsql.so would cause the column list to keep its current data and then add a second copy during the reload. This would cause attempts to log the CDR to the database to fail. This patch also cleans up some unnecessary null checks for ast_free and deals with a few potential locking problems. (closes issue ASTERISK-19216) Reported by: Jacek Konieczny Review: https://reviewboard.asterisk.org/r/1711/ 2012-02-07 20:53 +0000 [r354348] Terry Wilson * contrib/realtime/postgresql/realtime.sql, channels/chan_sip.c: Fix multiple SIP realtime issues 1. Set lastms to 0 when clearing instead of "" 2. Don't set ipaddr or port to the string "(null)" when they are empty 3. Add missing required fields, set default for lastms to 0, and modify the length of the ipaddr field to 45 in the Postgresql realtime.sql file. (closes issue ASTERISK-19172) Review: https://reviewboard.asterisk.org/r/1703/ 2012-02-09 02:23 +0000 [r354492] Russell Bryant * main/channel.c: Remove some unnecessary locking from ast_hangup(). This patch removes some unnecessary locking of the channels container in ast_hangup(). The reason this came up is that this lock can very quickly block the entire system. If any of the channel cleanup code decides to block, it causes a problem for the whole system. For example, when audiohooks get destroyed, if that blocks for a while waiting on the mixmonitor thread to exit because it's busy blocking on some I/O, it causes a problem for many other threads in the meantime. Review: https://reviewboard.asterisk.org/r/1712/ 2012-02-09 02:52 +0000 [r354495] Richard Mudgett * apps/app_parkandannounce.c: Fix crash in ParkAndAnnounce. Well, thats embarrasing. I forgot to initialize the caller_id storage. (closes issue ASTERISK-19311) Reported by: tootai Tested by: rmudgett 2012-02-09 16:30 +0000 [r354542] Matthew Jordan * channels/chan_sip.c: Fix SIP INFO DTMF handling for non-numeric codes In ASTERISK-18924, SIP INFO DTMF handlingw as changed to account for both lowercase alphatbetic DTMF events, as well as uppercase alphabetic DTMF events. When this occurred, the comparison of the character buffer containing the event code was changed such that the buffer was first compared again '0' and '9' to determine if it was numeric. Unfortunately, since the first character in the buffer will typically be '1' in the case of non-numeric event codes (10-16), this caused those codes to be converted to a DTMF event of '1'. This patch fixes that, and cleans up handling of both application/dtmf-relay and application/dtmf content types. Review: https://reviewboard.asterisk.org/r/1722/ (closes issue ASTERISK-19290) Reported by: Ira Emus Tested by: mjordan 2012-02-09 16:56 +0000 [r354545] Mark Michelson * CHANGES, res/res_fax.c: Adding reload support to res_fax.so (closes issue ASTERISK-16712) reported by Frank DiGennaro Review: https://reviewboard.asterisk.org/r/1713 2012-02-09 17:07 +0000 [r354547] Matthew Jordan * channels/chan_sip.c: Clean-up of minor formatting issues in r354542/3/4 rmudgett pointed out some formatting issues in the check-in for ASTERISK-19290. This cleans those up. Review: https://reviewboards.asterisk.org/r/1722/ 2012-02-09 17:32 +0000 [r354640-354594] Mark Michelson * main/translate.c: Fix translation path choices. This change makes it so computational cost is not taken into account when deciding if a multistep path is better than a single-step path. This means that the only time a multistep path will be chosen is if no single-step path exists. This ensures a better quality translation even if it turns out to be slightly slower. (closes issue ASTERISK-16821) reported by Andrew Lindh Review: https://reviewboard.asterisk.org/r/1715 * main/translate.c: Remove outdated comment. 2012-02-09 19:52 +0000 [r354702-354655] Kinsey Moore * main/config.c: Make the config parser remove escaping backslashes The config parser in Asterisk does not currently remove a backslash that is used to escape a semicolon which would otherwise be interpreted as the start of a comment. The change here causes that backslash to be removed, but does not create a real escape system in the config parser. The biggest complication with a real escape system would be breaking existing configs everywhere (parsing \\ as \ and breaking on escaped non-semicolon characters) even though it would be the "right" way to do things. (closes issue ASTERISK-17121) Review: https://reviewboard.asterisk.org/r/1724/ * channels/chan_sip.c: Fix parsing of SIP headers where compact and non-compact headers are mixed Change parsing of SIP headers so that compactness of the header no longer influences which header will be chosen. Previously, a non-compact header would be chosen instead of a preceeding compact-form header. (closes issue ASTERISK-17192) Review: https://reviewboard.asterisk.org/r/1728/ 2012-02-09 22:01 +0000 [r354749] Terry Wilson * funcs/func_cdr.c: Note that CDRs are immutable once a bridge is torn down CDRs cannot be modified after a bridge is torn down, (e.g. after Dial() returns) even though the CDR() function may be called. Since modifying the CDR code to change this behavior could very easily break all kinds of things, this patch just documents this limitation. (closes issues ASTERISK-16923) Review: https://reviewboard.asterisk.org/r/1720/ 2012-02-10 18:03 +0000 [r354835] Richard Mudgett * main/manager.c: Fix AMI Redirect ExtraChannel not redirecting to the same exten and context. The astman_get_header() never returns NULL so the check by the code for NULL would never fail. (closes issue ASTERISK-16974) Reported by: Nuno Borges Patches: 0018325.patch (license #6116) patch uploaded by Nuno Borges (modified) 2012-02-10 21:45 +0000 [r354889] Jason Parker * apps/app_voicemail.c: Fix a voicemail memory leak with heard/deleted messages. open_mailbox() was changed quite a long time ago to allocate this memory. close_mailbox() should have been changed to be responsible for freeing it. 2012-02-13 17:22 +0000 [r354953] Richard Mudgett * res/res_config_pgsql.c, configs/extconfig.conf.sample: Fix reconnecting to pgsql database after connection loss. There can only be one database connection in res_config_pgsql just like res_config_sqlite. If the connection is lost, the connection may not get reestablished to the same database if the res_pgsql.conf and extconfig.conf files are inconsistent. * Made only use the configured database from res_pgsql.conf. * Fixed potential buffer overwrite of last[] in config_pgsql(). (closes issue ASTERISK-16982) Reported by: german aracil boned Review: https://reviewboard.asterisk.org/r/1731/ 2012-02-13 19:49 +0000 [r355009] Joshua Colp * pbx/pbx_config.c: Only allow one 'dialplan reload' to execute at a time as otherwise they would share the same common local context list. (closes issue AST-758) 2012-02-13 22:02 +0000 [r355056] Richard Mudgett * pbx/pbx_spool.c: Fix occasional incorrectly delayed call-file execution. Since the dir timestamp is available at one second resolution, we cannot know if it was updated within the same second after we scanned it. Therefore, we will force another scan if the dir was just modified. * Changed to force another scan if the directory was just modified. (closes issue ASTERISK-19081) Reported by: Knut Bakke Review: https://reviewboard.asterisk.org/r/1688/ 2012-02-14 09:41 +0000 [r355136] Alexandr Anikin * addons/chan_ooh323.c: call manager_event only if there is not null channel structure (Closes issue ASTERISK-19298) Reported by: robinfood Patches: issue19298.patch uploaded by may213 (License #5415) 2012-02-14 13:33 +0000 [r355182] Sean Bright * channels/chan_iax2.c: Clear the high order bit from the destination call number before sending. send_apathetic_reply takes the incoming frame's source call number as the destination call number for the outgoing frame. If the incoming frame was a full frame, then the high order bit of the source call number is set and will be interpreted as a retransmit when sent back out as the destination call number. 2012-02-14 15:50 +0000 [r355228] Jason Parker * configs/cdr_sqlite3_custom.conf.sample: Don't enable sqlite3 CDRs by default in sample configs. 2012-02-14 16:26 +0000 [r355268] Mark Michelson * channels/chan_sip.c: Properly invert the return of a strncmp call. This was causing identification that should have been made private to be public. (closes issue AST-814) reported by Patrick Anderson Patches: chan_sip.c.diff uploaded by Patrick Anderson (license 5430) 2012-02-14 18:12 +0000 [r355365-355319] Richard Mudgett * cel/cel_sqlite3_custom.c: Fix lock typo that should be unlock in cel_sqlite_custom reload. (closes issue ASTERISK-19356) Reported by: Alex Villacis Lasso Patches: asterisk-1.8.9.2-cel_sqlite3_custom-fix-reload-locking-typo.patch (license #5617) patch uploaded by Alex Villacis Lasso Review: https://reviewboard.asterisk.org/r/1740/ * configure, include/asterisk/autoconfig.h.in, configure.ac, formats/format_ogg_vorbis.c: Fix voicemail problems when using ogg/vorbis. Ogg/vorbis was fairly useless as a voicemail file format because it did not implement the seek and tell format callbacks among other problems. Since we were already using the libvorbis and libvorbisenc libraries we can use libvorbisfile as it is also part of the vorbis library package. * Made use the libvorbisfile to handle the ogg/vorbis file stream. The format_ogg_vorbis.c is now mostly a wrapper around libvorbisfile. (closes issue ASTERISK-16926) Reported by: sque Patches: ogg_vorbis_use_libvorbisfile.patch (license #6108) patch uploaded by sque 2012-02-15 17:24 +0000 [r355529-355448] Sean Bright * channels/chan_iax2.c: Use TRUNK_CALL_START as originally intended. Back in r646, TRUNK_CALL_START was added and defined as 0x4000. That same value was also hard-coded in one part of the IAX2 code instead of using the #define. TRUNK_CALL_START has changed over the years (for dealing with LOW_MEMORY), but the hard-coded usage was never updated to match. This patch fixes that. * channels/chan_iax2.c: Only use maxtrunkcall and maxnontrunkcall in chan_iax2 if IAX_OLD_FIND is specified. These variables are only accessed from the IAX_OLD_FIND path, so there is no reason to keep them updated otherwise. * channels/chan_iax2.c: When IAX2 debugging is enabled, make sure to log 'apathetic' messages too. 2012-02-16 18:26 +0000 [r355608-355574] Richard Mudgett * res/res_monitor.c: Fix AMI Monitor action without File header converting channel name into filename. * Fix potential Solaris crash if Monitor application has a urlbase and no fname_base option. * configure, include/asterisk/autoconfig.h.in, autoconf/ast_c_declare_check.m4 (added), configure.ac, formats/format_ogg_vorbis.c: Fix compile problem when old version of libvorbisfile v1.1.2 is used. The principle difference between libvorbisfile v1.1.2 and newer (at least v1.2.0) is the addition of the predefined callbacks OV_CALLBACKS_xxx in vorbis/vorbisfile.h used for ov_open_callbacks(). * Updated the configure script to detect if libvorbisfile.h declares OV_CALLBACKS_NOCLOSE. * Copied the declaration of OV_CALLBACKS_NOCLOSE from v1.2.0 to allow v1.1.2 to compile. (closes issue ASTERISK-19370) Reported by: Jonn Taylor 2012-02-16 20:01 +0000 [r355622] Sean Bright * main/audiohook.c: Revert a change to audio_audiohook_write_list that had no affect. When I made this change initially, I was under the false impression that the audiohooks structure remained on the channel after all of the hooks had been detached. This is not the case, ast ast_read takes care of removing the audiohooks structure if the lists are empty. 2012-02-16 23:53 +0000 [r355711-355700] Paul Belanger * addons/ooh323cDriver.c, addons/ooh323c/src/ooSocket.c, addons/ooh323c/src/ooq931.c, addons/ooh323c/src/ooTimer.c, addons/ooh323c/src/ooCapability.c, addons/ooh323c/src/perutil.c: Fix -Werror=unused-but-set-variable compiler error (gcc 4.6.2) * addons/ooh323c/src/ooSocket.c: Missed a variable * addons/ooh323cDriver.c, addons/ooh323c/src/ooSocket.c, addons/ooh323c/src/ooq931.c, addons/ooh323c/src/ooTimer.c, addons/ooh323c/src/ooCapability.c, addons/ooh323c/src/perutil.c: Revert 355700 and 355701 2012-02-17 16:04 +0000 [r355732-355721] Mark Michelson * main/translate.c: Revert change to translate.c as it has caused an infinite loop to occur in circumstances. * channels/chan_sip.c: Fix regressions with regards to route-set creation on early dialogs. This fixes two main issues: 1. Asterisk would send a CANCEL to the route created by the provisional response instead of using the same destination it did in the initial INVITE. 2. If a new route set arrives in a 200 OK than was in the 1XX response (perfectly possible if our outbound INVITE gets forked), then the route set in the 200 OK needs to overwrite the route set in the 1XX response. (closes issue ASTERISK-19358) Reported by: Karsten Wemheuer Tested by: Karsten Wemheuer patches: ASTERISK-19358.patch uploaded by Mark Michelson (license 5049) ASTERISK-19358.patch uploaded by Stefan Schmidt (license 6034) Review: https://reviewboard.asterisk.org/r/1749 2012-02-17 19:32 +0000 [r355793-355746] Sean Bright * channels/chan_iax2.c: Pass the correct value to ast_timer_set_rate() for IAX2 trunking. IAX2 uses the trunkfreq variable to determine how often to send trunk packets, but this value is in milliseconds while ast_timer_set_rate() expects the rate argument to be ticks per second. So we divide 1000 by trunkfreq and pass that in instead. With a default of 20ms, this change makes IAX2 send trunk packets every 20ms instead of every 50ms. Tracked down by myself and Bob Wienholt. * channels/chan_iax2.c, configs/iax.conf.sample: Don't allow trunkfreq to be greater than 1000ms. 2012-02-18 03:59 +0000 [r355839] Paul Belanger * res/res_pktccops.c: Fix -Werror=unused-but-set-variable compiler error (gcc 4.6.2) 2012-02-18 07:55 +0000 [r355850] Alec L Davis * channels/sig_pri.c, channels/sig_ss7.c, channels/sig_pri.h, channels/chan_dahdi.c, channels/sig_analog.c, channels/sig_ss7.h, channels/sig_analog.h: push 'outgoing' flag from sig_XXX up to chan_dahdi 'p->outgoing' in chan_dahdi and sig_analog wern't kept in sync, particulary FXS ast_hangup didn't clear the 'outgoing' flag. sig_pri and sig_ss7 were keeping 'outgoing' flag insync. Now provides a callback for all the low level sig_XXX modules. (issue ASTERISK-19316) alecdavis (license 585) Reported by: Jeremy Pepper Tested by: alecdavis Review: https://reviewboard.asterisk.org/r/1747/ 2012-02-19 17:49 +0000 [r356107-355901] Sean Bright * channels/chan_iax2.c: Set the length of the ast_sockaddr, so that we can set it's port later. Without this, the call to ast_sockaddr_set_port a few lines later is a noop. * channels/chan_iax2.c: Add some boilerplate documentation for IAXVAR and IAXPEER. * channels/chan_dahdi.c: Change some debug messages from LOG_DEBUG to ast_debug. * channels/chan_dahdi.c: This was a LOG_NOTICE, so roll it back. * channels/chan_iax2.c: Remove spurious warning when 'qualifyfreqnotok' is set successfully. (closes issue ASTERISK-17176) Reported by: John Covert Tested by: Sean Bright Patches: chan_iax2.c.qualifyfreqnotok.patch uploaded by John Covert (license 5512) * channels/chan_iax2.c: Make 'iax2 show callnumber usage' output make sense when an IP is passed in. 2012-02-22 14:50 +0000 [r356214] Matthew Jordan * channels/chan_sip.c: Fix potential buffer overrun and memory leak when executing "sip show peers" The "sip show peers" command uses a fix sized array to sort the current peers in the peers ao2_container. The size of the array is based on the current number of peers in the container. However, once the size of the array is determined, the number of peers in the container can change, as the peers container is not locked. This could cause a buffer overrun when populating the array, if peers were added to the container after the array was created. Additionally, a memory leak of the allocated array would occur if a user caused the _show_peers method to return CLI_SHOWUSAGE. We now create a snapshot of the current peers using an ao2_callback with the OBJ_MULTIPLE flag. This size of the array is set to the number of peers that the iterator will iterate over; hence, if peers are added or removed from the peers container it will not affect the execution of the "sip show peers" command. Review: https://reviewboard.asterisk.org/r/1738/ (closes issue ASTERISK-19231) (closes issue ASTERISK-19361) Reported by: Thomas Arimont, Jamuel Starkey Tested by: Thomas Arimont, Jamuel Starkey Patches: sip_show_peers_2012_02_16.diff uploaded by mjordan (license 6283) 2012-02-22 20:20 +0000 [r356290] Paul Belanger * apps/app_rpt.c: Fix -Werror=unused-but-set-variable compiler error (gcc 4.6.2) Review: https://reviewboard.asterisk.org/r/1763/ 2012-02-22 21:08 +0000 [r356291] Terry Wilson * include/asterisk/calendar.h, main/loader.c, res/res_calendar.c: Track module use count for res_calendar If the res_calendar module was followed immediately by one of the calendar tech modules and "core stop gracefully" was run, Asterisk would crash. This patch adds use count tracking for res_calendar so that it is unloaded after the tech modules when shutting down gracefully. It is now not possible to unload all the of the calendar modules via "module unload res_calednar.so", but it is still possible to unload them all via "module unload -h res_calendar.so". Review: https://reviewboard.asterisk.org/r/1752/ 2012-02-22 21:29 +0000 [r356430-356335] Paul Belanger * apps/app_rpt.c: Add back strsep() function for previous commit * apps/app_rpt.c: Missed one strsep() function * addons/chan_ooh323.c: Fix -Werror=unused-but-set-variable compiler error (gcc 4.6.2) 2012-02-23 15:37 +0000 [r356475] Mark Michelson * channels/chan_sip.c: Fix ACK routing for non-2xx responses. When we send an ACK for a 2xx response to an INVITE, we are supposed to use the learned route set. However, when we receive a non-2xx final response to an INVITE, we are supposed to send the ACK to the same place we initially sent the INVITE. We had been doing this up until the changes went in that would build a route set from provisional responses. That introduced a regression where we would use the learned route set under all circumstances. With this change, we now will set the destination of our ACK based on the invitestate. If it is INV_COMPLETED then that means that we have received a non-2xx final response (INV_TERMINATED indicates a 2xx response was received). If it is INV_CANCELLED, then that means the call is being canceled, which means that we should be ACKing a 487 response. The other change introduced here is setting the invitestate to INV_CONFIRMED when we send an ACK *after* the reqprep instead of before. This way, we can tell in reqprep more easily what the invitestate is prior to sending the ACK. (closes issue ASTERISK-19389) reported by Karsten Wemheuer patches: ASTERISK-19389v2.patch uploaded by Mark Michelson (license #5049) (with some slight modifications prior to commit) 2012-02-23 19:49 +0000 [r356521] Richard Mudgett * channels/chan_sip.c, main/features.c: Fix blind transfer parking issues if the dialed extension is not recognized as a parking extension. Custom parking extensions may not be coded such that the first and only extension priority is the Park application. These custom parking extensions will not be recognized as parking extensions. When a call is blind transferred to an extension that is not recognized as a parking extension, the normal blind transfer code causes the transferred channel to start executing dialplan. Calls that get parked in this manner do not know the original channel name that parked the call so the original parker could never be called back if the parked call is not retrieved before the timeout time. The parking space is also announced to the call being parked as a side effect of not knowing the original parking channel. * Fix handling of BLINDTRANSFER channel variable for call parking. * Fixed SIP blind transfer using the wrong dialplan context variable to check for the parking extension. (closes issue ASTERISK-19322) Reported by: aragon Tested by: rmudgett, jparker Review: https://reviewboard.asterisk.org/r/1730/ JIRA AST-766 2012-02-24 15:07 +0000 [r356650-356604] Matthew Jordan * include/asterisk/rtp_engine.h, res/res_srtp.c, channels/sip/sdp_crypto.c, include/asterisk/res_srtp.h, main/rtp_engine.c: Allow SRTP policies to be reloaded Currently, when using res_srtp, once the SRTP policy has been added to the current session the policy is locked into place. Any attempt to replace an existing policy, which would be needed if the remote endpoint negotiated a new cryptographic key, is instead rejected in res_srtp. This happens in particular in transfer scenarios, where the endpoint that Asterisk is communicating with changes but uses the same RTP session. This patch modifies res_srtp to allow remote and local policies to be reloaded in the underlying SRTP library. From the perspective of users of the SRTP API, the only change is that the adding of remote and local policies are now added in a single method call, whereas they previously were added separately. This was changed to account for the differences in handling remote and local policies in libsrtp. Review: https://reviewboard.asterisk.org/r/1741/ (closes issue ASTERISK-19253) Reported by: Thomas Arimont Tested by: Thomas Arimont Patches: srtp_renew_keys_2012_02_22.diff uploaded by Matt Jordan (license 6283) (with some small modifications for this check-in) * res/res_srtp.c: Remove srtp_shutdown from res_srtp The patch for ASTERISK-19253 included properly shutting down the libsrtp library in the case of module unload. Unfortunately, not all distributions have the srtp_shutdown call. As such, this patch removes calling srtp_shutdown. 2012-02-24 18:23 +0000 [r356677] Richard Mudgett * include/asterisk/tcptls.h, channels/sip/include/sip.h, channels/chan_sip.c: Fix worker thread resource leak in SIP TCP/TLS. The SIP TCP/TLS worker threads were created joinable but noone could join them if they died on their own. * Fix the SIP TCP/TLS worker threads to not be created joinable. * _sip_tcp_helper_thread() only needs one parameter since the pvt parameter is only passed in as NULL and never used. (closes issue ASTERISK-19203) Reported by: Steve Davies Review: https://reviewboard.asterisk.org/r/1714/ 2012-02-25 17:21 +0000 [r356797] Matthew Jordan * apps/app_voicemail.c: Fix crash in app_voicemail during close_mailbox In r354890, a memory leak in app_voicemail was fixed by properly disposing of the allocated heard/deleted pointers. However, there are situations, particularly when no messages are found in a folder, where these pointers are not allocated and not NULL. In that case, an invalid free would be attempted, which could crash app_voicemail. As there are a number of code paths where this could occur, this patch uses the number of messages detected in the folder before it attempts to free the pointers. This resolves the crash detected in the Asterisk Test Suite's check_voicemail_nominal test. 2012-02-27 15:14 +0000 [r356917] Jonathan Rose * res/res_odbc.c: Remove possible segfaults from res_odbc by adding locks around usage of odbc handle (closes issue ASTERISK-19011) Reported by: Walter Doekes Patches: issueA19011_combine_read_and_write_locks_WORK_IN_PROGRESS.patch uploaded by Walter Doekes (license 5674) review: https://reviewboard.asterisk.org/r/1719/ review: https://reviewboard.asterisk.org/r/1622/ 2012-02-27 16:03 +0000 [r356963] Terry Wilson * main/features.c: Copy CDR variables when set during a bridge This patch makes sure amaflags, accountcode, and userfield get copied to the bridge CDR when set during a bridge (like via a custom feature). (closes issue ASTERISK-16990) Review: https://reviewboard.asterisk.org/r/1721/ 2012-02-27 23:34 +0000 [r357093] Richard Mudgett * main/channel.c: Fix callerid of Originated calls. Thanks to Matt Riddell for tracking this down. (closes issue ASTERISK-19385) Reported by: ornix 2012-03-06 Asterisk Development Team * Asterisk 1.8.11.0-rc2 Released. 2012-03-05 Asterisk Development Team * Asterisk 1.8.10.0 Released. 2012-03-01 Asterisk Development Team * Asterisk 1.8.10.0-rc4 Released. * main/acl.c: Prevent outbound SIP NOTIFY packets from displaying a port of 0. In the change from 1.6.2 to 1.8, ast_sockaddr was introduced which changed the behavior of ast_find_ourip such that port number was wiped out. This caused the port in internip (which is used for Contact and Call-ID on NOTIFYs) to be 0. This change causes ast_find_ourip to be port-preserving again. 2012-02-28 Asterisk Development Team * Asterisk 1.8.10.0-rc3 Released. * main/channel.c: Fix callerid of Originated calls. The callerid of originated calls (independent of mechanism) was not being passed to the outbound channel. This patch fixes that. Thanks to Matt Riddell for tracking this down. (closes issue ASTERISK-19385) Reported by: ornix * channels/chan_sip.c: Fix ACK routing for non-2xx responses. When we send an ACK for a 2xx response to an INVITE, we are supposed to use the learned route set. However, when we receive a non-2xx final response to an INVITE, we are supposed to send the ACK to the same place we initially sent the INVITE. We had been doing this up until the changes went in that would build a route set from provisional responses. That introduced a regression where we would use the learned route set under all circumstances. With this change, we now will set the destination of our ACK based on the invitestate. If it is INV_COMPLETED then that means that we have received a non-2xx final response (INV_TERMINATED indicates a 2xx response was received). If it is INV_CANCELLED, then that means the call is being canceled, which means that we should be ACKing a 487 response. The other change introduced here is setting the invitestate to INV_CONFIRMED when we send an ACK *after* the reqprep instead of before. This way, we can tell in reqprep more easily what the invitestate is prior to sending the ACK. (closes issue ASTERISK-19389) reported by Karsten Wemheuer patches: ASTERISK-19389v2.patch uploaded by Mark Michelson (license #5049) * channels/chan_sip.c: Fix regressions with regards to route-set creation on early dialogs. This fixes two main issues: 1. Asterisk would send a CANCEL to the route created by the provisional response instead of using the same destination it did in the initial INVITE. 2. If a new route set arrives in a 200 OK than was in the 1XX response (perfectly possible if our outbound INVITE gets forked), then the route set in the 200 OK needs to overwrite the route set in the 1XX response. (closes issue ASTERISK-19358) Reported by: Karsten Wemheuer Tested by: Karsten Wemheuer patches: ASTERISK-19358.patch uploaded by Mark Michelson (license 5049) ASTERISK-19358.patch uploaded by Stefan Schmidt (license 6034) Review: https://reviewboard.asterisk.org/r/1749 2012-02-10 Asterisk Development Team * Asterisk 1.8.10.0-rc2 Released. * channels/chan_sip.c: Fix SIP INFO DTMF handling for non-numeric codes. In ASTERISK-18924, SIP INFO DTMF handling was changed to account for both lowercase alphatbetic DTMF events, as well as uppercase alphabetic DTMF events. When this occurred, the comparison of the character buffer containing the event code was changed such that the buffer was first compared against '0' and '9' to determine if it was numeric. Unfortunately, since the first character in the buffer will typically be '1' in the case of non-numeric event codes (10-16), this caused those codes to be converted to a DTMF event of '1'. This patch fixes that, and cleans up handling of both application/dtmf-relay and application/dtmf content types. Review: https://reviewboard.asterisk.org/r/1722/ (closes issue ASTERISK-19290) Reported by: Ira Emus Tested by: mjordan * apps/app_parkandannounce.c: Fix crash in ParkAndAnnounce from uninitialized caller_id storage (closes issue ASTERISK-19311) Reported by: tootai Tested by: rmudgett * channels/chan_agent.c: Fixes deadlocks occuring in chan_agent due to r335976. Bad locking order was added to chan_agent to prevent segfaults from having no locking in a patch by irroot. This patch addresses the bad locking order by releasing locks before getting the right locking order to stop deadlocks from occuring when doing multiple interactions with agents. (closes issue ASTERISK-19285) Reported by: Alex Villacis Lasso Review: https://reviewboard.asterisk.org/r/1708/ * channels/chan_sip.c: Ensure entering T.38 passthrough does not cause an infinite loop. After R340970 Asterisk was still polling the RTCP file descriptor after RTCP is shut down and removed. If the descriptor happened to have data ready when the removal occured then Asterisk would go into an infinite loop trying to read data that it can never actually access. This change disables the audio RTCP file descriptor for the duration of the T.38 transaction. (closes issue ASTERISK-18951) Reported-by: Kristijan Vrban * channels/chan_sip.c,include/asterisk/dnsmgr.h,main/dnsmgr.c: Re-link peers by IP when dnsmgr changes the IP Asterisk's dnsmgr currently takes a pointer to an ast_sockaddr and updates it anytime an address resolves to something different. There are a couple of issues with this. First, the ast_sockaddr is usually the address of an ast_sockaddr inside a refcounted struct and we never bump the refcount of those structs when using dnsmgr. This makes it possible that a refresh could happen after the destructor for that object is called (despite ast_dnsmgr_release being called in that destructor). Second, the module using dnsmgr cannot be aware of an address changing without polling for it in the code. If an action needs to be taken on address update (like re-linking a SIP peer in the peers_by_ip table), then polling for this change negates many of the benefits of having dnsmgr in the first place. 2012-02-01 Asterisk Development Team * Asterisk 1.8.10.0-rc1 Released. * Test results: http://bamboo.asterisk.org/browse/TESTING-ASTERISK18100RCS-2 2012-01-30 12:42 +0000 [r353260] Kevin P. Fleming * channels/chan_sip.c: Clarify log WARNING message when port-zero SDP 'm' lines received. Previously, if an m-line in an SDP offer or answer had a port number of zero, that line was skipped, and resulted in an 'Unsupported SDP media type...' warning message. This was misleading, as the media type was not unsupported, but was ignored because the m-line indicated that the media stream had been rejected (in an answer) or was not going to be used (in an offer). 2012-01-29 02:42 +0000 [r353175] Russell Bryant * main/netsock.c: Find even more network interfaces. The previous change made the code look for emN and pciN in addition to what it did originally, which was search for ethN. However, it needed to be looking for pciN#N, so that's what it does now. This also moves the memset() to be before every ioctl(). 2012-01-28 14:49 +0000 [r353126] Kevin P. Fleming * main/rtp_engine.c: Add 'L16-256' MIME subtype alias for slin16. Asterisk has supported the 'L16' MIME subtype for 16kHz signed linear (PCM) audio for quite some time, but some endpoints refer to it as 'L16-256'. This commit adds this as an alias for the existing format. 2012-01-28 04:25 +0000 [r353077] Russell Bryant * main/netsock.c: Update ast_set_default_eid() to find more network interfaces. As of Fedora 15, ethN is not the name of ethernet interfaces. The names are emN or pciN. Update some code that searched for interfaces named ethN to look for the new names, as well. For more information about why this change was made, see this page: http://domsch.com/blog/?p=455 2012-01-27 19:12 +0000 [r352959] Jonathan Rose * res/res_monitor.c: Make failed PauseMonitor and UnpauseMonitor with no valid channel not close AMI session. I also went ahead and took a little time to make sure that the manager value AMI_SUCCESS was used instead of just return 0 being thrown around everywhere since that's how we handle this stuff these days. (closes issue ASTERISK-19249) Reporter: Jamuel Starkey Patches: res_monitor.c-ASTERISK-19249.diff uploaded by Jamuel Starkey (license 5766) 2012-01-27 18:22 +0000 [r352955] Richard Mudgett * res/snmp/agent.c, main/taskprocessor.c, apps/app_queue.c, channels/chan_iax2.c, apps/app_chanspy.c, main/indications.c, res/res_odbc.c, res/res_srtp.c, main/pbx.c, channels/chan_sip.c, include/asterisk/indications.h: Audit of ao2_iterator_init() usage for v1.8. Fixes numerous reference leaks and missing ao2_iterator_destroy() calls as a result. Review: https://reviewboard.asterisk.org/r/1697/ 2012-01-27 00:05 +0000 [r352862] Alec L Davis * channels/sip/include/sip.h, channels/chan_sip.c: rfc4235 - Section 4.1: Versions MUST be representable using a non-negative 32 bit integer. If a BLF subscription exists for long enough, using %d may print negative version numbers. Unlikely, as 2^32 at 1 update per second is ~137 years, or half that before the versions number started going negative. Tested with Asterisk 1.8.8.2 with Grandstream phones. alecdavis (license 585) Tested by: alecdavis Review: https://reviewboard.asterisk.org/r/1694/ 2012-01-26 20:14 +0000 [r352807] Alexandr Anikin * addons/chan_ooh323.c: Fix outbound DTMF for inband mode (tell asterisk core to generate DTMF sounds). (Closes issue ASTERISK-19233) Reported by: Matt Behrens Patches: chan_ooh323.c.patch uploaded by Matt Behrens (License #6346) 2012-01-26 19:06 +0000 [r352755] Jonathan Rose * channels/chan_sip.c: Copy amaflags to sip_pvt from peer during create_addr_from_peer For whatever reason, we don't have a single function for copying data like this from SIP peers to the SIP pvt. This patch adds the copying of amaflags to the sip_pvt, but it would probably be worth discussing this function along with the others that essentially just copy some amount of data from a peer to a private. (Closes issue ASTERISK-19029) Reported by: Matt Lehner 2012-01-26 06:27 +0000 [r352704] Alec L Davis * channels/chan_sip.c: Cleanup dialog-info+xml Notify dialog Make similar to other Notify messages. sample output: terminated Tested with Asterisk 1.8.8.2 with Grandstream phones. alecdavis (license 585) Tested by: alecdavis Review: https://reviewboard.asterisk.org/r/1693/ 2012-01-25 22:21 +0000 [r352643] Paul Belanger * apps/app_voicemail.c: Fix -Werror=unused-but-set-variable compiler error (gcc 4.6.2) 2012-01-25 21:16 +0000 [r352612] Kevin P. Fleming * main/test.c: Avoid unnecessary rebuilds of main/test.c. main/test.c includes "asterisk/version.h", when it should include "asterisk/ast_version.h" instead (and it should use the ast_get_version() and ast_get_version_num() functions). This commit modifies it to extract the Asterisk version information using the proper APIs, and as a result means that main/test.c no longer needs to be rebuilt when a Subversion checkout is updated or modified. 2012-01-25 17:28 +0000 [r352514-352551] Terry Wilson * channels/chan_sip.c: Remove some extraneous debugging from registry memleak fix * channels/chan_sip.c: Clean up some SIP registry-related memory leaks 1) Be sure and free at unload the epa_backend we allocate at startup 2) Do the same sip_registry cleanup at unload we do at reload Review: https://reviewboard.asterisk.org/r/1689/ 2012-01-25 16:39 +0000 [r352511] Jonathan Rose * configs/sip.conf.sample: Redocuments sip types peer, user, friend in sip.conf.sample There was faulty information in the sample config describing user as a synonym for friend so it has been changed to better elaborate on the differences between the three entity types. (closes issue ASTERISK-15537) Reported by: yarique 2012-01-24 22:17 +0000 [r352424] Mark Michelson * channels/chan_sip.c: Don't do a DNS lookup on an outbound REGISTER host if there is an outbound proxy configured. (closes issue ASTERISK-16550) reported by: Olle Johansson 2012-01-24 20:33 +0000 [r352367] Jonathan Rose * sounds/Makefile: Set core sounds version to 1.4.22. Now that we have the right license for the Russian 1.4.22 sounds as well as the sounds for the Australian English 1.4.22 sounds, we can finally set the sounds to use 1.4.22! (closes issue ASTERISK-18978) Reported by: Cameron Twomey Patches: confbridge.tar.001 uploaded by Cameron Twomey confbridge.tar.002 uploaded by Cameron Twomey 2012-01-24 16:59 +0000 [r352291] Richard Mudgett * funcs/func_odbc.c: Fix locking issues with channel datastores in func_odbc.c. * Fixed a potential memory leak when an existing datastore is manually destroyed by inline code instead of calling ast_datastore_free(). (closes issue ASTERISK-17948) Reported by: Archie Cobbs Review: https://reviewboard.asterisk.org/r/1687/ 2012-01-24 16:30 +0000 [r352287] Joshua Colp * channels/chan_sip.c: Move RTP timeout check to before bridged channel check so it is actually executed. (issue ASTERISK-19179) Reported by: TSAREGORODTSEV Yury (closes issue ASTERISK-14534) Reported by: kriborgen Patches: chan_sip.patch uploaded by kriborgen (license 6138) 2012-01-23 20:30 +0000 [r352199-352230] Mark Michelson * main/features.c: Fix grammar of comment. * main/features.c: Fix blind transfers from failing if an 'h' extension is present. This prevents the 'h' extension from being run on the transferee channel when it is transferred via a native transfer mechanism such as SIP REFER. (closes ASTERISK-19173) Reported by: Ross Beer Tested by: Kristjan Vrban Patches: ASTERISK-19173 by Mark Michelson (license 5049) Review: https://reviewboard.asterisk.org/r/1685 2012-01-23 19:12 +0000 [r352144] Matthew Jordan * res/res_fax_spandsp.c: Correctly apply FAXOPT settings (V17, V27, V29) before starting spandsp layer While the FAXOPT function could be used to set the modem capabilities, the input to that function was not being applied correctly to the spandsp layer. This patch applies the current model capabilities before starting the spandsp layer. (closes issue: ASTERISK-16409) Reported by: Kristijan Vrban Tested by: Matt Jordan, Matthew Nicholson Patches: spandsp-modems-1.8.diff uploaded by mnicholson (license 5081) spandsp-modems-10.diff uploaded by mnicholson (license 5081) 2012-01-23 17:33 +0000 [r352090] Richard Mudgett * channels/chan_sip.c: Fix sip_cfg.notifycid to be set with the defined enum values. The invalid value used when notifycid was enabled was benign. As far as the code was concerned -1 and 1 are equivalent. (closes issue ASTERISK-19232) Reported by: Eike Kuiper 2012-01-21 00:20 +0000 [r352029] Richard Mudgett * main/app.c, funcs/func_timeout.c: Fix ast_app_dtget() time unit inconsistency. Note: Noone calls ast_app_dtget() with the timeout parameter of zero so the bad code normally will never get executed. * Fix unnecessary floating point division in func_timeout.c timeout_write() when all other values are integers. (closes issue ASTERISK-16817) Reported by: Dmitry Andrianov 2012-01-21 00:08 +0000 [r352014-352016] Mark Michelson * channels/chan_sip.c: Remove XXX comment that is not necessary. * channels/chan_sip.c: Fix RTP reference leak. If a blind transfer were initiated using a REFER without a prior reINVITE to place the call on hold, AND if Asterisk were sending RTCP reports, then there was a reference for the RTP instance of the transferer. This fixes the issue by merging two similar but slightly conflicting sections of code into a single area. It also adds a stop_media_flows() call in the case that the transferer's UA never sends a BYE to us like it is supposed to. (issue ASTERISK-19192) Review: https://reviewboard.asterisk.org/r/1681/ 2012-01-20 19:34 +0000 [r351858-351860] Kinsey Moore * codecs/ilbc/iLBC_test.c: More corrections for the ilbc code These changes are in a file that is not compiled by default, and so were missed on earlier checks. * codecs/ilbc/LPCencode.c, codecs/ilbc/iLBC_decode.c: Allow ilbc code to build under dev mode GCC 4.6.3 found some set/unused variables in the ILBC code. 2012-01-20 16:01 +0000 [r351765] Jonathan Rose * channels/chan_sip.c: Accidentally left off a semicolon only in 1.8 somehow for previous patch. 2012-01-20 15:48 +0000 [r351760] Matthew Jordan * codecs/ilbc/helpfun.c: Remove unused variable 'tmp' from helpfun in ilbc codec gcc version 4.6.2 caught an unused variable in the ilbc codec library. This would prevent compilation with --enable-dev-mode; variable removed. 2012-01-20 15:42 +0000 [r351759] Jonathan Rose * channels/chan_sip.c: Adds setting of mwi_from field to check_auth_result check_peer_ok (closes ASTERISK-19057) Reported By: Yuri Patches: 348360chan_sip.diff uploaded by Yuri (license 5242) 2012-01-20 12:59 +0000 [r351707] Stefan Schmidt * contrib/asterisk-ng-doxygen: enable doxygen build for files in the channels/sip folder like reqresp_parser.c 2012-01-19 23:17 +0000 [r351618] Richard Mudgett * channels/chan_sip.c, channels/sip/reqresp_parser.c: Misc minor fixes in reqresp_parser.c and chan_sip.c. * Fix corner cases in get_calleridname() parsing and ensure that the output buffer is nul terminated. * Make get_calleridname() truncate the name it parses if the given buffer is too small rather than abandoning the parse and not returning anything for the name. Adjusted get_calleridname_test() unit test to handle the truncation change. * Fix get_in_brackets_test() unit test to check the results of get_in_brackets() correctly. * Fix parse_name_andor_addr() to not return the address of a local buffer. This function is currently not used. * Fix potential NULL pointer dereference in sip_sendtext(). * No need to memset(calleridname) in check_user_full() or tmp_name in get_name_and_number() because get_calleridname() ensures that it is nul terminated. * Reply with an accurate response if get_msg_text() fails in receive_message(). This is academic in v1.8 because get_msg_text() can never fail. 2012-01-19 22:36 +0000 [r351611] Kinsey Moore * res/res_rtp_asterisk.c: Correct output of RTCP jitter statistics in SR and RR reports Change the RTCP RR and SR generation code to convert Asterisk's internal jitter statistics to be represented in RTP timestamp units based on the rate of the codec in use instead of in seconds. (closes issue ASTERISK-14530) 2012-01-19 21:46 +0000 [r351559] Jonathan Rose * include/asterisk/netsock2.h, channels/chan_sip.c: Eliminates doubling the :port part of SIP Notify Message-Account headers. This patch prevents the domain string from getting mangled during the initreqprep step by moving the initialization to before its immediate use. It also documents this pitfall for the ast_sockaddr_stringify functions. (issue ASTERISK-19057) Reported by: Yuri Review: https://reviewboard.asterisk.org/r/1678/ 2012-01-19 21:11 +0000 [r351504] Joshua Colp * channels/chan_sip.c: Prevent crash when an SDP offer is received with an encrypted video stream when support for video is disabled and res_srtp is loaded. (closes issue ASTERISK-19202) Reported by: Catalin Sanda 2012-01-18 20:54 +0000 [r351450] Matthew Jordan * codecs/ilbc/StateConstructW.c (added), codecs/ilbc/packing.c (added), codecs/ilbc/StateConstructW.h (added), codecs/ilbc/packing.h (added), codecs/ilbc/getCBvec.c (added), codecs/ilbc/LPCdecode.c (added), codecs/ilbc/enhancer.c (added), codecs/ilbc/lsf.c (added), codecs/ilbc/iLBC_encode.c (added), codecs/ilbc/getCBvec.h (added), codecs/ilbc/LPCdecode.h (added), codecs/ilbc/enhancer.h (added), codecs/ilbc/FrameClassify.c (added), codecs/ilbc/iLBC_define.h (added), codecs/ilbc/lsf.h (added), codecs/ilbc/extract-cfile.awk (added), codecs/ilbc/iLBC_encode.h (added), codecs/ilbc/Makefile, codecs/ilbc/FrameClassify.h (added), codecs/ilbc/helpfun.c (added), codecs/ilbc/LICENSE_ADDENDUM (added), codecs/ilbc/doCPLC.c (added), codecs/ilbc/anaFilter.c (added), codecs/ilbc/helpfun.h (added), codecs/ilbc/createCB.c (added), codecs/ilbc/doCPLC.h (added), codecs/ilbc/anaFilter.h (added), codecs/ilbc/constants.c (added), codecs/ilbc/iLBC_decode.c (added), codecs/ilbc/createCB.h (added), codecs/ilbc/constants.h (added), codecs/ilbc/iLBC_decode.h (added), codecs/ilbc/iCBSearch.c (added), codecs/ilbc/filter.c (added), codecs/ilbc/hpInput.c (added), codecs/ilbc/gainquant.c (added), codecs/ilbc/iCBSearch.h (added), codecs/ilbc/hpOutput.c (added), codecs/ilbc/rfc3951.txt (added), codecs/ilbc/filter.h (added), codecs/ilbc/gainquant.h (added), codecs/ilbc/LPCencode.c (added), codecs/ilbc/hpInput.h (added), codecs/codec_ilbc.c, codecs/ilbc/PATENTS (added), codecs/ilbc/StateSearchW.c (added), codecs/ilbc/hpOutput.h (added), contrib/scripts/get_ilbc_source.sh, codecs/ilbc/LICENSE (added), codecs/ilbc/LPCencode.h (added), codecs/ilbc/StateSearchW.h (added), codecs/ilbc/iCBConstruct.c (added), codecs/ilbc/syntFilter.c (added), codecs/ilbc/iCBConstruct.h (added), codecs/ilbc/iLBC_test.c (added), codecs/ilbc/syntFilter.h (added): Include iLBC source code for distribution with Asterisk This patch includes the iLBC source code for distribution with Asterisk. Clarification regarding the iLBC source code was provided by Google, and the appropriate licenses have been included in the codecs/ilbc folder. Review: https://reviewboard.asterisk.org/r/1675 Review: https://reviewboard.asterisk.org/r/1649 (closes issue: ASTERISK-18943) Reporter: Leif Madsen Tested by: Matt Jordan 2012-01-18 14:57 +0000 [r351396] Stefan Schmidt * channels/chan_sip.c: The get_pai function in chan_sip.c didn't recognized a proper callerid name and number from a P-Asserted-Identity cause the header parsing logic was wrong. Changing the parsing functions to the sip header parsing APIs in reqresp_parser.h solves this problem. Review: https://reviewboard.asterisk.org/r/1673 Reviewed by: wdoekes2 and Mark Michelson 2012-01-17 17:22 +0000 [r351306] Mark Michelson * res/res_rtp_asterisk.c: Eliminate odd initialization of probation variable. 2012-01-17 16:55 +0000 [r351287] Jonathan Rose * CHANGES, res/res_rtp_asterisk.c, configs/rtp.conf.sample: Adds pjmedia probation concepts to res_rtp_asterisk's learning mode. In order to better handle RTP sources with strictrtp enabled (which is now default in 10) using the learning mode to figure out new sources when they change is handled by checking for a number of consecutive (by sequence number) packets received to an rtp struct based on a new configurable value called 'probation'. Also, during learning mode instead of liberally accepting all packets received, we now reject packets until a clear source has been determined. Review: https://reviewboard.asterisk.org/r/1663/ 2012-01-17 16:41 +0000 [r351284] Mark Michelson * channels/chan_sip.c: Use built-in parsing functions for Contact and Record-Route headers. If a Contact or a Record-Route header had a quoted string with an item in angle brackets, then we would mis-parse it. For instance, "Bob <1234>" <1234@example.org> would be misparsed as having the URI "1234" The fix for this is to use parsing functions from reqresp_parser.h since they are heavily tested and are awesome. (issue ASTERISK-18990) 2012-01-17 16:06 +0000 [r351233] Matthew Jordan * channels/chan_sip.c: Fix udptl issue with initial INVITE introduced by r351027 When an inital INVITE occurs that contains image media, a channel is not yet associated with the SIP dialog. The file descriptor associated with the udptl session needs to be set in initialize_udptl or in sip_new to account for this scenario. 2012-01-17 01:37 +0000 [r351182] Russell Bryant * channels/chan_sip.c: Add some missing locking in chan_sip. This patch adds some missing locking to the function send_provisional_keepalive_full(). This function is called from the scheduler, which is processed in the SIP monitor thread. The associated channel (or pbx) thread will also be using the same sip_pvt and ast_channel so locking must be used. The sip_pvt_lock_full() function is used to ensure proper locking order in a safe manner. In passing, document a suspected reference counting error in this function. The "fix" is left commented out because when the "fix" is present, crashes occur. My theory is that fixing it is exposing a reference counting error elsewhere, but I don't know where. (Or my analysis of this being a problem could have been completely wrong in the first place). Leave the comment in the code for so that someone may investigate it again in the future. Also add a bit of doxygen to transmit_provisional_response(). (closes issue ASTERISK-18979) Review: https://reviewboard.asterisk.org/r/1648 2012-01-16 21:12 +0000 [r351080-351130] Terry Wilson * channels/chan_sip.c: Ensure ACK retransmit & hangup on non-200 response to INVITE When handling a non-2xx final response on an INVITE transaction, we have to keep the transaction around after we send an ACK in case we receive a retransmission of the response so we can re-transmit the ACK, but also tear down the ast_channel as soon as we transmit the ACK. Before this patch, we could fail at both of these things. Calling sip_alreadygone/needdestroy prevented us from keeping the transaction up and retransmitting the ACK, and queueing CONGESTION was not sufficient to cause the channel to be torn down when originating calls via the CLI, for example. This patch queues a hangup with CONGESTION instead of just queueing CONGESTION for these responses and removes the sip_alreadygone and sip_needdestroy calls from handle_response_invite on non-2xx responses. It relies on the hangup calling sip_scheddestroy. For more information, see section 17.1.1.1 of RFC 3261. (closes issue ASTERISK-17717) Review: https://reviewboard.asterisk.org/r/1672/ * channels/chan_sip.c: Don't prematurely stop SIP session timer When Asterisk is the UAS (incoming call, endpoint is re-inviting) the SIP session timer expires after half the time the sip endpoint indicates in the Session-expires header in proc_session_timer(). The session timer was being stopped totally and being handled as an error case instead of running again until the second expiry. This patch treats the half-time expiry as a non-error case and continues the timer until the true expiry. (closes issue ASTERISK-18996) Reported by: Thomas Arimont Tested by: Thomas Arimont Patches: session_timer_fix.diff by Terry Wilson (License #5357) based on session_timer.patch by Thomas Arimont (License #5525) 2012-01-16 19:09 +0000 [r351027] Matthew Jordan * channels/chan_sip.c: Create and initialize udptl only when dialog negotiates for image media Prior to this patch, the udptl struct was allocated and initialized when a dialog was associated with a peer that supported T.38, when a new SIP channel was allocated, or what an INVITE request was received. This resulted in any dialog associated with a peer that supported T.38 having udptl support assigned to it, including the UDP ports needed for communication. This occurred even in non-INVITE dialogs that would never send image media. This patch creates and initializes the udptl structure only when the SDP for a dialog specifies that image media is supported, or when Asterisk indicates through the appropriate control frame that a dialog is to support T.38. (closes issue ASTERISK-16698) Reported by: under Tested by: Stefan Schmidt Patches: udptl_20120113.diff uploaded by mjordan (License #6283) (closes issue ASTERISK-16794) Reported by: Elazar Broad Tested by: Stefan Schmidt review: https://reviewboard.asterisk.org/r/1668/ 2012-01-16 17:04 +0000 [r350975] Joshua Colp * main/rtp_engine.c: Add missing code to set direct RTP setup information during dialing. 2012-01-15 20:07 +0000 [r350885-350888] Walter Doekes * main/asterisk.c: Allow only one thread at a time to do asterisk cleanup/shutdown. Add locking around the really-really-quit part of the core stop/restart part. Previously more than one thread could be called to do cleanup, causing atexit handlers to be run multiple times, in turn causing segfaults. (issue ASTERISK-18883) Reviewed by: Terry Wilson Review: https://reviewboard.asterisk.org/r/1662/ Review: https://reviewboard.asterisk.org/r/1658/ * utils/extconf.c: Fix -Werror=unused-but-set-variable compile error in utils/extconf.c. Note that I'm not confirming legitimacy of having that file in tree at all. Is anyone using aelparse/conf2ael? (issue ASTERISK-15350) 2012-01-14 16:40 +0000 [r350788-350837] Kevin P. Fleming * autoconf/libcurl.m4, configure, autoconf/ast_gcc_attribute.m4, configure.ac: Ensure that all AC_LANG_PROGRAM calls in the configure script are properly quoted. Recent versions of autoconf (2.68 on my system) won't properly process the configure script unless every call to AC_LANG_PROGRAM is m4-quoted. Many calls in the script were, but many were not. This patch corrects the unquoted calls. * addons/chan_mobile.c, channels/chan_h323.c: Correct some 'set-but-not-used' variable warnings. * contrib/scripts/install_prereq: Ensure that two prerequisites are properly installed on Debian-style distributions. * Don't specify a specific version of libgmime; newer versions are available now and acceptable. * Install libsrtp so that res_srtp can be built. 2012-01-13 22:05 +0000 [r350736] Kinsey Moore * configure, include/asterisk/autoconfig.h.in: Run bootstrap.sh for the for the ASTERISK-18929 fix configure and autoconfig.h.in were not regenerated when the fix was committed. 2012-01-13 21:51 +0000 [r350733] Richard Mudgett * configs/cel_pgsql.conf.sample, configs/cel_odbc.conf.sample: Correct eventtype names in cel_odbc and cel_pgsql sample files 2012-01-13 21:40 +0000 [r350730] Kinsey Moore * bootstrap.sh, main/asterisk.c, configure.ac: Make sure asterisk builds on OpenBSD OpenBSD defines SO_PEERCRED, but it returns a 'struct sockpeercred', not 'struct ucred', which causes compilation of main/asterisk.c to fail in read_credentials(). This allows configure to check for sockpeercred and asterisk to deal with it properly. (closes issue ASTERISK-18929) Reported-by: Barry Miller Patch-by: Barry Miller 2012-01-13 20:29 +0000 [r350679] Mark Michelson * channels/sip/config_parser.c: Set port to a default sane value if a bogus one is provided when parsing hostnames. 2012-01-13 17:23 +0000 [r350555-350571] Richard Mudgett * configs/cel_pgsql.conf.sample, configs/cel_odbc.conf.sample, cel/cel_pgsql.c, cel/cel_odbc.c, cel/cel_manager.c: Use compatible names for event extra data for various CEL backends. * Change eventextra to extra in cel_psql.c and cel_odbc.c. * Change EventExtra to Extra in cel_manager.c. (issue ASTERISK-17190) * configs/cel_pgsql.conf.sample, configs/cel_odbc.conf.sample, main/cel.c, configs/cel_custom.conf.sample, cel/cel_pgsql.c, configs/cel_sqlite3_custom.conf.sample, cel/cel_odbc.c, configs/cel.conf.sample, cel/cel_manager.c: Add missing CEL logging fields to various CEL backends. * Add missing eventextra to cel_psql.c and cel_odbc.c. * Add missing PeerAccount and EventExtra to cel_manager.c. * Add missing userdeftype support for cel_custom.conf.sample and cel_sqlite3_custom.conf.sample. (closes issue ASTERISK-17190) Reported by: Bryant Zimmerman 2012-01-13 16:57 +0000 [r350552] Matthew Jordan * apps/app_queue.c: Realtime queues failed to load queue information without queue member table Previously, realtime queues could be loaded without defining the queue member table. This allowed for queue members to be dynamic, while the realtime queue definitions could exist in some backing storage. Revision 342223 broke this when it changed the return value for realtime_multientry to return NULL when no results are returned. Previously, an empty ast_config object was expected. (closes issue ASTERISK-19170) Reported by: Rene Mendoza Tested by: Rene Mendoza Patches: rt_queue_member_patch.diff uploaded by Matt Jordan (license 6283) 2012-01-12 15:57 +0000 [r350501] Jonathan Rose * main/features.c: Adds peer to CEL report on CEL_BRIDGE_START and CEL_BRIDGE_END (closes issue ASTERISK-17940) Reporter: Nic Colledge Patches: features_18.patch uploaded by Nic Colledge (license 6245) 2012-01-11 22:50 +0000 [r350311-350452] Richard Mudgett * main/cel.c: Remove extraneous BRIDGEPEER AMI VarSet event on a CEL dummy channel. (closes issue ASTERISK-19180) Reported by: Corey Farrell Patches: asterisk_cel_noevent_varset.diff (license #5909) patch uploaded by Corey Farrell * CHANGES, apps/app_followme.c, apps/app_dial.c: Make FollowMe optionally update connected line information when the accepting endpoint is bridged. Like Dial and Queue, FollowMe needs to deal with AST_CONTROL_CONNECTED_LINE information so when the parties are initially bridged, the connected line information will be correct. * Added the 'I' option just like the app_dial and app_queue 'I' option. (closes issue ASTERISK-18969) Reported by: rmudgett Tested by: rmudgett Review: https://reviewboard.asterisk.org/r/1656/ * funcs/func_lock.c: Fix absolute/relative time mismatch in LOCK function. The time passed by the LOCK function to an internal function was relative time when the function expected absolute time. * Don't use C++ keywords in get_lock(). (closes issue ASTERISK-16868) Reported by: Andrey Solovyev Patches: 20101102__issue18207.diff.txt (license #5003) patch uploaded by Andrey Solovyev (modified) 2012-01-09 21:54 +0000 [r350075-350220] Richard Mudgett * channels/chan_iax2.c: Fix joinable thread terminating without joiner memory leak in chan_iax.c. The iax2_process_thread() can exit without anyone waiting to join the thread. If noone is waiting to join the thread then a large memory leak occurs. * Made iax2_process_thread() deatach itself if nobody is waiting to join the thread. (closes issue ASTERISK-17339) Reported by: Tzafrir Cohen Patches: asterisk-1.8.4.4-chan_iax2-detach-thread-on-non-stop-exit.patch (license #5617) patch uploaded by Alex Villacis Lasso (modified) (closes issue ASTERISK-17825) Reported by: wangjin * contrib/scripts/live_ast: live_ast: valgrind: run asterisk under valgrind Adds a new sub-command, "valgrind" to live_ast. It runs asterisk under valgrind. The extra command-line parameters are passed to Asterisk as usual, and parameters to valgrind are passed through LIVE_AST_VALGRIND_ARGS in live.conf . Review: https://reviewboard.asterisk.org/r/1109/ Merged revisions 326636 from http://svn.asterisk.org/svn/asterisk/branches/10 * contrib/scripts/live_ast, contrib/scripts/valgrind_compare (added): Update contrib script live_ast to invoke Asterisk with valgrind and suppression file. * Added valgrind_compare script to compare two valgrind log files for differences. (issue ASTERISK-17339) Reported by: Tzafrir Cohen Patches: valgrind_compare (license #5035) script uploaded by Tzafrir Cohen live_ast_valgrind.diff (license #5035) patch uploaded by Tzafrir Cohen live_ast_valgrind_v2.diff (license #5185) patch uploaded by Paul Belanger * main/asterisk.c: Make Asterisk -x command line parameter imply -r parameter presence. The Asterisk -x command line parameter is documented inconsistently. * Made the -x documentation and behavior consistent. * Since this is also a new year, updated the copyright notices while here. (closes issue ASTERISK-19094) Reported by: Eugene Patches: issueA19094_correct_asterisk_option_x.patch (license #5674) patch uploaded by Walter Doekes (modified) Tested by: Eugene 2012-01-09 15:37 +0000 [r350023] Kinsey Moore * apps/app_meetme.c: Prevent SLA settings from getting wiped out on reload If SLA was reloaded without the config file being changed, current settings got wiped out before the SLA reload code decided it wasn't going to reload the file since nothing was changed. Moving the settings reset later in the reload process fixes this. (closes issue AST-744) 2012-01-06 23:17 +0000 [r349968] Terry Wilson * channels/chan_sip.c: Don't leak CID in From header when presentation=unavailable When someone does Set(CALLERPRES()=unavailable) (or Set(CALLERID(pres)=unavailable)) when sendrpid=no, the From header shows "Anonymous" . When sendrpid=yes/pai, the From header will still display the callerid info, even though we supply an rpid header with the anonymous info. It seems like we shouldn't leak that info in any case. Skimming http://tools.ietf.org/html/draft-ietf-sip-privacy-04 seems to indicate that one shouldn't send identifying info in the From in this case. This patch anonymizes the From header as well even when sendrpid=yes/pai. (closes issue ASTERISK-16538) Review: https://reviewboard.asterisk.org/r/1649/ 2012-01-06 16:46 +0000 [r349819-349872] Richard Mudgett * apps/app_followme.c: Fix memory leaks in app_followme find_realtime(). (closes issue ASTERISK-19055) Reported by: Matt Jordan * cel/cel_sqlite3_custom.c: Make not assume that the cel_sqlite3_custom SQL table primary key is AcctId. If a table is created by some other application and the primary key is not named "AcctId", cel/cel_sqlite3_custom.c will always try to create the table and fail because it already exists. * Change the SQL table query to not require AcctId as the primary key. (closes issue ASTERISK-18963) Reported by: socketpair Patches: fix.patch (license #6337) patch uploaded by socketpair 2012-01-05 22:06 +0000 [r349731] Kinsey Moore * main/file.c: Allow playback of formats that don't support seeking ast_streamfile previously did unconditional seeking on files that broke playback of formats that don't support that functionality. This patch avoids the seek that was causing the problem. This regression was introduced in r158062. (closes issue ASTERISK-18994) Patch-by: Timo Teras 2012-01-05 21:46 +0000 [r349672-349728] Jonathan Rose * main/dsp.c: Fix an issue where dsp.c would interpret multiple dtmf events from a single key press. When receiving calls from a mobile phone into a DISA system on a connection with significant interference, the reporter's Asterisk system would interpret DTMF incorrectly and replicate digits received. This patch resolves that by increasing the number of frames a mismatch has to be detected before assuming the DTMF is over by 1 frame and adjusts dtmf_detect function to reset hits and misses only when an edge is detected. (closes issue ASTERISK-17493) Reported by: Alec Davis Patches: bug18904-refactor.diff.txt uploaded by Alec Davis (license 5546) Review: https://reviewboard.asterisk.org/r/1130/ * main/asterisk.c: Ensures Asterisk closes when receiving terminal signals in 'no fork' mode. When catching a signal, in no fork mode the console thread is identical to the thread responsible for catching the signal and closing Asterisk, which requires it to first dispense with the console thread. Prior to this patch, if these threads were identical, upon receiving a killing signal, the thread will send an URG signal to itself, which we also catch and then promptly do nothing with. Obviously this isn't useful behavior. (closes issue ASTERISK-19127) Reported By: Bryon Clark Patches: quit_on_signals.patch uploaded by Bryon Clark (license 6157) 2012-01-04 20:46 +0000 [r349558] Richard Mudgett * channels/chan_dahdi.c: Fix segfault in chan_dahdi for CHANNEL(dahdi_span) evaluation on hangup. * Added NULL private pointer checks in the following chan_dahdi channel callbacks: dahdi_func_read(), dahdi_func_write(), dahdi_setoption(), and dahdi_queryoption(). (closes issue ASTERISK-19142) Reported by: Diego Aguirre Tested by: rmudgett 2012-01-04 20:23 +0000 [r349504-349529] Kinsey Moore * contrib/init.d/rc.debian.asterisk: Make debian init script conform to the LSB standard Previously, this init script would return 1 if Asterisk was already running. This is incorrect behavior according to the LSB standard and has been fixed by returning 0 instead. (closes issue ASTERISK-17958) Reported-by: johnc * contrib/scripts/autosupport, contrib/scripts/autosupport.8: Update autosupport script and man page Added information collection from the output of the utilities: top, free, uptime, ifconfig Added information collection from the output of the Asterisk command 'dahdi show status' Added option / flag '-n, --non-interactive' Updated man page to reflect new option / flag '-n, --non-interactive' Patch-by: John Bigelow (itzanger) (closes issue AST-749) 2012-01-04 19:27 +0000 [r349450-349482] Jonathan Rose * channels/chan_sip.c: Adds Subscription-State header to notify with call completion. per RFC3265 (Closes issue ASTERISK-17953) Reported by: George Konopacki Patches: 19400.patch uploaded by mmichelson (license 5049) * main/pbx.c: Fix documentation for SayNumber to reflect the fact that language is changed in CHANNEL() (closes issue ASTERISK-18962) reported by: Nir Simionovich 2012-01-27 Asterisk Development Team * Asterisk 1.8.9.0 Released. * Test results: http://bamboo.asterisk.org/browse/TESTING-ASTERISK1890RCS-6 2012-01-24 Asterisk Development Team * Asterisk 1.8.9.0-rc3 Released. * Test results: http://bamboo.asterisk.org/browse/TESTING-ASTERISK1890RCS-4 * main/file.c: Allow playback of formats that don't support seeking. ast_streamfile previously did unconditional seeking on files that broke playback of formats that don't support that functionality. This patch avoids the seek that was causing the problem. (closes issue ASTERISK-18994) Patch-by: Timo Teras * channels/chan_sip.c: AST-2012-001: prevent crash when an SDP offer is received with an encrypted video stream when support for video is disabled and res_srtp is loaded. (closes issue ASTERISK-19202) Reported by: Catalin Sanda * channels/chan_sip.c: Fix RTP reference leak. If a blind transfer were initiated using a REFER without a prior reINVITE to place the call on hold, AND if Asterisk were sending RTCP reports, then there was a reference leak for the RTP instance of the transferer. (closes issue ASERISK-19192) Reported by: Tyuta Vitali * main/features.c: Fix blind transfers from failing if an 'h' extension is present. This prevents the 'h' extension from being run on the transferee channel when it is transferred via a native transfer mechanism such as SIP REFER. (closes issue ASTERISK-19173) Reported by: Ross Beer Tested by: Kristjan Vrban Patches: ASTERISK-19173 by Mark Michelson (license 5049) 2012-01-13 Asterisk Development Team * Asterisk 1.8.9.0-rc2 Released. * Test results: http://bamboo.asterisk.org/browse/TESTING-ASTERISK1890RCS-3 * apps/app_queue.c: Realtime queues failed to load queue information without queue member table. Revision 342223 broke this when it changed the return value for realtime_multientry to return NULL when no results are returned. (closes issue ASTERISK-19170) Reported by: Rene Mendoza Tested by: Rene Mendoza 2011-12-30 Asterisk Development Team * Asterisk 1.8.9.0-rc1 Released. * Test results: http://bamboo.asterisk.org/browse/TESTING-ASTERISK1890RCS-2 2011-12-29 15:13 +0000 [r349339] Matthew Jordan * main/rtp_engine.c: Handle AST_CONTROL_UPDATE_RTP_PEER frames in local bridge loop Failing to handle AST_CONTROL_UPDATE_RTP_PEER frames in the local bridge loop causes the loop to exit prematurely. This causes a variety of negative side effects, depending on when the loop exits. This patch handles the frame by essentially swallowing the frame in the local loop, as the current channel drivers expect the RTP bridge to handle the frame, and, in the case of the local bridge loop, no additional action is necessary. (issue ASTERISK-19040) (issue ASTERISK-19128) (issue ASTERISK-17725) (issue ASTERISK-18340) (closes issue ASTERISK-19095) Reported by: Stefan Schmidt Tested by: Matt Jordan Review: https://reviewboard.asterisk.org/r/1640/ 2011-12-28 21:30 +0000 [r349289] Sean Bright * main/audiohook.c: Use ast_audiohook_write_list_empty to determine if our lists are empty instead of duplicating that logic. 2011-12-27 20:48 +0000 [r349194] Matthew Jordan * res/res_musiconhold.c, res/res_timing_pthread.c, include/asterisk/module.h, res/res_timing_dahdi.c, res/res_timing_timerfd.c: Fix timing source dependency issues with MOH Prior to this patch, res_musiconhold existed at the same module priority level as the timing sources that it depends on. This would cause a problem when music on hold was reloaded, as the timing source could be changed after res_musiconhold was processed. This patch adds a new module priority level, AST_MODPRI_TIMING, that the various timing modules are now loaded at. This now occurs before loading other resource modules, such that the timing source is guaranteed to be set prior to resolving the timing source dependencies. (closes issue ASTERISK-17474) Reporter: Luke H Tested by: Luke H, Vladimir Mikhelson, zzsurf, Wes Van Tlghem, elguero, Thomas Arimont Patches: asterisk-17474-dahdi_timing-infinite-wait-fix_v3_branch-1.8.diff uploaded by elguero (License #5026) asterisk-17474-dahdi_timing-infinite-wait-fix_v3_branch-10.diff uploaded by elguero (License #5026) asterisk-17474-dahdi_timing-infinite-wait-fix_v3.diff uploaded by elguero (License #5026) Review: https://reviewboard.asterisk.org/r/1578/ 2011-12-27 17:09 +0000 [r349144] Sean Bright * main/audiohook.c: Once an audiohook is attached to a channel, we continue to transcode all of the frames, even after all of the hooks are detached. This patch short-cicuits us out before we transcode unnecessarily. 2011-12-23 17:25 +0000 [r349044] Sean Bright * apps/app_chanspy.c: In ChanSpy, don't create audiohooks that will never be used. When ChanSpy is initialized it creates and attaches 3 audiohooks: 1) Read audio off of the channel that we are spying on 2) Write audio to the channel that we are spying on 3) Write audio to the channel that is bridged to the channel that we are spying on. The first is always necessary, but the others are used only when specific options are passed to the ChanSpy application (B, d, w, and W to be specific). When those flags are not passed, neither of those audiohooks are ever sent frames, but we still try to process the hooks for each voice frame that we recieve on the channel. So in short - only create and attach audiohooks that we actually need. 2011-12-23 15:24 +0000 [r348992] Kinsey Moore * apps/app_dial.c: Fix missing doc tags found while fixing ASTERISK-18689 Add missing tags in app_dial documentation. 2011-12-23 02:09 +0000 [r348940] Richard Mudgett * include/asterisk/pbx.h, main/pbx.c, channels/chan_sip.c: Fix extension state callback references in chan_sip. Chan_sip gives a dialog reference to the extension state callback and assumes that when ast_extension_state_del() returns, the callback cannot happen anymore. Chan_sip then reduces the dialog reference count associated with the callback. Recent changes (ASTERISK-17760) have resulted in the potential for the callback to happen after ast_extension_state_del() has returned. For chan_sip, this could be very bad because the dialog pointer could have already been destroyed. * Added ast_extension_state_add_destroy() so chan_sip can account for the sip_pvt reference given to the extension state callback when the extension state callback is deleted. * Fix pbx.c awkward statecbs handling in ast_extension_state_add_destroy() and handle_statechange() now that the struct ast_state_cb has a destructor to call. * Ensure that ast_extension_state_add_destroy() will never return -1 or 0 for a successful registration. * Fixed pbx.c statecbs_cmp() to compare the correct information. The passed in value to compare is a change_cb function pointer not an object pointer. * Make pbx.c ast_merge_contexts_and_delete() not perform callbacks with AST_EXTENSION_REMOVED with locks held. Chan_sip is notorious for deadlocking when those locks are held during the callback. * Removed unused lock declaration for the pbx.c store_hints list. (closes issue ASTERISK-18844) Reported by: rmudgett Review: https://reviewboard.asterisk.org/r/1635/ 2011-12-22 22:31 +0000 [r348888] Matthew Jordan * cel/cel_pgsql.c: Fix for memory leaks / cleanup in cel_pgsql There were a number of issues in cel_pgsql's pgsql_log method: * If either sql or sql2 could not be allocated, the method would return while the pgsql_lock was still locked * If the execution of the log statement succeeded, the sql and sql2 structs were never free'd * Reconnection successes were logged as ERRORs. In general, the severity of several logging statements was reduced (closes issue ASTERISK-18879) Reported by: Niolas Bouliane Tested by: Matt Jordan Review: https://reviewboard.asterisk.org/r/1624/ 2011-12-22 18:38 +0000 [r348833] Terry Wilson * include/asterisk/frame.h: Allow packetization vaules > 127 According to the RTP packetization documentation, and the maximum values listed in AST_FORMAT_LIST, we should support values > that the signed char array that ast_codec_pref makes available to store the value. All places in the code treat the framing field as though it were an int array instaead of a char array anyway, so this just fixes the type of the array. (closes issue ASTERISK-18876) Review: https://reviewboard.asterisk.org/r/1639/ 2011-12-20 23:08 +0000 [r348735] Richard Mudgett * channels/chan_iax2.c: Fix chan_iax2 to not report an RDNIS number if it is blank. Some ISDN switches complain or block the call if the RDNIS number is empty. * Made chan_iax2 not save a RDNIS number into the ast_channel if the string is blank. This is what other channel drivers do. (closes issue ASTERISK-17152) Reported by: rmudgett 2011-12-19 21:31 +0000 [r348647] Richard Mudgett * configure, configure.ac: Fix crashes on other platforms caused by interference from Darwin weak symbol support. Support weak symbols on a platform specific basis. The Mac OS X (Darwin) support must be isolated from the other platforms because it has caused other platforms to crash. Several other platforms including Linux have GCC versions that define the weak attribute. However, this attribute is only setup for use in the code by Darwin. (closes issue ASTERISK-18728) Reported by: Ben Klang Review: https://reviewboard.asterisk.org/r/1617/ 2011-12-18 18:27 +0000 [r348516] Kevin P. Fleming * configs/sip.conf.sample, /: Correct two flaws in sip.conf.sample related to AST-2011-013. * The sample file listed *two* values for the 'nat' option as being the default. Only 'force_rport' is the default. * The warning about having differing 'nat' settings confusingly referred to both peers and users. ........ Merged revisions 348515 from http://svn.asterisk.org/svn/asterisk/branches/1.6.2 2011-12-16 23:51 +0000 [r348310-348464] Richard Mudgett * main/channel.c, main/features.c: Clean-up on isle five for __ast_request_and_dial() and ast_call_forward(). * Add locking when a channel inherits variables and datastores in __ast_request_and_dial() and ast_call_forward(). Note: The involved channels are not active so there was minimal potential for problems. * Remove calls to ast_set_callerid() in __ast_request_and_dial() and ast_call_forward() because the set information is for the wrong direction. * Don't use C++ keywords for variable names in ast_call_forward(). * Run the redirecting interception macro if defined when forwarding a call in ast_call_forward(). Note: Currently will never execute because the only callers that supply a calling channel supply a hungup or zombie channel. * Make feature_request_and_dial() put the transferee into autoservice when it calls ast_call_forward() in case a redirection interception macro is run. Note: Currently will never happen because the caller channel (Party B) is always hungup at this time. * Make feature_request_and_dial() ignore the AST_CONTROL_PROCEEDING frame to silence a log message. * main/channel.c: Fix cut and past error in ast_call_forward(). (issue ASTERISK-18836) * include/asterisk/cdr.h, apps/app_followme.c, apps/app_queue.c, res/res_monitor.c, main/channel.c, main/pbx.c, apps/app_authenticate.c, funcs/func_cdr.c, main/features.c: Fix crash during CDR update. The ast_cdr_setcid() and ast_cdr_update() were shown in ASTERISK-18836 to be called by different threads for the same channel. The channel driver thread and the PBX thread running dialplan. * Add lock protection around CDR API calls that access an ast_channel pointer. (closes issue ASTERISK-18836) Reported by: gpluser Review: https://reviewboard.asterisk.org/r/1628/ * apps/app_parkandannounce.c: Fix ParkAndAnnounce to pass the CallerID to the announcing channel. ParkAndAnnounce tried to pass the CallerID to the announcing channel but the ID was wiped out by the channel masquerade done when parking the call. * Save the CallerID before parking the channel to pass it to the announcing channel. * Fixed a minor memory leak in ParkAndAnnounce. * Updated some ParkAndAnnounce log messages. 2011-12-14 22:01 +0000 [r348212] Matthew Nicholson * res/res_fax.c: Don't clear LOCALSTATIONID before sending or receiving. The user may set that variable. ASTERISK-18921 2011-12-14 20:34 +0000 [r348154-348157] Jonathan Rose * configs/features.conf.sample: Fix accidental use of tabs instead of spaces from previous features.conf.sample change * configs/features.conf.sample: Document PARKINGSLOT variable in features.conf.sample (issue ASTERISK-16239) 2011-12-13 23:00 +0000 [r348101] Richard Mudgett * apps/app_followme.c, bridges/bridge_builtin_features.c: Fix FollowMe CallerID on outgoing calls. The addition of the Connected Line support changed how CallerID is passed to outgoing calls. The FollowMe application was not updated to pass CallerID to the outgoing calls. * Fix FollowMe CallerID on outgoing calls. * Restructured findmeexec() to fix several memory leaks and eliminate some duplicated code. * Made check the return value of create_followme_number(). Putting a NULL into the numbers list is bad if create_followme_number() fails. * Fixed a couple uses of ast_strdupa() inside loops. * The changes to bridge_builtin_features.c fix a similar CallerID issue with the bridging API attended and blind transfers. (Not used at this time.) (closes issue ASTERISK-17557) Reported by: hamlet505a Tested by: rmudgett Review: https://reviewboard.asterisk.org/r/1612/ 2011-12-13 15:16 +0000 [r348048] Stefan Schmidt * channels/chan_sip.c: Fix possible misshandling of an incoming SIP response as a peer poke response. Also make sure peer has even qualify enabled when handle a peer poke response. (closes issue ASTERISK-18940) Reported by: Vitaliy Tested by: Vitaliy and UnixDev Review: https://reviewboard.asterisk.org/r/1620 Reviewed by: David Vossel 2011-12-12 19:22 +0000 [r347995] Terry Wilson * res/res_srtp.c: Add a separate buffer for SRTCP packets The function ast_srtp_protect used a common buffer for both SRTP and SRTCP packets. Since this function can be called from multiple threads for the same SRTP session (scheduler for SRTCP and channel for SRTP) it was possible for the packets to become corrupted as the buffer was used by both threads simultaneously. This patch adds a separate buffer for SRTCP packets to avoid the problem. (closes issue ASTERISK-18889, Reported/patch by Daniel Collins) 2011-12-09 01:19 +0000 [r347811] Richard Mudgett * main/pbx.c: Fix some parsing issues in add_exten_to_pattern_tree(). * Simplify compare_char() and avoid potential sign extension issue. * Fix infinite loop in add_exten_to_pattern_tree() handling of character set escape handling. * Added buffer overflow checks in add_exten_to_pattern_tree() character set collection. * Made ignore empty character sets. * Added escape character handling to end-of-range character in character sets. This has a slight change in behavior if the end-of-range character is an escape character. You must now escape it. * Fix potential sign extension issue when expanding character set ranges. * Made remove duplicated characters from character sets. The duplicate characters lower extension matching priority and prevent duplicate extension detection. * Fix escape character handling when the escape character is trying to escape the end-of-string. We could have continued processing characters after the end of the exten string. We could have added the previous character to the pattern matching tree incorrectly. (closes issue ASTERISK-18909) Reported by: Luke-Jr 2011-12-08 21:28 +0000 [r347718] Walter Doekes * channels/chan_sip.c: Fix regression when using tcpenable=no and tlsenable=yes. The tlsenable settings are tucked away in main/tcptls.c, so I missed them when resolving ASTERISK-18837. This should resolve the test suite breakage of the sip tls tests. Review: https://reviewboard.asterisk.org/r/1615 Reviewed by: Matt Jordan 2011-12-08 17:50 +0000 [r347595] Richard Mudgett * main/features.c: Mark channel running the h exten with the soft-hangup flag. When a bridge is broken, ast_bridge_call() might execute the h exten on the calling channel. However, that channel may not have been the channel that broke the bridge by hanging up. The channel executing the h exten must be in a hung up state so things like AGI run in the correct mode. * Make sure ast_bridge_call() marks the channel it is executing the h exten on as hung up. (The AST_SOFTHANGUP_APPUNLOAD flag is used so as to match the pbx.c main dialplan execution loop when it executes the h exten.) (closes issue ASTERISK-18811) Reported by: David Hajek Patches: jira_asterisk_18811_v1.8.patch (license #5621) patch uploaded by rmudgett Tested by: David Hajek, rmudgett 2011-12-08 16:19 +0000 [r347531] Terry Wilson * /, channels/chan_sip.c: Don't crash on INFO automon request with no channel AST-2011-014. When automon was enabled in features.conf, it was possible to crash Asterisk by sending an INFO request if no channel had been created yet. (closes issue ASTERISK-18805) ........ Merged revisions 347530 from http://svn.asterisk.org/svn/asterisk/branches/1.6.2 2011-12-07 21:36 +0000 [r347438] Richard Mudgett * main/manager.c: Update AMI Getvar and Setvar documentation about supplying a channel name. (closes issue ASTERISK-18958) Reported by: Red Patches: jira_asterisk_18958_v1.8.patch (license #5621) patch uploaded by rmudgett 2011-12-07 20:23 +0000 [r347369] Jonathan Rose * apps/app_meetme.c: Fix: Meetme recording variables from realtime DB use null entries over channel variables Meetme would attempt to substitute the realtime values of RECORDING_FILE and RECORDING_FORMAT from the meetme db entry instead of using the channel variable set for those variables in spite of those database entries being NULL or even lacking a column to represent them. (closes issue ASTERISK-18873) Reported by: Byron Clark Patches: ASTERISK-18873-1.patch uploaded by Byron Clark (license 6157) 2011-12-06 23:47 +0000 [r347292] Richard Mudgett * channels/chan_sip.c: Make SIP INFO messages for dtmf-relay signals case insensitive. (closes issue ASTERISK-18924) Reported by: Kevin Taylor 2011-12-06 21:44 +0000 [r347239] Jonathan Rose * main/pbx.c: Documents CHANNEL(musicclass) taking priority over m([x]) in waitExten If waitExten specifies a music class to use with its music on hold option, it will use CHANNEL(musicclass) instead if that channel variable has been set on the initiating channel. This documents that behavior in the waitExten app so that this can be known without checking the documentation of the code in function local_ast_moh_start. (closes issue ASTERISK-18804) 2011-12-06 19:39 +0000 [r347111-347166] Walter Doekes * channels/chan_sip.c: Don't allow transport=tcp when tcpenable=no. When tcpenable=no, sending to transport=tcp hosts was still allowed. Resolving the source address wasn't possible and yielded the string "(null)" in SIP messages. Fixed that and a couple of not-so-correct log messages. (closes issue ASTERISK-18837) Reported by: Andreas Topp Review: https://reviewboard.asterisk.org/r/1585 Reviewed by: Matt Jordan * apps/app_voicemail.c: Add regression tests for issue ASTERISK-18838. Review: https://reviewboard.asterisk.org/r/1572 Reviewed by: Matt Jordan * apps/app_voicemail.c: Move setting of voicemail zonetag and locale up a bit. The voicemail [general] zonetag and locale variables weren't loaded until after the mailboxes were initialized. This caused the settings to be unset for those mailboxes until a reload was performed. (closes issue ASTERISK-18838) Review: https://reviewboard.asterisk.org/r/1570 Reviewed by: Matt Jordan 2011-12-06 17:05 +0000 [r347058] Matthew Jordan * channels/sip/include/sip.h, channels/chan_sip.c: Fixed crash from orphaned MWI subscriptions in chan_sip This patch resolves the issue where MWI subscriptions are orphaned by subsequent SIP SUBSCRIBE messages. When a peer is removed, either by pruning realtime SIP peers or by unloading / loading chan_sip, the MWI subscriptions that were orphaned would still be on the event engine list of valid subscriptions but have a pointer to a peer that no longer was valid. When an MWI event would occur, this would cause a seg fault. (closes issue ASTERISK-18663) Reported by: Ross Beer Tested by: Ross Beer, Matt Jordan Patches: blf_mwi_diff_12_06_11.txt uploaded by Matt Jordan (license 6283) Review: https://reviewboard.asterisk.org/r/1610/ 2011-12-05 17:39 +0000 [r347006] Richard Mudgett * channels/chan_dahdi.c, channels/sig_analog.c, channels/sig_analog.h: Restore call progress code for analog ports. Extracting sig_analog from chan_dahdi lost call progress detection functionality. * Fix analog ports from considering a call answered immediately after dialing has completed if the callprogress option is enabled. (closes issue ASTERISK-18841) Reported by: Richard Miller Patches: chan_dahdi.diff (license #5685) patch uploaded by Richard Miller (Modified by me) sig_analog.c.diff (license #5685) patch uploaded by Richard Miller (Modified by me) sig_analog.h.diff (license #5685) patch uploaded by Richard Miller 2011-12-05 14:56 +0000 [r346954] Jonathan Rose * main/pbx.c: Resolve duplicate label used in multiple priorities for the same extension. Prior to this patch, if labels with the same name were used for different priorities in the same extension, the new label would be accepted, but it would be unusable since attempts to reach that label would just go to the first one. Now pbx.c detects this, generates a warning in logs, and culls the label before adding it to the dialplan. (closes issue ASTERISK-18807) Reported by: Kenneth Shumard Patches: pbx.c.patch uploaded by Kenneth Shumard (License 5077) 2011-12-05 14:45 +0000 [r346951] Kinsey Moore * res/res_jabber.exports.in: Fix chan_jingle/gtalk load regression introduced in r346087 Add missing symbol exports for ast_aji_client_destroy and ast_aji_buddy_destroy for usage outside res_jabber. Testing of these changes focused on res_jabber itself, so this problem was missed. Reported-by: Michael Spiceland 2011-12-04 09:57 +0000 [r346899] Walter Doekes * channels/chan_sip.c: For SIP REGISTER fix domain-only URIs and domain ACL bypass. The code that allowed admins to create users with domain-only uri's had stopped to work in 1.8 because of the reqresp parser rewrites. This is fixed now: if you have a [mydomain.com] sip user, you can register with useraddr sip:mydomain.com. Note that in that case -- if you're using domain ACLs (a configured domain list) -- mydomain.com must be in the allow list as well. Reviewboard r1606 shows a list of registration combinations and which SIP response codes are returned. Review: https://reviewboard.asterisk.org/r/1533/ Reviewed by: Terry Wilson (closes issue ASTERISK-18389) (closes issue ASTERISK-18741) 2011-12-02 16:19 +0000 [r346762] Alexandr Anikin * addons/chan_ooh323.c, channels/chan_h323.c: process null frame pointer returned by ast_rtp_instance_read correctly (closes issue ASTERISK-16697) Reported by: under Patches: segfault.diff (License #5871) patch uploaded by under 2011-12-01 21:11 +0000 [r346700] Richard Mudgett * configs/res_stun_monitor.conf.sample, include/asterisk/stun.h, main/stun.c, res/res_stun_monitor.c: Re-resolve the STUN address if a STUN poll fails for res_stun_monitor. The STUN socket must remain open between polls or the external address seen by the STUN server is likely to change. However, if the STUN request poll fails then the STUN server address needs to be re-resolved and the STUN socket needs to be closed and reopened. * Re-resolve the STUN server address and create a new socket if the STUN request poll fails. * Fix ast_stun_request() return value consistency. * Fix ast_stun_request() to check the received packet for expected message type and transaction ID. * Fix ast_stun_request() to read packets until timeout or an associated response packet is found. The stun_purge_socket() hack is no longer required. * Reduce ast_stun_request() error messages to debug output. * No longer pass in the destination address to ast_stun_request() if the socket is already bound or connected to the destination. (closes issue ASTERISK-18327) Reported by: Wolfram Joost Tested by: rmudgett Review: https://reviewboard.asterisk.org/r/1595/ 2011-12-01 20:36 +0000 [r346564-346697] Jonathan Rose * channels/chan_sip.c: Change 183 Ringing in sipfrag body to 180 ringing. 183 Ringing isn't even a thing. 183 is actually a session progress message. (closes issue ASTERISK-18925) Reported by: Sebastian Denz Tested by: jrose Patches: asterisk18-use_180_instead_of_183_in_sipfrag.diff by Sebastian Denz (License #6139) * include/asterisk/tcptls.h, main/tcptls.c, channels/chan_sip.c: r346525 | jrose | 2011-11-30 15:10:38 -0600 (Wed, 30 Nov 2011) | 18 lines Cleaning up chan_sip/tcptls file descriptor closing. This patch attempts to eliminate various possible instances of undefined behavior caused by invoking close/fclose in situations where fclose may have already been issued on a tcptls_session_instance and/or closing file descriptors that don't have a valid index for fd (-1). Thanks for more than a little help from wdoekes. (closes issue ASTERISK-18700) Reported by: Erik Wallin (issue ASTERISK-18345) Reported by: Stephane Cazelas (issue ASTERISK-18342) Reported by: Stephane Chazelas Review: https://reviewboard.asterisk.org/r/1576/ 2011-11-30 19:36 +0000 [r346472] Leif Madsen * configs/queues.conf.sample: Update queues.conf.sample documentation. Update the documentation surrounding the use of MONITOR_EXEC to make it more clear that it can be used for both Monitor() and MixMonitor() usage. (closes issue ASTERISK-17413) Reported by: David Woolley Patches: issue18817_mixmonitor_queues_doc.diff by Michael L. Young (License #5026) 2011-11-28 14:30 +0000 [r346292] Stefan Schmidt * res/res_rtp_asterisk.c: Fix regression that 'rtp/rtcp set debup ip' only works when also a port was specified. (closes issue ASTERISK-18693) Reported by: Davide Dal Fra Review: https://reviewboard.asterisk.org/r/1600/ Reviewed by: Walter Doekes 2011-11-23 22:52 +0000 [r346239] Richard Mudgett * channels/chan_iax2.c, include/asterisk/acl.h, channels/chan_skinny.c, channels/chan_h323.c, main/acl.c: Fix calls to ast_get_ip() not initializing the address family. 2011-11-23 20:15 +0000 [r346144-346147] Walter Doekes * channels/chan_sip.c: Minor cleanup in chan_sip get_msg_text() function. In r116240, get_msg_text() got an extra parameter to fix the unwanted addition of trailing newlines to SIP MESSAGE bodies. This caused all linefeeds to be trimmed, which isn't right either. This is a stop-gap; the right fix is to return the original SIP request body. Review: https://reviewboard.asterisk.org/r/1586 Reviewed by: Matt Jordan * include/asterisk/strings.h: Fix ast_str_truncate signedness warning and documentation. Review: https://reviewboard.asterisk.org/r/1594 2011-11-23 17:12 +0000 [r346086] Kinsey Moore * channels/chan_gtalk.c, res/res_jabber.c, channels/chan_jingle.c, include/asterisk/jabber.h: Fix res_jabber resource leaks This should fix almost all resource leaks in res_jabber that involve ASTOBJ_CONTAINER_FIND and resolves an ambiguous situation where ast_aji_get_client would sometimes bump an object's refcount and sometimes not. Review: https://reviewboard.asterisk.org/r/1553 2011-11-23 16:09 +0000 [r346030] Terry Wilson * res/res_musiconhold.c: Resume playing existing hold music for cached realtime MOH As a result of the fix for ASTERISK-18039, realtime caching MOH no longer properly resumes playing back a file between different holds in the same call. This is because scanning for new files causes the existing file array to be emptied and we were just comparing that the saved pointer to the filename matched the pointer to the filename in a particular position in the array. An easy fix is to save the filename instead of a pointer to it and then do a strcmp instead of comparing the addresses. (closes issue ASTERISK-18912) Review: https://reviewboard.asterisk.org/r/1596/ 2011-11-22 22:55 +0000 [r345976] Richard Mudgett * include/asterisk/dnsmgr.h, main/dnsmgr.c: Fix dnsmgr entries to ask for the same address family each time. The dnsmgr refresh would always get the first address found regardless of the original address family requested. So if you asked for only IPv4 addresses originally, you might get an IPv6 address on refresh. * Saved the original address family requested by ast_dnsmgr_lookup() to be used when the address is refreshed. 2011-11-22 20:29 +0000 [r345923] Walter Doekes * include/asterisk/logger.h: Clarify why the AST_LOG_* macros exist next to the LOG_* macros. (issue ASTERISK-17973) 2011-11-21 21:03 +0000 [r345828-345829] Terry Wilson * CHANGES: Change nat=yes to nat=force_rport in CHANGES Fix a small documentation merge issue ASTERISK-18862 * configs/sip.conf.sample, CHANGES, /, channels/chan_sip.c: Default to nat=yes; warn when nat in general and peer differ It is possible to enumerate SIP usernames when the general and user/peer nat settings differ in whether to respond to the port a request is sent from or the port listed for responses in the Via header. In 1.4 and 1.6.2, this would mean if one setting was nat=yes or nat=route and the other was either nat=no or nat=never. In 1.8 and 10, this would mean when one was nat=force_rport and the other was nat=no. In order to address this problem, it was decided to switch the default behavior to nat=yes/force_rport as it is the most commonly used option and to strongly discourage setting nat per-peer/user when at all possible. For more discussion of the issue, please see: http://lists.digium.com/pipermail/asterisk-dev/2011-November/052191.html (closes issue ASTERISK-18862) Review: https://reviewboard.asterisk.org/r/1591/ ........ Merged revisions 345776 from http://svn.asterisk.org/svn/asterisk/branches/1.4 ........ Merged revisions 345800 from http://svn.asterisk.org/svn/asterisk/branches/1.6.2 2011-11-19 15:08 +0000 [r345682] Tilghman Lesher * main/db.c: Update the documentation to better clarify how the existing commands work. Review: https://reviewboard.asterisk.org/r/1593/ 2011-11-17 17:06 +0000 [r345546] Richard Mudgett * channels/sig_pri.c: Remove dead code since pri_grab() can never fail. Dead code makes programmers sick. I am sick of looking at it. 2011-11-17 17:04 +0000 [r345545] Jason Parker * apps/app_confbridge.c: Fix documentation of 's' option. The menu key is #, not *. Reported by p3nguin on #asterisk. 2011-11-16 14:42 +0000 [r345487] Jonathan Rose * apps/app_voicemail.c: Guarantee messages go into the right folders with multiple recipients Before, using the U flag in Voicemail with multiple recipients would put urgent messages in the INBOX folder for all users past the first thanks to a bug with the message copying function. This would also cause messages to fail to be sent if the INBOX directory hadn't been created for that mailbox yet. (closes issue ASTERISK-18245) Reported by: Matt Jordan (closes issue ASTERISK-18246) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/1589/ 2011-11-15 20:09 +0000 [r345219-345431] Richard Mudgett * res/res_agi.c: Make FastAGI HANGUP show up in AGI debug output. * Change from using send() to ast_agi_send() so the HANGUP shows up in the AGI debug output. (closes issue ASTERISK-18723) Reported by: James Van Vleet Patches: jira_asterisk_18723_v1.8.patch (license #5621) patch uploaded by rmudgett * channels/sig_pri.c: Fix typo in sig_pri using wrong structure name. It is fortunate that the typo does not alter generated code since the e->restart.channel and e->ring.channel members are in the same position. (closes issue ASTERISK-18868) Reported by: zvision Patches: sig_pri.c.diff (License #5755) patch uploaded by zvision * apps/app_queue.c: Make queue log indicate if ADDMEMBER is paused for AMI and realtime. * Add parameter to queue log ADDMEMBER to indicate if the member is paused. (closes issue ASTERISK-18645) Reported by: garlew Patches: paused.diff (License #5337) patch uploaded by garlew Tested by: rmudgett, garlew Review: https://reviewboard.asterisk.org/r/1469/ * UPGRADE.txt, configs/sip.conf.sample, channels/sip/include/sip.h, channels/chan_sip.c: Restore SIP DTMF overlap dialing method. The recent fix for ASTERISK-17288 to get RFC3578 SIP overlap support working correctly removed a long standing ability to do overlap dialing using DTMF in the early media phase of a call. See ASTERISK-18702 it has a very good description of the issue. I started with Pavel Troller's chan_sip.diff patch on issue ASTERISK-18702. * Added 'dtmf' enum value to sip.conf allowoverlap config option. The new option value causes the Incomplte application to not send anything with chan_sip so the caller can supply more digits via DTMF. * Renames SIP_GET_DEST_PICKUP_EXTEN_FOUND to SIP_GET_DEST_EXTEN_MATCHMORE since that is what it really means. * Fixed get_destination() inconsistency with the pickup extension matching. * Fixed initialization of PAGE3 of global_flags in reload_config(). (closes issue ASTERISK-18702) Reported by: Pavel Troller Review: https://reviewboard.asterisk.org/r/1517/ Review: https://reviewboard.asterisk.org/r/1582/ * main/pbx.c: Fix Progress spelling error in main/pbx.c. (closes issue ASTERISK-18857) Reported by: David M Patches: mainpbx-trivial.patch (License #6326) patch uploaded by David M 2011-11-14 19:05 +0000 [r345163] Terry Wilson * main/channel.c: Don't read past end of input when calling write() int blah = 1; ... write(chan->alertpipe[1], &blah, new_frames * sizeof(blah)) != (new_frames * sizeof(blah))) is only valid when new_frames == 1. Otherwise we start reading into adjacent variables declared on the stack. The read end discards what is read, so the values don't matter but it's not a good idea to read past where we want even though new_frames is almost always 1 and should never be large. This patch is basically taken out of kpfleming's eventfd branch, as he mentioned that he remembered fixing it there when I talked to him about this issue. Review: https://reviewboard.asterisk.org/r/1583/ 2011-11-14 19:00 +0000 [r345160] Walter Doekes * channels/sip/include/reqresp_parser.h: Update reqresp_parser parse_uri doxygen comments. The issue mentioned in the bug report had been fixed recently by twilson. The reporter included this documentation fix. (closes issue ASTERISK-18572) Reported by: Richard Miller Patch by: Richard Miller (modified) 2011-11-14 15:08 +0000 [r345063] Kinsey Moore * channels/chan_sip.c: Ensure that a null vmexten does not cause a segfault When sip_send_mwi_to_peer was modified recently to avoid deadlocks, vmexten was not expected to be null. This change handles that situation to avoid a segfault. 2011-11-14 15:00 +0000 [r345062] Jonathan Rose * apps/app_voicemail.c: Moves voicemail setup password entry to the end of the setup process. This change was made because forcegreeting and forcename settings in voicemail could be circumvented by hanging up after entering a password, because the only way voicemail currently observes whether a mailbox is new or not is by checking to see if the password is the same as the mailbox number or not. (closes issue ASTERISK-18282) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/1581/ 2011-11-12 16:05 +0000 [r344965] Gregory Nietsky * channels/chan_misdn.c: mISDN Round Robin break when no channel is available Prevent channels been parsed repetitively. 2011-11-12 00:24 +0000 [r344899] Terry Wilson * res/res_musiconhold.c: Don't forget to rescan MOH files for cached realtime classes Realtime MOH class caching was implemented because without it, you would build a completely new MOH class and would start the music over at the beginning each time hold was pressed in a conversation. Unfortunately, this broke re-scanning for file changes for realtime MOH classes. This patch corrects that issue. (closes issue ASTERISK-18039) Review: https://reviewboard.asterisk.org/r/1579/ 2011-11-11 21:54 +0000 [r344835-344843] Walter Doekes * main/utils.c, include/asterisk/stringfields.h, include/asterisk/utils.h: Use __alignof__ instead of sizeof for stringfield length storage. Kevin P Fleming suggested that r343157 should use __alignof__ instead of sizeof. For most systems this won't be an issue, but better fix it now while it's still fresh. Review: https://reviewboard.asterisk.org/r/1573 * channels/sip/reqresp_parser.c: Remove unneeded if(params) checks in reqresp_parser. Nick Lewis added them in https://reviewboard.asterisk.org/r/549/diff/1-2/ for no apparent reason. There is no way that params could become NULL in that piece of code, so I removed these excess checks again. * main/manager.c: Fix bad quoting of multiline mxml opaque_data that caused invalid xml. The opaque_data was added and enclosed in single quotes, assuming it would be only a single line. The rest of the lines were appended after the closing quote. (closes issue ASTERISK-18852) Reported by: peep_ on IRC Review: https://reviewboard.asterisk.org/r/1577 2011-11-11 20:42 +0000 [r344823] Matthew Jordan * main/file.c: Video format was treated as audio when removed from the file playback scheduler This patch fixes the format type check in ast_closestream and filestream_destructor. Previously a comparison operator was used, but since audio formats are no longer contiguous (and AST_FORMAT_AUDIO_MASK includes formats that have a value greater than the video formats), a bitwise AND operation is used instead. Duplicated code was also moved to filestream_close. (closes issue ASTERISK-18682) Reported by: Aldo Bedrij Tested by: Matt Jordan Review: https://reviewboard.asterisk.org/r/1580/ 2011-11-11 20:10 +0000 [r344769] Kinsey Moore * channels/chan_sip.c: Fix regression introduced by SDP fixups If capability is adjusted when switching to UDPTL during fax transmission, fax teardown fails. Make sure capability is only touched if RTP is active. This regression was introduced in R344385. 2011-11-11 18:35 +0000 [r344661-344715] Richard Mudgett * channels/chan_sip.c: Check sip.conf maxforwards parameter for range 1 <= x <= 255. JIRA AST-710 * main/cli.c: Make CLI "core show channel" not hold the channel lock during console output. Holding the channel lock while the CLI "core show channel" command is executing can slow down the system. It could block the system if the console output is halted or paused. * Made capture the CLI "core show channel" output into a buffer to be output after the channel is unlocked. * Removed use of C++ keyword as a variable name. out renamed to obuf. * Checked allocation of obuf for failure so will not crash. (closes issue ASTERISK-18571) Reported by: Pavel Troller Tested by: rmudgett 2011-11-11 15:21 +0000 [r344608] Jonathan Rose * main/pbx.c: Fix a segmentation fault when using an extension with CID matching and no CID. Attempting to call an extension which used Caller ID matching with a channel that has an empty caller id string would result in a segmentation fault. (closes issue ASTERISK-18392 Reported By: Ales Zelenik 2011-11-10 22:59 +0000 [r344536-344539] Richard Mudgett * apps/app_queue.c: Fix potential deadlock calling ast_call() with channel locks held. Fixed app_queue.c:ring_entry() calling ast_call() with the channel locks held. Chan_local attempts to do deadlock avoidance in its ast_call() callback and could deadlock if a channel lock is already held. * apps/app_queue.c: Make AMI event AgentCalled get CallerID/ConnectedLine info from the incoming channel. It was strange that the AgentCalled AMI event would get most of its information from the incoming channel but then get the CallerID information from the outgoing channel. Before connected line support was added, this information was always the same at this point. (closes issue ASTERISK-18152) Reported by: Thomas Farnham Tested by: rmudgett 2011-11-10 21:14 +0000 [r344385-344439] Kinsey Moore * apps/app_meetme.c: Fix another incorrect case with meetme's PIN logic and add documentation This fixes an issue where a user of a dynamic conference was asked for a PIN twice. This also adds documentation to assist in future modifications to the piece of code responsible for PIN checking. (closes issue AST-670) * channels/sip/include/sip.h, channels/chan_sip.c: Fix several bugs with SDP parsing and well-formedness of responses Fix bug ASTERISK-16558 which dealt with the order of responses to incoming streams defined by SDP. Fix unreported bug where offering multiple same-type streams would cause Asterisk to reply with an incorrect SDP response missing one or more streams without a proper declination. Fix bugs related to a single non-audio stream being offered with responses requesting codecs that were not offered in the initial invite along with an additional audio stream that was not in the initial invite. Review: https://reviewboard.asterisk.org/r/1516/ 2011-11-10 16:18 +0000 [r344330] Matthew Nicholson * res/res_rtp_asterisk.c: only attempt to do stun handling on ipv4 or ipv4 mapped to ipv6 addresses Patch by: jkonieczny (modified) ASTERISK-18490 2011-11-09 20:37 +0000 [r344268] Richard Mudgett * channels/chan_sip.c: Fix deadlock during dialplan reload. Another deadlock between the conlock/hints and channels/channel locking orders. * Don't hold the channel and private lock in sip_new() when calling ast_exists_extension(). (closes issue ASTERISK-18740) Reported by: Byron Clark Patches: sip_exists_exten_dlock_3.diff (license #5041) patch uploaded by Gregory Hinton Nietsky ASTERISK-18740.patch (license #6157) patch uploaded by Byron Clark Tested by: Byron Clark 2011-11-09 19:57 +0000 [r344215] Terry Wilson * channels/sip/include/sip.h, channels/sip/include/reqresp_parser.h, channels/chan_sip.c, channels/sip/reqresp_parser.c: Don't treat a host:port string as a domain The domain matching code prior to 1.8 used to manually remove the port from the host:port string when determining if an incoming request matched the list of domains. When switching to the new parsing functions, the documentation implied that the "domain" was being returned by these functions, when instead it was returning the "hostport" as defined by RFC 3261. This led to confusion and resulted in 1.8+ rejecting an incoming request from x.x.x.x:xxxxx when domain=x.x.x.x was set in sip.conf. This patch renames the "domain" variables in the parsing functions to "hostport" to more accurately describe what it is that they are returning and also properly truncates the resulting hostport strings when dealing with domain matching. Review: https://reviewboard.asterisk.org/r/1574/ 2011-11-09 18:42 +0000 [r344158] Alexandr Anikin * addons/ooh323c/src/ootypes.h, addons/ooh323c/src/oochannels.c, addons/ooh323c/src/ooq931.c, addons/ooh323c/src/ooh323.c, addons/ooh323c/src/ooh245.c, addons/ooh323c/src/ooq931.h: (closes issue ASTERISK-18748) Reported by: Fabrizio Lazzaretti Patches: ASTERISK-18748-5.patch (License #5415) patch uploaded by may213 Tested by: Fabrizio Lazzaretti 2011-11-09 18:38 +0000 [r344157] Terry Wilson * tests/test_netsock2.c: Add a unit test for ast_sockaddr_split_hostport Review: https://reviewboard.asterisk.org/r/1575/ 2011-11-09 17:13 +0000 [r344102] Kinsey Moore * apps/app_meetme.c: Fix pin parameter behavior regression in MeetMe The last time this code was touched (by me), a subtlety was missed based on the difference between needing to check a pin's validity and the need to prompt for a pin. (closes issue ASTERISK-18488) 2011-11-09 15:25 +0000 [r344048] Matthew Nicholson * formats/format_wav.c: don't call ltohl() twice on the same value ASTERISK-18739 Patch by: pawel (modified) 2011-11-08 19:25 +0000 [r343936] Walter Doekes * pbx/pbx_config.c: Fix crash when dialplan remove include is called with too few arguments. "dialplan remove include x from y" crashed when the amount of arguments was less than 6. (closes issue ASTERISK-18762) Reported by: Andrey Solovyev Tested by: Andrey Solovyev 2011-11-08 17:58 +0000 [r343851] Richard Mudgett * channels/chan_sip.c, main/acl.c: Fixed reference to incorrect variable if unknown host configured crash. * Fixed a LOG_ERROR message referencing the config variable list v that had previously been processed and became NULL. * Added error return value set that was missing in an ast_append_ha() error return path. (closes issue ASTERISK-18743) Reported by: Michele Patches: issueA18743-fix_dynamic_exclude_static_bad_host_log.patch (license #5674) patch uploaded by Walter Doekes Tested by: Michele 2011-11-08 13:26 +0000 [r343791] Leif Madsen * build_tools/prep_tarball: Fix boo-boo in prep_tarball script. A hardcoded a branch number was in the prep_tarball which could not work. Changed it to the variable. 2011-11-07 21:40 +0000 [r343690] Matthew Nicholson * channels/chan_sip.c: respect case changes in peer names on sip reload ASTERISK-18669 2011-11-07 21:13 +0000 [r343637] Richard Mudgett * channels/chan_sip.c: Fix __sip_subscribe_mwi_do() incorectly changing dialogs hash key callid. Changing an object value used as a container key requires removing the object from the container and reinserting it. * Created change_callid_pvt() to call instead of build_callid_pvt(). The change_callid_pvt() will correctly change the dialog callid so the ao2 conainter can explicitly unlink it. 2011-11-07 20:27 +0000 [r343621] Kinsey Moore * channels/chan_sip.c: Prevent BLF subscriptions from causing deadlocks Fix a locking inversion in sip_send_mwi_to_peer that was causing deadlocks. This function now requires that both the peer and associated pvt be unlocked before it is called for cases where peer and peer->mwipvt form a circular reference. (closes issue ASTERISK-18663) Review: https://reviewboard.asterisk.org/r/1563/ 2011-11-07 19:36 +0000 [r343577] Richard Mudgett * channels/chan_sip.c: Fix deadlock if peer is destroyed while sending MWI notice. A dialog cannot be destroyed by the ao2_callback dialog_needdestroy because of a deadlock between the dialogs container lock and the RWLOCK of the events subscription list. * Create dialogs_to_destroy container to hold dialogs that will be destroyed. * Ensure that the event subscription callback will never happen with an invalid peer pointer by making the event callback removal the first thing in the peer destructor callback. (closes issue ASTERISK-18747) Reported by: Gregory Hinton Nietsky Review: https://reviewboard.asterisk.org/r/1564/ 2011-11-03 20:26 +0000 [r343375] Walter Doekes * res/res_config_sqlite.c: Fix sqlite config driver segfault and broken queries The sqlite realtime handler assumed you had a static config configured as well. The realtime multientry handler assumed that you weren't using dynamic realtime. (closes issue ASTERISK-18354) (closes issue ASTERISK-18355) Review: https://reviewboard.asterisk.org/r/1561 2011-11-03 19:56 +0000 [r343336] Richard Mudgett * funcs/func_dialgroup.c: Remove invalid flag given to iterator in func_dialgroup.c 2011-11-03 16:15 +0000 [r343281] Alexandr Anikin * addons/ooh323c/src/printHandler.c, addons/ooh323c/src/ooq931.c, addons/ooh323c/src/ooGkClient.c, addons/ooh323c/src/ooTimer.c, addons/ooh323c/src/dlist.c, addons/ooh323c/src/dlist.h: Final fix memleaks in GkClient codes, same for Timer codes. (these memleaks stop development of gk codes, now i can continue) Fix printHandler 'Unbalanced Structure' issues with locking printHandler data for single thread. 2011-11-03 15:33 +0000 [r343220-343276] Terry Wilson * channels/sip/include/sip.h: Make room for the fax detect flags The original REGISTERTRYING flag, in addition to being impossible to check, also encroached on the space for the flag above it. This patch moves the flags that were below REGISTERTRYING back to where they were as though we had just removed the REGISTERTRYING option. * channels/sip/include/sip.h, contrib/realtime/mysql/sippeers.sql, channels/chan_sip.c: Remove registertrying option in chan_sip This option is not only useless, but has been broken since inception since the flag was never copied from the peer where it is set to the pvt where it was checked. RFC 3261 specificially states that you should not send a provisional response to a non-INVITE request, and if we did fix the code so that it worked, it would cause the same kind of user enumeration vulnerability that we've discussed with the nat= setting. This patch removes registertrying option and any code that would have sent a 100 response to a register. Review: https://reviewboard.asterisk.org/r/1562/ 2011-11-02 22:21 +0000 [r343157-343181] Walter Doekes * channels/chan_sip.c: Fix improper warning introduced by r342927 and more tweaks Changeset r342927 introduced a warning which was only supposed to be emitted when a found realtime peer had an empty (or no) name. It turned out that there were some inconsistencies left. Now found peers with an empty name are explicitly ignored like before r342927 but better. Reviewed by: Stefan Schmidts, Terry Wilson Review: https://reviewboard.asterisk.org/r/1560 * main/utils.c, include/asterisk/stringfields.h, include/asterisk/utils.h: Ensure that string field lengths are properly aligned Integers should always be aligned. For some platforms (ARM, SPARC) this is more important than for others. This changeset ensures that the string field string lengths are aligned on *all* platforms, not just on the SPARC for which there was a workaround. It also fixes that the length integer can be resized to 32 bits without problems if needed. (closes issue ASTERISK-17310) Reported by: radael, S Adrian Reviewed by: Tzafrir Cohen, Terry Wilson Tested by: S Adrian Review: https://reviewboard.asterisk.org/r/1549 2011-11-02 19:32 +0000 [r343047-343102] Leif Madsen * apps/app_authenticate.c: Add note about how Authenticate() application with option 'd' works. (closes issue ASTERISK-17422) Reported by: Leif Madsen * configs/queues.conf.sample: Update documentation for leastrecent strategy. In queues.conf.sample the leastrecent strategy was incorrectly described. Now updated to reflect how the strategy actually checks peers. (closes issue ASTERISK-17854) Reported by: Sebastian Denz Patches: queues.conf-doc_issue.patch (License #6139) 2011-11-02 13:44 +0000 [r342990] Kevin P. Fleming * apps/app_meetme.c: Modify comments in MeetMe application documentation about DAHDI. The MeetMe application documentation has some comments about usage of DAHDI, and they were a bit outdated relative to modern DAHDI releases. This patch changes the comment to just tell the user that a functional DAHDI timing source is required, and no longer mention 'dahdi_dummy', since that module does not exist in current DAHDI releases. 2011-11-01 20:53 +0000 [r342869-342927] Walter Doekes * main/config.c, channels/chan_sip.c, configs/extconfig.conf.sample, include/asterisk/config.h: Several fixes to the chan_sip dynamic realtime peer/user lookup There were several problems with the dynamic realtime peer/user lookup code. The lookup logic had become rather hard to read due to lots of incremental changes to the realtime_peer function. And, during the addition of the sipregs functionality, several possibilities for memory leaks had been introduced. The insecure=port matching has always been broken for anyone using the sipregs family. And, related, the broken implementation forced those using sipregs to *still* have an ipaddr column on their sippeers table. Thanks Terry Wilson for comprehensive testing and finding and fixing unexpected behaviour from the multientry realtime call which caused the realtime_peer to have a completely unused code path. This changeset fixes the leaks, the lookup inconsistenties and that you won't need an ipaddr column on your sippeers table anymore (when you're using sipregs). Beware that when you're using sipregs, peers with insecure=port will now start matching! (closes issue ASTERISK-17792) (closes issue ASTERISK-18356) Reported by: marcelloceschia, Walter Doekes Reviewed by: Terry Wilson Review: https://reviewboard.asterisk.org/r/1395 * UPGRADE.txt, configs/res_ldap.conf.sample, res/res_realtime.c, configs/dbsep.conf.sample, main/config.c, contrib/realtime/mysql/sipfriends.sql (removed), contrib/realtime/mysql/sippeers.sql (added), configs/res_config_mysql.conf.sample, configs/extconfig.conf.sample: Cleanup references to sipusers and sipfriends dynamic realtime families Somewhere between 1.4 and 1.8 the sipusers family has become completely unused. Before that, the sipfriends family had been obsoleted in favor of separate sipusers and sippeers families. Apparently, they have been merged back again into a single family which is now called "sippeers". Reviewed by: irroot, oej, pabelanger Review: https://reviewboard.asterisk.org/r/1523 2011-10-31 15:58 +0000 [r342769] Matthew Jordan * channels/chan_iax2.c, main/pbx.c: Fixed invalid memory access when adding extension to pattern match tree When an extension is removed from a context, its entry in the pattern match tree is not deleted. Instead, the extension is marked as deleted. When an extension is removed and re-added, if that extension is also a prefix of another extension, several log messages would report an error and did not check whether or not the extension was deleted before accessing the memory. Additionally, if the extension was already in the tree but previously deleted, and the pattern was at the end of a match, the findonly flag was not honored and the extension would be erroneously undeleted. Additionaly, it was discovered that an IAX2 peer could be unregistered via the CLI, while at the same time it could be scheduled for unregistration by Asterisk. The unregistration method now checks to see if the peer was already unregistered before continuing with an unregistration. (closes issue ASTERISK-18135) Reported by: Jaco Kroon, Henry Fernandes, Kristijan Vrban Tested by: Matt Jordan Review: https://reviewboard.asterisk.org/r/1526 2011-10-29 04:19 +0000 [r342661] Richard Mudgett * tests/test_linkedlists.c, include/asterisk/linkedlists.h: Fix AST_LIST_INSERT_BEFORE_CURRENT() updating the wrong variable. AST_LIST_INSERT_BEFORE_CURRENT() could not be used twice in an iteration or before AST_LIST_REMOVE_CURRENT() without corrupting the list. AST_LIST_INSERT_BEFORE_CURRENT() could also corrupt the list if AST_LIST_INSERT_BEFORE_CURRENT() or AST_LIST_REMOVE_CURRENT() is used on the next iteration. * Fixed cut and paste error using the wrong variable in AST_LIST_INSERT_BEFORE_CURRENT(). * Added linked list unit tests for AST_LIST_INSERT_BEFORE_CURRENT(), AST_LIST_APPEND_LIST(), and AST_LIST_INSERT_LIST_AFTER(). 2011-10-27 19:34 +0000 [r342545-342602] Jonathan Rose * res/res_rtp_multicast.c: Fix sequence number overflow over 16 bits causing codec change in RTP packets. Sequence number was handled as an unsigned integer (usually 32 bits I think, more depending on the architecture) and was put into the rtp packet which is basically just a bunch of bits using an or operation. Sequence number only has 16 bits allocated to it in an RTP packet anyway, so it would add to the next field which just happened to be the codec. This makes sure the sequence number is set to be a 16 bit integer regardless of architecture (hopefully) and also makes it so the incrementing of the sequence number does bitwise or at the peak of a 16 bit number so that the value will be set back to 0 when going beyond 65535 anyway. (closes issue ASTERISK-18291) Reported by: Will Schick Review: https://reviewboard.asterisk.org/r/1542/ * res/res_jabber.c: Cleanup reference leaks in res_jabber res_jabber.c had a number of places where astobjs would be referenced and have their reference counts bumped without having a dereference made before the object lost scope. This patch adds a number of ASTOBJ_UNREFs to resolve that. Review: https://reviewboard.asterisk.org/r/1478/ 2011-10-25 22:04 +0000 [r342484-342487] Richard Mudgett * main/astobj2.c: Check fopen return value for ao2 reference debug output. Reported by: wdoekes Patched by: wdoekes Review: https://reviewboard.asterisk.org/r/1539/ * channels/sig_pri.c: Change D-channel warning to be less confusing on non-NFAS setups. The "No D-channels available! Using Primary channel as D-channel anyway!" WARNING message has been confusing on non-NFAS setups. The message refers to things that are NFAS specific. * Changed the warning to several different warnings to be more accurate for the situation and less confusing as a result: "No D-channels up! Switching selected D-channel from X to Y.", "No D-channels up!", and "D-channel is down!". 2011-10-25 21:08 +0000 [r342380-342435] Terry Wilson * apps/app_queue.c: Use int for storing ao2_container_count instad of size_t AST-676 * apps/app_queue.c: Simplify queue membercount code Despite an ominous sounding comment stating that membercount was for "logged in" members only and thus we couldn't use ao2_container_count(), I could not find a single place in the code where that seemed to be accurate. The only time we decremented membercount was when we were marking something dead or actually removing it. The only places we incremented it were either after ao2_link(), or trying to correct for having set it to 0 during a reload. In every case where we were correcting the value, it seemed that we were trying to make the count actually match what ao2_container_count() would return. The only place I could find where we made a determination about something being "logged in" or not, we didn't trust the membercount, but instead looked at devicestate, paused, etc. This patch removes membercount, replaces its use with ao2_container_count, and manually adds the results of ao2_container_count to a "membercount" field for ast_data queue query results. This patch also would fix AST-676, but as it is slightly riskier than the previously committed fix, the two commits have been made separately. Reivew: https://reviewboard.asterisk.org/r/1541/ * apps/app_queue.c: Properly update membercount for reloaded members Since q->membercount is set to 0 before reloading, it is important to increment it again for reloaded members as well as added. (closes issue AST-676) Review: https://reviewboard.asterisk.org/r/1541/ 2011-10-25 19:08 +0000 [r342276-342328] Kinsey Moore * pbx/pbx_spool.c: Fix compilation on Snow Leopard/FreeBSD for pbx_spool.c One of the changes in the recent spool handling of hardlinks patch was just outside a HAVE_INOTIFY block and caused compilation to fail in some build environments. This has been corrected. * pbx/pbx_spool.c: Fix spool handling to allow call files to be hardlinked into place This fixes the inotify code to handle call files being hardlinked into the spool directory. The smsq utility does this, instead of rename(), to ensure that it cannot accidentally overwrite an existing spool file. A rename() might do that, but link() will definitely not. The inotify code had broken this, because it would wait for an IN_CLOSE_WRITE event on the file... which was never forthcoming, since it was never opened. Now we look for IN_OPEN events following the IN_CREATE event, and only wait for an IN_CLOSE_WRITE if the file was actually opened. Patch-by: dwmw2 (closes issue ASTERISK-18331) Review: https://reviewboard.asterisk.org/r/1391/ 2011-10-25 01:23 +0000 [r342223] Terry Wilson * main/config.c, include/asterisk/config.h: Return NULL when no results returned for realtime_multientry It was not documented what the return value should be when no entries were returned with the multientry realtime callback. This change forces consistent behavior even if the backends return an empty ast_config. Review: https://reviewboard.asterisk.org/r/1521/ 2011-10-24 19:49 +0000 [r342061] Jonathan Rose * channels/chan_sip.c: Outbound SIP OPTIONS messages will now include fromuser of related peer. This behavior matches up more closely with the way invite/register/etc are handled. This patch also modifies some adjacent code for code style compliance. Pretty minor. (closes issue ASTERISK-17616) Reported by: Jeremy Kister Patches: chan_sip.c-options-fromuser-fix-v1.patch uploaded by Jeremy Kister (license #6232) 2011-10-23 11:36 +0000 [r341906-341921] Gregory Nietsky * apps/app_queue.c: Revert Janitor patch 341906 For now * apps/app_queue.c: Whitespace Fixups / Add Braces This janitorial patch is related to work on RB1538 2011-10-21 16:41 +0000 [r341806-341809] Matthew Nicholson * pbx/pbx_lua.c: only process args that exist ASTERISK-18395 * pbx/pbx_lua.c: don't limit the length of app and function arguments ASTERISK-18395 2011-10-20 21:54 +0000 [r341717] Richard Mudgett * include/asterisk/features.h, main/features.c, res/res_agi.c: Fix AGI exec Park to honor the Park application parameters. The fix for ASTERISK-12715 and ASTERISK-12685 added a check for the Park application because the channel needed to be masqueraded to prevent a crash. Since the Park application now always masquerades the channel into the parking lot, the special check is no longer needed. The fix also resulted in AGI exec Park attempting to double park the call and not honor the Park application parameters. * Removed no longer necessary call to ast_masq_park_call() by AGI exec for the Park application. (Reverts -r146923) * Fix Park application to only return 0 or -1. The AGI exec Park was causing broken pipe error messages because the Park application returned 1 on successful park. (closes issue ASTERISK-18737) 2011-10-20 21:26 +0000 [r341664-341704] Paul Belanger * funcs/func_callerid.c: Fixed typo from previous commit * funcs/func_callerid.c: Updated documentation for the optional CID parameter with CALLERID 2011-10-20 15:11 +0000 [r341529] Terry Wilson * include/asterisk/strings.h: Clean up ast_check_digits The code was originally copied from the is_int() function in the AEL code. wdoekes pointed out that the function should take a const char* and that their was an unneeded variable. This is now fixed. 2011-10-19 18:59 +0000 [r341435] Paul Belanger * channels/chan_gtalk.c: Outgoing calls with Google Voice Google has recently make some changes (again) to their protocol. Rather then patching asterisk to flip between the two different methods, we now allow both. Lets hope this keeps Google Voice happy for a while. (closes issue ASTERISK-18714) Reported by: Iordan Iordanov Patches: chan_gtalk.patch uploaded by Iordan Iordanov (licenses 6311) 2011-10-19 07:38 +0000 [r341379] Terry Wilson * include/asterisk/strings.h, channels/chan_sip.c: Don't use is_int() since it doesn't link well on all platforms Just create an normal API function in strings.h that does the same thing just to be safe. ASTERISK-17146 2011-10-19 07:15 +0000 [r341366] Stefan Schmidt * channels/chan_sip.c: Don't sent in-dialog requests like UPDATE when Asterisk has not yet received a Contact URI from a UAS 2011-10-18 23:37 +0000 [r341314] Terry Wilson * channels/chan_sip.c: Don't resolve numeric hosts or contact unresolved hosts If a SIP dial string contains a numeric hostname that is not a peer name, don't try to resolve it as it is unlikely that someone really means Dial(SIP/0.0.4.26) when Dial(SIP/1050) is called. Also, make sure that create_addr returns -1 if an address isn't resolved so that we don't attempt to send SIP requests to an address that doesn't resolve. (closes issue ASTERISK-17146, ASTERISK-17716) Review: https://reviewboard.asterisk.org/r/1532/ 2011-10-18 23:20 +0000 [r341312] Alexandr Anikin * addons/chan_ooh323.c: fix issue on channel numbering (calls could have same channel number on heavy loaded system) 2011-10-18 21:03 +0000 [r341254] Richard Mudgett * channels/chan_iax2.c, channels/sip/include/sip.h, channels/chan_mgcp.c, include/asterisk/features.h, channels/chan_dahdi.c, channels/sig_analog.c, channels/chan_sip.c, main/features.c: More parking issues. * Fix potential deadlocks in SIP and IAX blind transfer to parking. * Fix SIP, IAX, DAHDI analog, and MGCP channel drivers to respect the parkext_exclusive option with transfers (Park(,,,,,exclusive_lot) parameter). Created ast_park_call_exten() and ast_masq_park_call_exten() to maintian API compatibility. * Made masq_park_call() handle a failed ast_channel_masquerade() setup. * Reduced excessive struct parkeduser.peername[] size. 2011-10-17 17:35 +0000 [r341189] Terry Wilson * channels/chan_sip.c: Initialize variables before calling parse_uri If parse_uri was called with an empty URI, some pointers would be modified and an invalid read could result. This patch avoids calling parse_uri with an empty contact uri when parsing REGISTER requests. AST-2011-012 (closes issue ASTERISK-18668) 2011-10-17 16:23 +0000 [r341108-341112] Paul Belanger * apps/app_voicemail.c: Fix previous commit * apps/app_voicemail.c: Voicemail compiler flags are 'core' support 2011-10-17 15:35 +0000 [r341088] Terry Wilson * channels/chan_sip.c: Don't try to remove peers without IPs from peers_by_ip (closes issue ASTERISK-18696) 2011-10-17 15:08 +0000 [r341074] Tzafrir Cohen * pbx/pbx_realtime.c: Remove an unused include of md5.h Unused include of asterisk/md5.h in pbx_realtime.c . A commit needed to test the commit message. 2011-10-14 21:36 +0000 [r341022] Kevin P. Fleming * build_tools/embed_modules.xml, Makefile.moddir_rules: Change the internal name of the menuselect options that are used to control whether modules are embedded or not; using just the bare category name led to accidentally enabling these options when users used the wrong "--enable" operation on the menuselect command line. Now the internal option names are prefixed with "EMBED_", so they won't be the same as the name of the category containing the modules they control the embedding of. 2011-10-14 20:49 +0000 [r340970] Kinsey Moore * res/res_rtp_asterisk.c, channels/chan_sip.c: Quiet RTCP Receiver Reports during fax transmission RTCP is now disabled for "inactive" RTP audio streams during SIP T.38 sessions. The ability to disable RTCP streams in res_rtp_asterisk was missing, so this code was added to support the bug fix. (closes issue ASTERISK-18400) 2011-10-14 16:33 +0000 [r340878] Terry Wilson * main/channel.c: Avoid unnecessary WARNING message Add AST_CONTROL_UPDATE_RTP_PEER frame to be ignored here to avoid displaying a WARNING message. (closes issue ASTERISK-18610) Patch by: Kristijan_Vrban 2011-10-14 15:58 +0000 [r340863] Jonathan Rose * codecs/codec_dahdi.c, apps/app_system.c, res/res_curl.c, funcs/func_realtime.c, build_tools/cflags.xml, utils/utils.xml, res/res_fax.c, apps/app_celgenuserevent.c: Fixes some support level info so that it can be read by menuselect. (issue ASTERISK-18268) Review: https://reviewboard.asterisk.org/r/1525/ 2011-10-13 22:48 +0000 [r340809] Richard Mudgett * main/features.c: Fix DTMF blind transfer continuing to execute dialplan after transfer. Party A calls Party B. Party A DTMF blind transfers Party B to Party C. Party A channel continues to execute dialplan. * Fixed the return value of builtin_blindtransfer() to return the correct value after a transfer so the dialplan will not keep executing. * Removed unnecessary connected line update that did not really do anything. * Made access to GOTO_ON_BLINDXFR thread safe in check_goto_on_transfer(). * Fixed leak of xferchan for failure cases in check_goto_on_transfer(). * Updated debug messages in builtin_blindtransfer() and check_goto_on_transfer(). (closes issue ASTERISK-18275) Reported by: rmudgett Tested by: rmudgett 2011-10-13 06:58 +0000 [r340717] Stefan Schmidt * channels/chan_sip.c: storing the route-set also on a 181 response not only on 180,182 or 183. 2011-10-13 06:52 +0000 [r340662-340715] Terry Wilson * channels/chan_sip.c: Initialize ast_sockaddr before calling ast_sockaddr_resolve Avoid possible jump based on unitialized value * res/res_config_sqlite.c: Don't skip the query field on a realtime multi query There is no documented reason to not add the query field to the varlist returned by a realtime multi query, despite the config category being set to its value. Of course, there is no documentation that the category should be set to the value either. There is lots of no documentation when it comes to realtime. But, other engines do not skip this field so I am forcing this backend to follow the convention, because not doing so is very silly. 2011-10-12 20:30 +0000 [r340576] Stefan Schmidt * channels/chan_sip.c: Store route-set from provisional SIP responses so early-dialog requests can be routed properly 2011-10-12 20:19 +0000 [r340534] Terry Wilson * channels/chan_sip.c: Update SIP realtime fullcontact regardless of caching We should update the fullcontact field in the realtime table whether or not rtcachefriends is set. There is no reason to treat a non-cached realtime entity differently than a cached in this regard. (closes issue ASTERISK-18446) Reported by: wdoekes 2011-10-12 20:07 +0000 [r340470-340522] Richard Mudgett * channels/chan_dahdi.c: Initialize the PRI channel alarms properly on startup. The PRI channel alarms were initialized with an inverted sense. (closes issue ASTERISK-18710) Reported by: Tzafrir Cohen * apps/app_meetme.c: Update MeetMe p and X option documentation when interacting with the s option. ASTERISK-12175 changed the p and X options to not interfere with the s option when they are used together. It makes more sense for the s option to have priority for the DTMF '*' key since it cannot change its activation code. Otherwise, you could not use option s with the p or X options. JIRA AST-671 2011-10-12 16:27 +0000 [r340418] Paul Belanger * channels/chan_sip.c: Fix verbose messages when IPv6 logic was added (closes issue ASTERISK-18612) Reported by: Tim Osman 2011-10-11 21:03 +0000 [r340279-340365] Richard Mudgett * channels/sig_ss7.c, channels/chan_dahdi.c, channels/sig_ss7.h: Add protection for SS7 channel allocation and better glare handling. * Added a CLI "ss7 show channels" command that might prove useful for future debugging. * Made the incoming SS7 channel event check and gripe message uniform. * Made sure that the DNID string for an incoming call is always initialized. (issue ASTERISK-17966) Reported by: Kenneth Van Velthoven Patches: jira_asterisk_17966_v1.8_glare.patch (license #5621) patch uploaded by rmudgett * channels/sip/include/dialog.h, channels/chan_sip.c: Fix some potential deadlocks pointed out by helgrind. * Fixed deadlock potential calling dialog_unlink_all() in __sip_autodestruct(). Found by helgrind. * Fixed deadlock potential in handle_request_invite() after calling sip_new(). Found by helgrind. * The sip_new() function now returns with the created channel already locked. * Removed the dead code that starts a PBX in in sip_new(). No sip_new() callers caused that code to be executed and it was a bad thing to do anyway. * Removed unused parameters and return value from dialog_unlink_all(). * Made dialog_unlink_all() and __sip_autodestruct() safely obtain the owner and private channel locks without a deadlock avoidance loop. * include/asterisk/manager.h, main/manager.c: Convert registered AMI actions to ao2 objects. * Fixed race between calling an AMI action callback and unregistering that action. Refixes ASTERISK-13784 broken by ASTERISK-17785 change. * Fixed potential memory leak if an AMI action failed to get registered because is already was registered. Part of the ao2 conversion. * Fixed AMI ListCommands action not walking the actions list with a lock held. * Fix usage of ast_strdupa() and alloca() in loops. Excess stack usage. * Fix AMI Originate action Variable header requiring a space after the header colon. Reported by Yaroslav Panych on the asterisk-dev list. * Increased the number of listed variables allowed per AMI Originate action Variable header to 64. * Fixed AMI GetConfigJSON action output format. * Fixed usage of res contents outside of scope in append_channel_vars(). * Fixed inconsistency of config file channelvars option. The values no longer accumulate with every channelvars option in the config file. Only the last value is kept to be consistent with the CLI "manager show settings" command. (closes issue ASTERISK-18479) Reported by: Jaco Kroon 2011-10-11 00:43 +0000 [r340263] Tzafrir Cohen * include/asterisk/sha1.h, main/channel.c, main/sha1.c: Update SHA1 code to RFC 6234 RFC 6234 is an update to RFC 3174 from which the code was originally taken. It has a slightly better code, and a better phrased license (simple 3-clause BSD). * main/sha1.c is sha1.c from RFC 6234 with formatting changes only. * include/asterisk/sha1.h merges sha.h and sha-private.h from RFC 6234. * Removed unused include of asterisk/sha1.h from main/channels.c Review: https://reviewboard.asterisk.org/r/1503/ 2011-10-10 20:23 +0000 [r340164] Matthew Jordan * channels/chan_sip.c: Updated chan_sip to place calls on hold if SDP address in INVITE is ANY This patch fixes the case where an INVITE is received with c=0.0.0.0 or ::. In this case, the call should be placed on hold. Previously, we checked for the address being null; this patch keeps that behavior but also checks for the ANY IP addresses. Review: https://reviewboard.asterisk.org/r/1504/ (closes issue ASTERISK-18086) Reported by: James Bottomley Tested by: Matt Jordan 2011-10-10 14:14 +0000 [r340108] Matthew Nicholson * doc/appdocsxml.dtd, main/loader.c, main/xmldoc.c, main/pbx.c, main/manager.c, res/res_fax.c, apps/app_fax.c, include/asterisk/module.h, res/res_agi.c, include/asterisk/xmldoc.h: Load the proper XML documentation when multiple modules document the same application. This patch adds an optional "module" attribute to the XML documentation spec that allows the documentation processor to match apps with identical names from different modules to their documentation. This patch also fixes a number of bugs with the documentation processor and should make it a little more efficient. Support for multiple languages has also been properly implemented. ASTERISK-18130 Review: https://reviewboard.asterisk.org/r/1485/ 2011-10-09 01:16 +0000 [r339830-339938] Igor Goncharovskiy * channels/chan_unistim.c: Fix compilation issue, caused by missed session structure (closes issue ASTERISK-18694) Reported by: alex70 * channels/chan_unistim.c: Fix segfault in Unistim channel (closes issue ASTERISK-18638) Reported by: jonnt * channels/chan_unistim.c: Fix char array cast as short array in send_client() function (for ARM platform) (closes issue ASTERISK-17314) Reported by: jjoshua 2011-10-07 19:34 +0000 [r339625-339776] Richard Mudgett * apps/app_url.c: Initialize option flags for SendURL application. (closes issue ASTERISK-18574) Reported by: marcelloceschia * autoconf/ast_ext_lib.m4, configure, include/asterisk/autoconfig.h.in, configure.ac: Fix regression in configure script for libpri capability checks. JIRA AST-598 added the PRI_L2_PERSISTENCE option to fix BRI PTMP TE layer 2 persistence issues with some telcos. ASTERISK-18535 attempted to fix the unexpected requirement that libpri *must* have that feature to work with Asterisk. The AST_EXT_LIB_SETUP_DEPENDENT lines made the PRI optional features required. Unfortunately, I thought AST_EXT_LIB_SETUP_DEPENDENT didn't do anything useful for libpri and deleted those lines for libpri. The result was the HAVE_PRI_xxx defines that control the ability to use optional libpri features were also deleted. * Created AST_EXT_LIB_SETUP_OPTIONAL configuration macro to allow optional features in a library that the source code could take advantage of if the code supports the feature. (closes issue ASTERISK-18687) Reported by: Norbert Tested by: rmudgett * main/udptl.c, channels/chan_sip.c: Fix debugging messages generated by 'udptl debug'. * Makes chan_sip set the tag to the channel name. * Fixes received debug message sequence number. * Removed tx/rx debug message type since it was hard coded to 0. * Made udptl.c logged message header consistent if possible: "UDPTL (%s): ". * Removed unused rx_expected_seq_no from struct ast_udptl. (closes issue ASTERISK-18401) Reported by: Kevin P. Fleming Patches: jira_asterisk_18401_v1.8.patch (license #5621) patch uploaded by rmudgett Tested by: Matthew Nicholson 2011-10-05 21:30 +0000 [r339566] Leif Madsen * build_tools/prep_tarball: Update prep_tarball script to download pre-exported documentation. I've updated the prep_tarball script to now download the pre-exported documentation from the Asterisk wiki. This will give us more control over what is being included in the tarball releases, and will make both the PDF and HTML exported documentation look much better (especially when viewing from a console). (Closes issue ASTERISK-18677) 2011-12-15 Asterisk Development Team * Asterisk 1.8.8.0 Released. 2011-12-09 Asterisk Development Team * Asterisk 1.8.8.0-rc5 Released. * Fixed crash from orphaned MWI subscriptions in chan_sip This patch resolves the issue where MWI subscriptions are orphaned by subsequent SIP SUBSCRIBE messages. When a peer is removed, either by pruning realtime SIP peers or by unloading / loading chan_sip, the MWI subscriptions that were orphaned would still be on the event engine list of valid subscriptions but have a pointer to a peer that no longer was valid. When an MWI event would occur, this would cause a seg fault. (closes issue ASTERISK-18663) Review: https://reviewboard.asterisk.org/r/1610/ * Don't crash on INFO automon request with no channel AST-2011-014. When automon was enabled in features.conf, it was possible to crash Asterisk by sending an INFO request if no channel had been created yet. (closes issue ASTERISK-18805) * Default to nat=yes; warn when nat in general and peer differ AST-2011-013. It is possible to enumerate SIP usernames when the general and user/peer nat settings differ in whether to respond to the port a request is sent from or the port listed for responses in the Via header. In 1.4 and 1.6.2, this would mean if one setting was nat=yes or nat=route and the other was either nat=no or nat=never. In 1.8 and 10, this would mean when one was nat=force_rport and the other was nat=no. In order to address this problem, it was decided to switch the default behavior to nat=yes/force_rport as it is the most commonly used option and to strongly discourage setting nat per-peer/user when at all possible. For more discussion of the issue, please see: http://lists.digium.com/pipermail/asterisk-dev/2011-November/052191.html (closes issue ASTERISK-18862) Review: https://reviewboard.asterisk.org/r/1591/ 2011-11-16 Asterisk Development Team * Asterisk 1.8.8.0-rc4 Released. * Ensure that a null vmexten does not cause a segfault. When sip_send_mwi_to_peer was modified recently to avoid deadlocks, vmexten was not expected to be null. This change handles that situation to avoid a segfault. (closes issue ASTERISK-18663) 2011-11-09 Asterisk Development Team * Asterisk 1.8.8.0-rc3 Released. * Prevent BLF subscriptions from causing deadlocks Fix a locking inversion in sip_send_mwi_to_peer that was causing deadlocks. This function now requires that both the peer and associated pvt be unlocked before it is called for cases where peer and peer->mwipvt form a circular reference. (closes issue ASTERISK-18663) Review: https://reviewboard.asterisk.org/r/1563/ * Fix deadlock if peer is destroyed while sending MWI notice. A dialog cannot be destroyed by the ao2_callback dialog_needdestroy because of a deadlock between the dialogs container lock and the RWLOCK of the events subscription list. * Create dialogs_to_destroy container to hold dialogs that will be destroyed. * Ensure that the event subscription callback will never happen with an invalid peer pointer by making the event callback removal the first thing in the peer destructor callback. (closes issue ASTERISK-18747) Reported by: Gregory Hinton Nietsky Review: https://reviewboard.asterisk.org/r/1564/ * Fix issue with setting defaultenabled on categories that are already enabled by default. (closes issue ASTERISK-18738) Reported by: Paul Belanger 2011-10-18 Asterisk Development Team * Asterisk 1.8.8.0-rc2 Released. * AST-2011-012 * menuselect/menuselect.c: Fix --enable/--enable-category. ------------------------------------------------------------------------ r339719 | rmudgett | 2011-10-06 17:47:50 -0500 (Thu, 06 Oct 2011) | 20 lines Fix regression in configure script for libpri capability checks. JIRA AST-598 added the PRI_L2_PERSISTENCE option to fix BRI PTMP TE layer 2 persistence issues with some telcos. ASTERISK-18535 attempted to fix the unexpected requirement that libpri *must* have that feature to work with Asterisk. The AST_EXT_LIB_SETUP_DEPENDENT lines made the PRI optional features required. Unfortunately, I thought AST_EXT_LIB_SETUP_DEPENDENT didn't do anything useful for libpri and deleted those lines for libpri. The result was the HAVE_PRI_xxx defines that control the ability to use optional libpri features were also deleted. * Created AST_EXT_LIB_SETUP_OPTIONAL configuration macro to allow optional features in a library that the source code could take advantage of if the code supports the feature. (closes issue ASTERISK-18687) Reported by: Norbert Tested by: rmudgett ------------------------------------------------------------------------ r340878 | twilson | 2011-10-14 11:33:28 -0500 (Fri, 14 Oct 2011) | 8 lines Avoid unnecessary WARNING message Add AST_CONTROL_UPDATE_RTP_PEER frame to be ignored here to avoid displaying a WARNING message. (closes issue ASTERISK-18610) Patch by: Kristijan_Vrban ------------------------------------------------------------------------ r341088 | twilson | 2011-10-17 10:35:05 -0500 (Mon, 17 Oct 2011) | 4 lines Don't try to remove peers without IPs from peers_by_ip (closes issue ASTERISK-18696) ------------------------------------------------------------------------ 2011-10-05 Asterisk Development Team * Asterisk 1.8.8.0-rc1 Released. 2011-10-05 21:30 +0000 [r339566] Leif Madsen * build_tools/prep_tarball: Update prep_tarball script to download pre-exported documentation. I've updated the prep_tarball script to now download the pre-exported documentation from the Asterisk wiki. This will give us more control over what is being included in the tarball releases, and will make both the PDF and HTML exported documentation look much better (especially when viewing from a console). (Closes issue ASTERISK-18677) 2011-10-05 17:01 +0000 [r339506-339511] Richard Mudgett * apps/app_dial.c: Fix Dial F option notes formatting. * main/manager.c: Fix XML error in AMI action Challenge. 2011-10-05 16:31 +0000 [r339505] Matthew Nicholson * res/res_fax.c: The app name in the documentation must match what we register the application as. 2011-10-05 16:26 +0000 [r339406-339504] Richard Mudgett * main/manager.c: Add missing documentation of required AMI action Challenge AuthType header. (closes issue ASTERISK-18554) Reported by: Vlad Povorozniuc Patches: __20110919-manager-challenge-docs.patch.txt (license #4999) patch uploaded by Leif Madsen * Makefile: Make always create the MOH directory (/var/lib/asterisk/moh). (closes issue ASTERISK-18409) Reported by: abelbeck Patches: asterisk-1.8-makefile-moh.patch (license #5903) patch uploaded by abelbeck Tested by: abelbeck, Michael Keuter 2011-10-04 19:33 +0000 [r339297-339352] Jonathan Rose * main/say.c: Removes improper use of sound 'and' in German language mode from application saynumber Asterisk would say 'Five hundert und sechs und zwanzig' instead of 'Five hundert sechs und zwanzig'... which is both weird sounding and wrong. This patch makes sure Asterisk will only say the 'and' word between the single digit and double digit places. (closes issue ASTERISK-18212) Reported By: Lionel Elie Mamane Patches: upstream_germand_no_and.diff (License #5402) uploaded by Lionel Elie Mamane * res/res_jabber.c: Reverting revision 333265 due to component connection problems it introduces. I'm going to attempt some generic res_jabber cleanup and come up with a new fix for this problem, but first it seems prudent to remove this rather broad attempt to fix it and instead approach this problem either from the same angle but looking only at canceling (or possibly rescheduling) the send when we absolutely know it will cause a segfault or, if that can't be easily accomplished, strictly from the devstate side of things. Also, I'm pretty sure a lot of the code in res_jabber isn't thread safe. (issue ASTERISK-18626) (issue ASTERISK-18078) 2011-10-04 11:44 +0000 [r339244] Alexandr Anikin * addons/ooh323c/src/memheap.c: fix forget declaration in previous change 2011-10-03 20:12 +0000 [r339144-339147] Leif Madsen * channels/chan_sip.c: Remove duplicated Maxforwards line in AMI output. (Closes issue ASTERISK-18637) Reported by: Jacek Konieczny Patches: asterisk-sipshowpeer.patch (License #6298) uploaded by Jacek Konieczny * apps/app_dial.c: Make documentation for Dial() options 'F' and 'F()' more clear. (Closes issue ASTERISK-18646) Reported by: Physis Heckman Tested by: Richard Mudgett 2011-10-03 18:42 +0000 [r339087] Alexandr Anikin * addons/ooh323c/src/memheap.c: destroy memheap mutex properly before memheap deleted (fix memory leak occured after r304950 changes with DEBUG_THREAD compile option) 2011-10-03 18:40 +0000 [r339086] Terry Wilson * channels/chan_sip.c, main/file.c: Properly ignore AST_CONTROL_UPDATE_RTP_PEER in more places After the change in r336294, the new AST_CONTROL_UPDATE_RTP_PEER frame is sent when a re-invite happens. If we receive a re-invite from a device the waitstream_core was not aware of the new control frame and would drop the call. (closes issue ASTERISK-18610) Reported by: Kristijan_Vrban 2011-09-30 22:05 +0000 [r338800] Richard Mudgett * channels/chan_dahdi.c: Fix segfault in analog_ss_thread() not checking ast_read() for NULL. NOTE: The problem was reported against v1.6.2. It is unlikely to ever happen on v1.8 and above since chan_dahdi.c:analog_ss_thread() is unlikely to be used. The version in sig_analog.c has largely replaced it. (closes issue ASTERISK-18648) Reported by: Stephan Bosch Patches: jira_asterisk_18648_v1.8.patch (license #5621) patch uploaded by rmudgett Tested by: Stephan Bosch 2011-09-30 18:54 +0000 [r338718] Jonathan Rose * configs/queues.conf.sample: Adds documentation for QueueMemberStatus event generation 2011-09-30 16:27 +0000 [r338663] Richard Mudgett * channels/chan_sip.c: Fix formatting of AMI header for SIP show peer. ASTERISK-17486 exposed the problem for AMI parsers. (closes issue ASTERISK-18649) Reported by: Jacek Konieczny Patches: asterisk-sipshowpeer_response_end.patch (license #6298) patch uploaded by Jacek Konieczny 2011-09-30 09:31 +0000 [r338609] TransNexus OSP Development * apps/app_osplookup.c, configure.ac: Remove r338137 and r338138. 2011-09-29 21:12 +0000 [r338555] Paul Belanger * tests/test_linkedlists.c, tests/test_amihooks.c, tests/test_security_events.c, tests/test_locale.c, tests/test_logger.c, tests/test_dlinklists.c: Test modules should depend on the TEST_FRAMEWORK flag 2011-09-29 20:54 +0000 [r338551] Jason Parker * tests/test_db.c, tests/test_netsock2.c: Test modules have a support level of core. 2011-09-29 18:31 +0000 [r338492] Leif Madsen * channels/chan_sip.c: Update documentation for SIP_HEADER. The SIP_HEADER function only works on the the initial SIP INVITE. The documentation was updated in trunk, but not in 1.8 or 10, so I'm making them match. (Closes issue ASTERISK-18640) 2011-09-29 12:13 +0000 [r338416] Gregory Nietsky * channels/sip/include/sip.h, channels/chan_sip.c: The rtptimeout setting is ignored on a per peer basis. Not only is the rtptimeout ignored in some cases but rtpkeepalive and rtpholdtimeout is affected. this commit also removes rtptimeout/rtpholdtimeout on text rtp. (closes issue ASTERISK-18559) Review: https://reviewboard.asterisk.org/r/1452 2011-09-28 22:35 +0000 [r338235-338322] Richard Mudgett * channels/sig_pri.c: Make duplicate call ptr warning message more helpful. * Adds the value of the call ptr to the duplicate call ptr message to help trace why there is a duplicate call ptr. * include/asterisk/logger.h: Fix inconsistency in LOG_VERBOSE/AST_LOG_VERBOSE declaration. (closes issue ASTERISK-17973) Reported by: Luke H Patches: logger_h.patch (license #6278) patch uploaded by Luke H 2011-09-28 20:52 +0000 [r338227] Jason Parker * tests/test_db.c, tests/test_netsock2.c, build_tools/cflags.xml, channels/chan_usbradio.c, build_tools/cflags-devmode.xml, agi/agi.xml, utils/utils.xml, build_tools/embed_modules.xml: Add support levels to non-module sections of menuselect (cflags, utils, etc). 2011-09-28 20:24 +0000 [r338224] Richard Mudgett * channels/chan_dahdi.c: Fix chan_dahd compiling with gcc 4.6 when PRI and SS7 not present. (closes issue ASTERISK-18357) Reported by: Matthew Nicholson 2011-09-28 07:28 +0000 [r338137-338138] TransNexus OSP Development * configure.ac: Updated for checking OSP Toolkit version 4.0.0. * apps/app_osplookup.c: Updated for OSP Toolkit 4.0.0. 2011-09-27 20:10 +0000 [r338084] Paul Belanger * apps/app_macro.c: Upgrade app_macro to core 2011-09-26 19:30 +0000 [r337973] Richard Mudgett * include/asterisk/channel.h, main/cel.c, main/manager.c, funcs/func_odbc.c, cel/cel_custom.c, apps/app_minivm.c, main/logger.c, cel/cel_sqlite3_custom.c, cdr/cdr_manager.c, cdr/cdr_custom.c, apps/app_voicemail.c, apps/app_dial.c, main/pbx.c, cdr/cdr_sqlite3_custom.c, cdr/cdr_syslog.c, tests/test_gosub.c, include/asterisk/cel.h: Fix deadlock when using dummy channels. Dummy channels created by ast_dummy_channel_alloc() should be destoyed by ast_channel_unref(). Using ast_channel_release() needlessly grabs the channel container lock and can cause a deadlock as a result. * Analyzed use of ast_dummy_channel_alloc() and made use ast_channel_unref() when done with the dummy channel. (Primary reason for the reported deadlock.) * Made app_dial.c:dial_exec_full() not call ast_call() holding any channel locks. Chan_local could not perform deadlock avoidance correctly. (Potential deadlock exposed by this issue. Secondary reason for the reported deadlock since the held lock was part of the deadlock chain.) * Fixed some uses of ast_dummy_channel_alloc() not checking the returned channel pointer for failure. * Fixed some potential chan=NULL pointer usage in func_odbc.c. Protected by testing the bogus_chan value. * Fixed needlessly clearing a 1024 char auto array when setting the first char to zero is enough in manager.c:action_getvar(). (closes issue ASTERISK-18613) Reported by: Thomas Arimont Patches: jira_asterisk_18613_v1.8.patch (license #5621) patch uploaded by rmudgett Tested by: Thomas Arimont 2011-09-23 19:14 +0000 [r337839-337898] Gregory Nietsky * contrib/init.d/rc.archlinux.asterisk: Spelling fix * apps/app_queue.c: Make sure a CDR is on the stack for call in the Queue. Only let update_cdr act on the last CDR in the stack. In some circumstances [Attended transfer to queue] a CDR record is not inserted for this call where it should. (closes issue ASTERISK-18567) Review: https://reviewboard.asterisk.org/r/1266 2011-09-23 00:44 +0000 [r337774] Russell Bryant * configs/res_pktccops.conf.sample: Comment out entries in sample res_pktccops.conf. With these options enabled, they can cause Asterisk to freak out by SYN flooding a network and eating the CPU. Obviously it would be good to fix the code so that this can't happen, but we can at least change the default configuration so it doesn't happen. This was reported downstream to the Fedora issue tracker: https://bugzilla.redhat.com/show_bug.cgi?id=658431 2011-09-22 21:29 +0000 [r337720] Richard Mudgett * channels/sig_pri.c: Made ISDN not add numbering plan prefix strings to empty numbers. When the Caller-ID is restricted, the expected behavior is for the Caller-ID to be blank. In chan_dahdi, the national prefix is placed onto the Caller-ID number even if it is restricted (empty) causing the Caller-ID to be the national prefix rather than blank. This behavior was lost when sig_pri was extracted from chan_dahdi. * Made not add prefix strings to empty connected line, calling, and ANI number strings. (closes issue ASTERISK-18577) Reported by: Kris Shaw Patches: jira_asterisk_18577_v1.8.patch (license #5621) patch uploaded by rmudgett Tested by: Kris Shaw 2011-09-22 11:39 +0000 [r337430-337541] Gregory Nietsky * res/res_srtp.c: Add warned to ast_srtp to prevent errors on each frame from libsrtp The first 9 frames are not reported as some devices dont use srtp from first frame these are suppresed. the warning is then output only once every 100 frames. * channels/chan_h323.c: If IP address is used in chan_h323 host parameter of peer configuration. module tries to resolve IP address to IP address and fails. Simple fix to set family of socket this is a hangover from ipv6 changes. (closes issue ASTERISK-18237) (issue ASTERISK-17278) (issue ASTERISK-17500) * main/channel.c: Its possible to loose audio on ast_write when the channel is not transcoded correctly. in the case of DAHDI the channel is hungup. This patch tries to "fix" the problem and make the channel compatiable and warn the user of this problem. Please note there is a underlying problem with codec negotion this does not fix the problem it does try to rectify it and prevent loss of service. Review: https://reviewboard.asterisk.org/r/1442/ (closes issue ASTERISK-17541) (closes issue ASTERISK-18063) (issue ASTERISK-14384) (issue ASTERISK-17502) (issue ASTERISK-18325) (issue ASTERISK-18422) 2011-09-21 21:18 +0000 [r337325-337353] Tilghman Lesher * apps/app_voicemail.c: More silly spacing changes * apps/app_voicemail.c: Dumb little spacing fix. * funcs/func_curl.c: Escape commas in keys and values, when keys and values are enumerated by commas. Review: https://reviewboard.asterisk.org/r/1433 2011-09-20 22:38 +0000 [r337118] Matthew Jordan * main/app.c, apps/app_followme.c, apps/app_voicemail.c, apps/app_dial.c, include/asterisk/app.h, apps/app_meetme.c, apps/app_minivm.c: Fix for incorrect voicemail duration in external notifications This patch fixes an issue where the voicemail duration was being reported with a duration significantly less than the actual sound file duration. Voicemails that contained mostly silence were reporting the duration of only the sound in the file, as opposed to the duration of the file with the silence. This patch fixes this by having two durations reported in the __ast_play_and_record family of functions - the sound_duration and the actual duration of the file. The sound_duration, which is optional, now reports the duration of the sound in the file, while the actual full duration of the file is reported in the duration parameter. This allows the voicemail applications to use the sound_duration for minimum duration checking, while reporting the full duration to external parties if the voicemail is kept. (issue ASTERISK-2234) (closes issue ASTERISK-16981) Reported by: Mary Ciuciu, Byron Clark, Brad House, Karsten Wemheuer, KevinH Tested by: Matt Jordan Review: https://reviewboard.asterisk.org/r/1443 2011-09-20 22:18 +0000 [r337115] Leif Madsen * contrib/init.d/rc.redhat.asterisk: Update RedHat Init script to work with Heartbeat. The current RedHat init script was not LSB compatible. This change will make it LSB compatible so that it can work correctly with Heartbeat. (Closes issue ASTERISK-18253) Reported by: c0rnoTa 2011-09-20 21:04 +0000 [r337061] Kinsey Moore * tests/test_pbx.c, main/pbx.c: Make CANMATCH with the new pattern match engine behave more like the old one When checking an extension for E_CANMATCH using the new extension matching algorithm, an exact match was not returned as a possible match resulting in the queue failing to allow a caller to exit on DTMF. This removes the requirement that an extension be longer than acquired digits for an E_CANMATCH operation to succeed. (closes issue ASTERISK-18044) Review: https://reviewboard.asterisk.org/r/1367/ 2011-09-20 19:10 +0000 [r336977-337007] Richard Mudgett * channels/sig_ss7.c: Check if a channel was created before using the pointer in sig_ss7_new_ast_channel(). Fixes the crash in ASTERISK-17955 gdb-11918.txt backtrace. * Added some missing libss7 access lock protection. * Prevent cancelling the ss7_linkset() thread at inoportune times just like the pri_dchannel() thread. (issue ASTERISK-17955) Reported by: Ian M Sherman Patches: jira_asterisk_17955_v1.8.patch (license #5621) patch uploaded by rmudgett (attached to related ASTERISK-17966) * channels/sig_ss7.c: Fix deadlock from not releasing SS7 linkset lock. sig_ss7_hangup() failed to release the SS7 linkset lock if the call had the alreadyhungup flag set. * Made unlock the SS7 linkset lock in sig_ss7_hangup() if the alreadyhungup flag is set. * Made ss7_start_call() not hold any locks while creating the channel for an incoming call to prevent deadlock. * Made ss7_grab() a void function, since it could never fail, to simplify calling code. * Made obtain the channel lock to do softhangup in some places. Patches: jira_ast_668_v1.8.patch (license #5621) patch uploaded by rmudgett JIRA AST-668 2011-09-20 00:56 +0000 [r336877] Russell Bryant * res/res_rtp_asterisk.c: Fix crashes in ast_rtcp_write(). This patch addresses crashes related to RTCP handling. The backtraces just show a crash in ast_rtcp_write() where it appears that the RTP instance is no longer valid. There is a race condition with scheduled RTCP transmissions and the destruction of the RTP instance. This patch utilizes the fact that ast_rtp_instance is a reference counted object and ensures that it will not get destroyed while a reference is still around due to scheduled RTCP transmissions. RTCP transmissions are scheduled and executed from the chan_sip scheduler context. This scheduler context is processed in the SIP monitor thread. The destruction of an RTP instance occurs when the associated sip_pvt gets destroyed (which happens when the sip_pvt reference count reaches 0). However, the SIP monitor thread is not the only thread that can cause a sip_pvt to get destroyed. The sip_hangup function, executed from a channel thread, also decrements the reference count on a sip_pvt and could cause it to get destroyed. While this is being changed anyway, the patch also removes calling ast_sched_del() from within the RTCP scheduler callback. It's not helpful. Simply returning 0 prevents the callback from being rescheduled. (closes issue ASTERISK-18570) Related issues that look like they are the same problem: (issue ASTERISK-17560) (issue ASTERISK-15406) (issue ASTERISK-15257) (issue ASTERISK-13334) (issue ASTERISK-9977) (issue ASTERISK-9716) Review: https://reviewboard.asterisk.org/r/1444/ 2011-09-19 22:07 +0000 [r336791] Terry Wilson * channels/chan_sip.c: Don't interfere with T.38 reinvites This is an update to the fix for ASTERISK-18340 and ASTERISK-17725 2011-09-19 20:27 +0000 [r336733] Tilghman Lesher * Makefile.rules, include/asterisk/optional_api.h, Makefile, configure, include/asterisk/autoconfig.h.in, main/Makefile, codecs/gsm/Makefile, configure.ac: Various changes to allow 1.8 to compile on Mac OS X Lion (10.7) * Makefile workaround for 10.6 extended to work on 10.7 and later. * Now uses the 'weak' symbol for Lion systems, which no longer support 'weak_import' Closes ASTERISK-17612. Closes ASTERISK-18213. Tested by: tilghman, oej. 2011-09-19 20:07 +0000 [r336716] Jonathan Rose * res/res_musiconhold.c, apps/app_queue.c, apps/app_mixmonitor.c, apps/app_echo.c, apps/app_saycounted.c, apps/app_mp3.c, apps/app_morsecode.c: Document applications that play audio and do not answer unanswered calls. This patch is part of an effort to document early media and its usage. If you are interested in contributing to this documentation effort, there are probably other applications worth documenting as well as an Asterisk wiki article at https://wiki.asterisk.org/wiki/display/AST/Early+Media+and+the+Progress+Application 2011-09-19 18:46 +0000 [r336658] Richard Mudgett * UPGRADE.txt, apps/app_dial.c: Made Dial d and H options no longer immediately auto-answer the calling leg. The Dial d and H options break DTMF attended transfer atxferdropcall option. 1) Party A calls party B. 2) Party B does a DTMF attended transfer to Party C. If the dialplan uses the Dial d or H options to call Party C then the Dial application answers the call immediately before initiating the call leg to Party C. The premature answer causes the transfer code to not invoke the atxferdropcall=no behavior for a blonde transfer since Party C has "answered". The transfer code thinks that Party B has "consulted" with Party C when Party B hangs up and completes the transfer to Party A. Party A now hears ringback until Party C actually answers. ASTERISK-13294 Dial d option. ASTERISK-11067 Dial H option to disconnect before answer. The referenced issues made Dial answer with the d and H options because many SIP and ISDN phones cannot send DTMF before the call is connected. * Made require the dialplan to control when or if the call needs to be answered to use the Dial application d and H options. (The call is no longer surprise answered when using the Dial d or H options.) Review: https://reviewboard.asterisk.org/r/1381/ JIRA AST-623 JIRA AST-666 2011-09-19 16:21 +0000 [r336591] Jason Parker * contrib/realtime/postgresql/realtime.sql, configs/cel_odbc.conf.sample, sounds/Makefile, contrib/realtime/mysql/sipfriends.sql, contrib/realtime/mysql/voicemail.sql, cel/cel_odbc.c, /, contrib/realtime/mysql/iaxfriends.sql, contrib/realtime/mysql/meetme.sql: Remove weird mergeinfo props that make merges annoying sometimes. 2011-09-19 15:41 +0000 [r336572] Leif Madsen * contrib/scripts/get_ilbc_source.sh: Update get_ilbc_source.sh script to work again. Recently iLBC support in Asterisk has changed after the acquisition of GIPS by Google. More information about how this may affect you is available in a blog post at: http://blogs.asterisk.org/2011/09/19/ilbc-support-in-asterisk-after-googles-acquisition-of-gips/ 2011-09-19 15:25 +0000 [r336569] Richard Mudgett * channels/sig_pri.c: Rework sig_pri_hangup() to be simpler and clearer. JIRA AST-675 2011-09-19 13:33 +0000 [r336501] Olle Johansson * channels/chan_sip.c: Add diversion header to a 302 redirect response if we have diversion data (closes issue ASTERISK-18143) patch by oej 2011-09-19 13:27 +0000 [r336499] Gregory Nietsky * channels/chan_h323.c: A long time ago in a galaxy far far away a IPv6 update was made, chan_h323 was not updated causeing all to flee to chan_ooh323. the brave Jedi [asterisk developers] pondered this miscarrige of justice and restored order to the force for the sake of closing out 2 old issues. (closes issue ASTERISK-17278) (closes issue ASTERISK-17500) Reported by: dread, sybasesql Tested by: irroot Reviewed by: IRC (russellb, kpfleming) 2011-09-19 12:06 +0000 [r336378-336440] Olle Johansson * main/manager.c: Make sure manager_debug option is reset at reload * Makefile: Revert accidental change that fixes OS/X Lion support * Makefile, channels/chan_sip.c: Add missing unlock at MWI message sending time (closes issue ASTERISK-18573) Patches: sip_mwi_lock.patch (license #5041) by Gregory Hinton Nietsky Thanks to irrot for the reminder, to Gregory for the patch! 2011-09-16 22:10 +0000 [r336312-336314] Terry Wilson * funcs/func_frame_trace.c: Whitespace fix * funcs/func_frame_trace.c: Add missing frame types to func_frame_trace Also casts control frames to the proper enum so that the compile will catch new additions. 2011-09-16 19:53 +0000 [r336294] Jonathan Rose * include/asterisk/frame.h, main/channel.c, main/rtp_engine.c, channels/chan_sip.c: Fix bad RTP media bridges in directmedia calls on peers separated by multiple Asterisk nodes. In a situation involving devices on separate Asterisk trunks, the remote RTP bridge would break when starting a call with directmedia. This patch queues a new type of control frame so that our RTP bridge loop can properly detect when these situations occur and check to see if peers need to be updated in order to send their media to the proper location. (Closes issue ASTERISK-18340) Reported by: Thomas Arimont (Closes issue ASTERISK-17725) Reported by: kwk Tested by: twilson, jrose 2011-09-16 19:06 +0000 [r336234] Sean Bright * UPGRADE.txt: Make a note that inotify won't work with an NFS mounted spooler directory. 2011-09-16 10:09 +0000 [r335978-336166] Gregory Nietsky * channels/chan_misdn.c: The round robin routing routine in chan_misdn.c is broken. it rotates between ports but never checks the channels in the ports. i have extensivly tested it and verified it works on 1 upto 4 ports. before the patch only 1 out of each port was used now all are used as expected. (closes issue ASTERISK-18413) Reported by: irroot Tested by: irroot Reviewed by: irroot Review: https://reviewboard.asterisk.org/r/1410/ * apps/app_queue.c: Locking order in app_queue.c causes deadlocks. a channel lock must never be held with the queues container lock held. the deadlock occured on masquerade. the queues container lock is a relic of the past the old queue module lock. with ao2 there is no need to hold this lock when dealing with members this patch removes unneeded locks. (closes issue ASTERISK-18101) (closes issue ASTERISK-18487) Reported by: Paul Rolfe, Jason Legault Tested by: irroot, Jason Legault, Paul Rolfe Reviewed by: Matthew Nicholson Review: https://reviewboard.asterisk.org/r/1402/ * channels/chan_agent.c: lock the channel before calling ast_bridged_channel() to prevent a seg fault. AMI agents list called on shutdown causes a segfault, introducing proper locking will prevent this. (closes issue ASTERISK-18092) Reported by: agustina Patches: chan_agent.patch (License #5041) patch uploaded by irroot 2011-09-14 18:21 +0000 [r335851-335911] Richard Mudgett * configure, include/asterisk/autoconfig.h.in, configure.ac: Remove unnecessary libpri dependency checks in the configure script. Using the --with-pri option with the configure script generated an error about not having PRI_L2_PERSISTENCE if you did not have the absolute latest libpri SVN checkout installed. The AST_EXT_LIB_SETUP_DEPENDENT macro in the configure.ac script seems to be for libraries that are dependent upon other libraries and not necessarily for optional/added features within a library. (closes issue ASTERISK-18535) Reported by: Michael Keuter * channels/chan_dahdi.c: Fixed cut-n-paste regression using the wrong variable. Fixes the missing DAHDI channels when using the newer chan_dahdi.conf sections for channel configuration. (closes issue ASTERISK-18496) Reported by: Sean Darcy Patches: jira_asterisk_18496_v1.8.patch (license #5621) patch uploaded by rmudgett Tested by: Sean Darcy, rmudgett 2011-09-14 13:28 +0000 [r335790] Matthew Nicholson * main/manager.c: The tech and data members of fast_originate_helper are not string fields. ASTERISK-17709 2011-09-13 22:10 +0000 [r335720] Richard Mudgett * apps/app_directed_pickup.c: Remove obsolete todo comment about PICKUPRESULT. 2011-09-13 21:33 +0000 [r335716] Tzafrir Cohen * main/asterisk.c: do parse defaultlanguage from asterisk.conf Do parse the option "defaultlanguage" from the [options] section of asterisk.conf, as in the sample config file. Otherwise the build-time default language (normally "en") is always the default one. Review: https://reviewboard.asterisk.org/r/1342/ Signed-off-by: Tzafrir Cohen (License #5035) 2011-09-13 21:30 +0000 [r335714] Paul Belanger * apps/app_meetme.c: Meetme should have 'core' support level (closes issue ASTERISK-18542) 2011-09-13 18:52 +0000 [r335655] Tilghman Lesher * configure, configure.ac: Move mandatory checks closer to the beginning of the file. If these are going to fail, they should fail as quickly as possible. 2011-09-13 18:20 +0000 [r335618] Matthew Nicholson * main/pbx.c, main/manager.c: Don't limit the size of appdata for manager originate actions. ASTERISK-17709 Patch by: tilghman (with modifications) 2011-09-13 07:11 +0000 [r335497] Russell Bryant * main/event.c, include/asterisk/event.h, res/ais/evt.c: Fix a crash in res_ais. This patch resolves a crash observed in a load testing environment that involved the use of the res_ais module. I observed some crashes where the event delivery callback would get called, but the length parameter incidcating how much data there was to read was 0. The code assumed (with good reason I would think) that if this callback got called, there was an event available to read. However, if the rare case that there's nothing there, catch it and return instead of blowing up. More specifically, the change always ensure that the size of the received event in the cluster is always big enough to be a real ast_event. Review: https://reviewboard.asterisk.org/r/1423/ 2011-09-12 15:54 +0000 [r335431-335433] Matthew Nicholson * main/channel.c: Properly set caller_warning and callee_warning before we try to use them. ASTERISK-18199 Patch by: elguero Testing by: rtang * bridges/bridge_multiplexed.c: Prevent a race condition when the bridge technology changes. This change was ported from asterisk 10. ASTERISK-18155 2011-09-12 14:21 +0000 [r335320-335341] Kinsey Moore * apps/app_dial.c: Ensure frames are not written to dialed channel if ringback is requested When a single channel was dialed and there was media to be forwarded to the calling channel, the media was written without regard for ringback causing silence to be heard in some circumstances. This regression was introduced when the meaning of "single" changed to mean only the number of channels dialed. (closes issue ASTERISK-18083) * channels/chan_iax2.c: Prevent IAX2 from getting IPv6 addresses via DNS IAX2 does not support IPv6 and getting such addresses from DNS can cause error messages on the remote end involving bad IPv4 address casts in the presence of IPv6/IPv4 tunnels. This patch ensures that IAX2 will not encounter IPv6 addresses via DNS queries. (closes issue ASTERISK-18090) 2011-09-12 13:25 +0000 [r335319] Olle Johansson * channels/chan_sip.c: Lock the peer->mvipvt to avoid crashes with SIP history enabled After the launch of 1.6 event-based MWI we have two threads handling the peer->mwipvt, which cause issues with SIP history additions in combination with the max limit for number of history entries. Review: https://reviewboard.asterisk.org/r/1373/ (closes issue ASTERISK-18288) Thanks to irrot for peer review. Work with this bug funded by IPvision AS 2011-09-12 11:09 +0000 [r335259] Stefan Schmidt * channels/chan_sip.c: build_peer doesnt unlink a peer object from peers_by_ip container which leads to a wrong refcounter value. adding an ao2_unlink from the peers_by_ip container fix it. Review: https://reviewboard.asterisk.org/r/1428/ 2011-09-09 16:09 +0000 [r335064] Matthew Jordan * channels/chan_console.c, channels/sig_pri.c, channels/chan_oss.c, main/channel.c, channels/chan_usbradio.c, main/dial.c, channels/chan_dahdi.c, channels/chan_misdn.c, channels/chan_skinny.c, funcs/func_frame_trace.c, main/features.c, channels/chan_h323.c, channels/chan_alsa.c, include/asterisk/frame.h, channels/sig_ss7.c, channels/chan_mgcp.c, apps/app_dial.c, channels/chan_unistim.c, main/pbx.c, addons/chan_ooh323.c, channels/chan_sip.c: Updated SIP 484 handling; added Incomplete control frame When a SIP phone uses the dial application and receives a 484 Address Incomplete response, if overlapped dialing is enabled for SIP, then the 484 Address Incomplete is forwarded back to the SIP phone and the HANGUPCAUSE channel variable is set to 28. Previously, the Incomplete application dialplan logic was automatically triggered; now, explicit dialplan usage of the application is required. Additionally, this patch adds a new AST_CONTOL_FRAME type called AST_CONTROL_INCOMPLETE. If a channel driver receives this control frame, it is an indication that the dialplan expects more digits back from the device. If the device supports overlap dialing it should attempt to notify the device that the dialplan is waiting for more digits; otherwise, it can handle the frame in a manner appropriate to the channel driver. (closes issue ASTERISK-17288) Reported by: Mikael Carlsson Tested by: Matthew Jordan Review: https://reviewboard.asterisk.org/r/1416/ 2011-09-08 22:27 +0000 [r334953] Richard Mudgett * main/logger.c: Fix crash with res_fax when MALLOC_DEBUG and "core stop gracefully" are used. Asterisk crashes if MALLOC_DEBUG is enabled when res_fax tries to unregister its logger level. * Make ast_logger_unregister_level() use ast_free() instead of free(). When MALLOC_DEBUG is enabled, ast_free() does not degenerate into a call to free(). Therefore, if you allocated memory with a form of ast_malloc you must free it with ast_free. 2011-09-07 19:35 +0000 [r334843] Paul Belanger * channels/chan_iax2.c: Cleanup chan_iax2.c log messages Review: https://code.asterisk.org/code/cru/CR-AST-11 2011-09-07 19:31 +0000 [r334840] Richard Mudgett * main/features.c: Fix AMI action Park crash. * Made AMI action Park not say anything to the parker channel (AMI header Channel2) since the AMI action is a third party parking the call. (This is a change in behavior that cannot be preserved without a lot of effort.) * Made not play pbx-parkingfailed if the Park 's' option is used. JIRA AST-660 2011-09-07 13:26 +0000 [r334682] Stefan Schmidt * main/features.c: Adding the Feature to sent a Reason Header in a SIP Cancel message by set the flag AST_FLAG_ANSWERED_ELSEWHERE before doing a masquerade in the pickup function. 2011-09-07 08:12 +0000 [r334616-334620] Alec L Davis * CHANGES, apps/app_queue.c: peroid typo * main/pbx.c: Prevent segfault if call arrives before Asterisk is fully booted. Prevent ast_pbx_start and ast_run_start from starting a new thread unless asterisk is fully booted. alecdavis (license 585) Tested by: alecdavis Review: https://reviewboard.asterisk.org/r/1407/ 2011-09-06 13:48 +0000 [r334453] Gregory Nietsky * apps/app_voicemail.c: Make SQL query in app_voicemail.c portable LIMIT is not portable. Regression from r312212 (closes issue ASTERISK-18255) Reported by: Leif Madsen Tested by: Leif Madsen Review: https://reviewboard.asterisk.org/r/1415/ 2011-09-23 Asterisk Development Team * Asterisk 1.8.7.0 Released. 2011-09-19 Asterisk Development Team * Asterisk 1.8.7.0-rc2 Released. * r335851 | rmudgett | 2011-09-14 10:53:25 -0500 (Wed, 14 Sep 2011) | 11 lines Fixed cut-n-paste regression using the wrong variable. Fixes the missing DAHDI channels when using the newer chan_dahdi.conf sections for channel configuration. (closes issue ASTERISK-18496) * r335911 | rmudgett | 2011-09-14 13:21:35 -0500 (Wed, 14 Sep 2011) | 13 lines Remove unnecessary libpri dependency checks in the configure script. Using the --with-pri option with the configure script generated an error about not having PRI_L2_PERSISTENCE if you did not have the absolute latest libpri SVN checkout installed. The AST_EXT_LIB_SETUP_DEPENDENT macro in the configure.ac script seems to be for libraries that are dependent upon other libraries and not necessarily for optional/added features within a library. (closes issue ASTERISK-18535) * r336572 | lmadsen | 2011-09-19 10:41:16 -0500 (Mon, 19 Sep 2011) | 7 lines Update get_ilbc_source.sh script to work again. Recently iLBC support in Asterisk has changed after the acquisition of GIPS by Google. More information about how this may affect you is available in a blog post at: http://blogs.asterisk.org/2011/09/19/ilbc-support-in-asterisk-after-googles-acquisition-of-gips/ * r335714 | pabelanger | 2011-09-13 16:30:18 -0500 (Tue, 13 Sep 2011) | 4 lines Meetme should have 'core' support level (closes issue ASTERISK-18542) 2011-09-07 Asterisk Development Team * Asterisk 1.8.7.0-rc1 Released. 2011-09-06 13:48 +0000 [r334453] Gregory Nietsky * apps/app_voicemail.c: Make SQL query in app_voicemail.c portable LIMIT is not portable. Regression from r312212 (closes issue ASTERISK-18255) Reported by: Leif Madsen Tested by: Leif Madsen Review: https://reviewboard.asterisk.org/r/1415/ 2011-09-02 20:59 +0000 [r334296-334355] Richard Mudgett * res/res_musiconhold.c: MusicOnHold has extra unref which may lead to memory corruption and crash. The problem happens when a call is disconnected and you had started a MOH class that does not use the files mode. If you define REF_DEBUG and recreate the problem, it will announce itself with the following warning: Attempt to unref mohclass 0xb70722e0 (default) when only 1 ref remained, and class is still in a container! * Fixed moh_alloc() and moh_release() functions not handling the state->class reference consistently. (closes issue ASTERISK-18346) Reported by: Mark Murawski Patches: jira_asterisk_18346_v1.8.patch (license #5621) patch uploaded by rmudgett Tested by: rmudgett, Mark Murawski Review: https://reviewboard.asterisk.org/r/1404/ * main/config.c, include/asterisk/config.h: Fix potential memory allocation failure crashes in config.c. * Added required checks to the returned memory allocation pointers to prevent crashes. * Made ast_include_rename() create a replacement ast_variable list node if the new filename is longer than the available space. Fixes potential crash and memory leak. * Factored out ast_variable_move() from ast_variable_update() so ast_include_rename() can also use it when creating a replacement ast_variable list node. * Made the filename stuffed at the end of the struct a minimum allocated size in ast_variable_new() in case ast_include_rename() changes the stored filename. * Constify struct char pointers pointing to strings stuffed at the end of the struct for: ast_variable, cache_file_mtime, and ast_config_map. * Factored out cfmtime_new() to remove inlined code and allow some struct pointers to become const. * Removed the list lock from struct cache_file_mtime that was never used. * Added doxygen comments to several structure elements and better documented what strings are stuffed at the struct end char array. * Reworked ast_config_text_file_save() and set_fn() to handle allocation failure of the include file scratch pad object tracking blank lines. * Made ast_config_text_file_save() fn[] declared with PATH_MAX to ensure it is long enough for any filename with path. Also reduced the number of container fileset buckets from a rediculus 180,000 to 1023. JIRA AST-618 Review: https://reviewboard.asterisk.org/r/1378/ 2011-09-01 17:38 +0000 [r334229-334234] Tilghman Lesher * main/pbx.c: Remove 1.6 compatibility documentation from 1.8, as it no longer applies. * res/res_config_odbc.c: Create a local alias for ast_odbc_clear_cache. As a function pointer, the reference has to be resolved at load time irrespective of the RTLD_LAZY flag. Creating a local alias solves this problem, because the structure is initialized with that local function pointer, while the actual function can remain lazily linked until runtime. The reason why this is important is because we lazily load function references during the module loading process, in order to obtain priority values for each module, ensuring that modules are loaded in the correct order. Previous to this change, when this module was initially loaded, the module loader would emit a symbol resolution error, because of the above requirement. Closes ASTERISK-18399 (reported by Mikael Carlsson, fix suggested by Walter Doekes, patch by me) 2011-08-31 18:50 +0000 [r334156] Matthew Nicholson * channels/chan_sip.c: Disable T.38 when we get a invite with image media port set to 0 ASTERISK-17678 2011-08-31 15:57 +0000 [r334009-334012] Richard Mudgett * channels/chan_dahdi.c: No DAHDI channel available for conference, user introduction disabled. The following error will consistently occur when trying to dial into a MeetMe conference when the server does not have DAHDI hardware installed: app_meetme.c: No DAHDI channel available for conference, user introduction disabled (is chan_dahdi loaded?) While chan_dahdi is loaded correctly during compilation and install of Asterisk/Dahdi, including associated modules, etc., a chan_dahdi.conf configuration file in /etc/asterisk is not created by FreePBX if hardware does not exist, causing MeetMe to be unable to open a DAHDI pseudo channel. * Allow chan_dahdi to create a pseudo channel when there is no chan_dahdi.conf file to load. (closes issue ASTERISK-17398) Reported by: Preston Edwards Patches: jira_asterisk_17398_v1.8.patch (license #5621) patch uploaded by rmudgett Tested by: rmudgett * main/channel.c, channels/chan_agent.c: Call pickup race leaves orphaned channels or crashes. Multiple users attempting to pickup a call that has been forked to multiple extensions either crashes or fails a masquerade with a "bad things may happen" message. This is the scenario that is causing all the grief: 1) Pickup target is selected 2) target is marked as being picked up in ast_do_pickup() 3) target is unlocked by ast_do_pickup() 4) app dial or queue gets a chance to hang up losing calls and calls ast_hangup() on target 5) SINCE A MASQUERADE HAS NOT BEEN SETUP YET BY ast_do_pickup() with ast_channel_masquerade(), ast_hangup() completes successfully and the channel is no longer in the channels container. 6) ast_do_pickup() then calls ast_channel_masquerade() to schedule the masquerade on the dead channel. 7) ast_do_pickup() then calls ast_do_masquerade() on the dead channel 8) bad things happen while doing the masquerade and in the process ast_do_masquerade() puts the dead channel back into the channels container 9) The "orphaned" channel is visible in the channels list if a crash does not happen. This patch does the following: * Made ast_hangup() set AST_FLAG_ZOMBIE on a successfully hung-up channel and not release the channel lock until that has happened. * Made __ast_channel_masquerade() not setup a masquerade if either channel has AST_FLAG_ZOMBIE set. * Fix chan_agent misuse of AST_FLAG_ZOMBIE since it would no longer work. (closes issue ASTERISK-18222) Reported by: Alec Davis Tested by: rmudgett, Alec Davis, irroot, Karsten Wemheuer (closes issue ASTERISK-18273) Reported by: Karsten Wemheuer Tested by: rmudgett, Alec Davis, irroot, Karsten Wemheuer Review: https://reviewboard.asterisk.org/r/1400/ 2011-08-31 15:18 +0000 [r334006] Kinsey Moore * channels/chan_sip.c: Correct an AMI protocol violation with SIPshowpeer The response of SIPshowpeer ends with "\r\n\r\n". Since other commands are ended by using \r\n this confuses any interfacing script. (closes issue ASTERISK-17486) 2011-08-30 21:16 +0000 [r333947] Alexandr Anikin * addons/ooh323c/src/oochannels.c, addons/ooh323c/src/ooq931.c, addons/ooh323c/src/ooCalls.c, addons/ooh323c/src/ooh323.c, addons/ooh323c/src/ooGkClient.c, addons/ooh323c/src/ooCalls.h: cleanups in ACF/ARJ GK replies processing fixed long (24 sec) pause if acf/arj proccessed before ast_cond_wait called to wait this 2011-08-29 21:38 +0000 [r333836] Terry Wilson * channels/chan_sip.c: Refresh peer address if DNS unavailable at peer creation If Asterisk starts and no DNS is available, outbound registrations will fail indefinitely. This patch copies the address from the sip_registry struct, which will be updated, to the peer->addr when necessary. If dnsmgr is enabled, the registration fails without the patch because even though the address on the registry is updated via dnsmgr, the address is just copied on the first try. Since we use ast_sockaddr_copy, dnsmgr can't update the address that is copied to the sip_pvt or peers. Closes issue ASTERISK-18000 Review: https://reviewboard.asterisk.org/r/1335/ 2011-08-29 21:06 +0000 [r333784-333785] Richard Mudgett * include/asterisk/channel.h: Add some do not hold locks notes to channel.h * addons/chan_mobile.c: Fix deadlock potential of chan_mobile.c:mbl_ast_hangup(). 2011-08-29 17:11 +0000 [r333630] Matthew Jordan * apps/app_voicemail.c: Fixed improperly formatted TestEvent AMI message in app_voicemail 2011-08-29 15:55 +0000 [r333569] Jonathan Rose * res/res_jabber.c: Accidental use of variable client->status instead of client->state in from ASTERISK-18078 (issue ASTERISK-18078) 2011-08-28 09:49 +0000 [r333507] Tzafrir Cohen * channels/chan_vpb.cc: chan_vpb: remove unused variables (gcc4.6) GCC 4.6 detects variables that get assined to, but never used later. Also removes some remmed-out lines that become invalid. (closes issue ASTERISK-18336) Signed-off-by: Tzafrir Cohen (License #5035) , 2011-08-26 16:19 +0000 [r333378] Jonathan Rose * res/res_jabber.c: [patch] Buddies are always auto-registered when processing the roster Reporter said autoregister flag was ignored for registering 'buddies' which had a subscription to us. Verified that this was the case and observed how the patch addressed this and made sure it didn't break anything. (closes issue ASTERISK-14233) Reported by: Simon Arlott Patches: asterisk-0015229.patch (license #5756) patch uploaded by Simon Arlott Tested by: Jonathan Rose 2011-08-26 14:36 +0000 [r333339-333354] Matthew Jordan * apps/app_voicemail.c: Fixed incorrect pointer copy to structure copy in revision 333339 * apps/app_voicemail.c: Bug fixes for voicemail user emailsubject / emailbody. This code change fixes a few issues with the voicemail user override of emailbody and emailsubject, including escaping the strings, potential memory leaks, and not overriding the voicemail defaults. Revision 325877 fixed this for ASTERISK-16795, but did not fix it for ASTERISK-16781. A subsequent check-in prevented 325877 from being applied to 10. This check-in resolves both issues, and applies the changes to 1.8, 10, and trunk. (closes issue ASTERISK-16781) Reported by: Sebastien Couture Tested by: mjordan (closes issue ASTERISK-16795) Reported by: mdeneen Tested by: mjordan Review: https://reviewboard.asterisk.org/r/1374 2011-08-25 19:00 +0000 [r333267] Jason Parker * Makefile: Fix for DESTDIR spaces patch. 2011-08-25 18:47 +0000 [r333265] Jonathan Rose * res/res_jabber.c: Segfault when publishing device states via XMPP and not connected When using publishing device state with res_jabber, Asterisk will attempt to send a device state using the unconnected client using iks_send_raw and crash. This patch checks the validity of the connection before attempting to send the device state. (closes issue ASTERISK-18078) Reported by: Michael L. Young Patches: res_jabber-segfault-pubsub-not-connected2.patch (license #5026) patch uploaded by Michael L. Young Tested by: Jonathan Rose 2011-08-25 15:27 +0000 [r333201] Jason Parker * makeopts.in, sounds/Makefile, Makefile, build_tools/mkpkgconfig, configure, configure.ac: Fix installation into directories containing spaces. This also vastly simplifies the logic in sounds/Makefile (Closes issue ASTERISK-18290) Reported by: Paul Belanger Review: https://reviewboard.asterisk.org/r/1379/ 2011-08-23 18:14 +0000 [r333010] Richard Mudgett * apps/app_queue.c: Memory Leak in app_queue The patch that was committed in the 1.6.x versions of Asterisk for ASTERISK-15862 actually fixed two issues. One was not applicable to 1.8 but the other is. queue_leak.patch fixes the portion applicable to 1.8. (closes issue ASTERISK-18265) Reported by: Fred Schroeder Patches: queue_leak.patch (license #5049) patch uploaded by mmichelson Tested by: Thomas Arimont 2011-08-23 18:11 +0000 [r333009] Matthew Nicholson * UPGRADE.txt, configs/sip.conf.sample, CHANGES, channels/sip/include/sip.h: default 'sipstorecause' to no We've decided to disable this feature by default in future 1.8 versions. This would be an unexpected behavior change for anyone depending on that SIP_CAUSE update in their dialplan. Please refer to the asterisk-dev mailing list more information: http://lists.digium.com/pipermail/asterisk-dev/2011-August/050626.html (issue AST-580) 2011-08-22 22:11 +0000 [r332939-332945] Richard Mudgett * apps/app_queue.c, main/config.c, include/asterisk/config.h: Revert previous commit. Not ready yet. * apps/app_queue.c, main/config.c, include/asterisk/config.h: Signed * main/config.c: Minor code optimizations. * Simplify ast_category_browse() logic for easier understanding. * Remove dead code in ast_variable_delete() and simplify some of its logic. 2011-08-22 19:41 +0000 [r332876] Paul Belanger * channels/chan_gtalk.c: Revert previous commit It seems google is still making changes to the protocol. (issue ASTERISK-18301) 2011-08-22 19:32 +0000 [r332874] Richard Mudgett * apps/app_queue.c: Reference leaks in app_queue. * Fixed load_realtime_queue() leaking a queue reference when it overwrites q when processing a realtime queue. (issue ASTERISK-18265) * Make join_queue() unreference the queue returned by load_realtime_queue() when it is done with the pointer. The load_realtime_queue() returns a reference to the just loaded realtime queue. * Fixed queues container reference leak in queues_data_provider_get(). * queue_unref() should not return q that was just unreferenced. * Made logic in __queues_show() and queues_data_provider_get() when calling load_realtime_queue() easier to understand. 2011-08-22 18:15 +0000 [r332817] Matthew Jordan * main/app.c, configs/manager.conf.sample, include/asterisk/manager.h, apps/app_voicemail.c, include/asterisk/test.h, main/manager.c, main/file.c, main/test.c: Review: https://reviewboard.asterisk.org/r/1364/ This update adds a new AMI event, TestEvent, which is enabled when the TEST_FRAMEWORK compiler flag is defined. It also adds initial usage of this event to app_voicemail. The TestEvent AMI event is used extensively by the voicemail tests in the Asterisk Test Suite. 2011-08-22 18:14 +0000 [r332759-332816] Richard Mudgett * res/res_config_pgsql.c, res/res_config_odbc.c: Memory leaks in realtime_multi_xxx() when database access returns error. * Fix realtime_multi_pgsql() configuration memory leak when the database access returns an error. * Fix realtime_multi_odbc() configuration category use after free when the database access returns an error. * main/config.c: Memory leak reading realtime database variable list. Calling ast_load_realtime() can leak the last list node if the read list only contains empty variable value items. * Fixed list filter loop in ast_load_realtime() to delete the list node immediately instead of the next time through the loop. The next time through the loop may not happen if the node to delete is the last in the list. (issue ASTERISK-18277) (issue ASTERISK-18265) Patches: jira_asterisk_18265_v1.8_config.patch (license #5621) patch uploaded by rmudgett 2011-08-21 14:31 +0000 [r332699] Paul Belanger * channels/chan_gtalk.c: Fix outgoing calls in chan_gtalk (closes issue ASTERISK-18301) Reported by: az1324 2011-08-18 21:26 +0000 [r332559] Terry Wilson * main/netsock2.c: Fix possible error on stringification of IPv4-mapped addrs The FreeBSD netsock2 test has been failing for a while. We were pasing sa->len to getnameinfo instead of sa_tmp->len. ASTERISK-18289 2011-08-18 19:28 +0000 [r332503] Kinsey Moore * channels/chan_dahdi.c: CRC4 in "dahdi show status" gives wrong impression to T1 users Change CRC4 to CRC in the output of "dahdi show status" so that it can apply in more situations without confusing users, especially since T1 lines use CRC6 instead of CRC4. (closes issue AST-471) 2011-08-18 14:46 +0000 [r332355-332446] Tilghman Lesher * build_tools/cflags.xml, build_tools/cflags-devmode.xml: Move BETTER_BACKTRACES out of development mode, as it's useful when DEBUG_THREADS is enabled. * makeopts.in, sounds/Makefile, Makefile, agi/Makefile, utils/Makefile, configure, include/asterisk/autoconfig.h.in, configure.ac, Makefile.moddir_rules: Re-add support for spaces in pathnames, including now spaces in DESTDIR. This was initially added to 1.8 prior to release, primarily to support the standard paths on Mac OS X, but was partially reverted recently in Subversion, due to the lack of support for spaces in DESTDIR. This commit restores support for the standard paths on Mac OS X, and also includes support for spaces in DESTDIR. (closes issue ASTERISK-18290) Reported by: pabelanger Review: https://reviewboard.asterisk.org/r/1326/ 2011-08-17 17:35 +0000 [r332320] Terry Wilson * res/res_timing_timerfd.c: Don't read from a disarmed or invalid timerfd Numerous isues have been reported for deadlocks that are caused by a blocking read in res_timing_timerfd on a file descriptor that will never be written to. This patch adds some checks to make sure that the timerfd is both valid and armed before calling read(). Should fix: ASTERISK-1842, ASTERISK-18197, ASTERISK-18166, AST-486 AST-495, AST-507 and possibly others. 2011-08-17 15:51 +0000 [r332264] Richard Mudgett * channels/sig_pri.c, channels/sig_pri.h, channels/chan_dahdi.c, configs/chan_dahdi.conf.sample, configure, include/asterisk/autoconfig.h.in, configure.ac: Outgoing BRI calls fail when using Asterisk 1.8 with HA8, HB8, and B410P cards. France Telecom brings layer 2 and layer 1 down on BRI lines when the line is idle. When layer 1 goes down Asterisk cannot make outgoing calls and the HA8 and HB8 cards also get IRQ misses. The inability to make outgoing calls is because the line is in red alarm and Asterisk will not make calls over a line it considers unavailable. The IRQ misses for the HA8 and HB8 card are because the hardware is switching clock sources from the line which just brought layer 1 down to internal timing. There is a DAHDI option for the B410P card to not tell Asterisk that layer 1 went down so Asterisk will allow outgoing calls: "modprobe wcb4xxp teignored=1". There is a similar DAHDI option for the HA8 and HB8 cards: "modprobe wctdm24xxp bri_teignored=1". Unfortunately that will not clear up the IRQ misses when the telco brings layer 1 down. * Add layer 2 persistence option to customize the layer 2 behavior on BRI PTMP lines. The new option has three settings: 1) Use libpri default layer 2 setting. 2) Keep layer 2 up. Bring layer 2 back up when the peer brings it down. 3) Leave layer 2 down when the peer brings it down. Layer 2 will be brought up as needed for outgoing calls. JIRA AST-598 2011-08-17 14:31 +0000 [r332234] Matthew Nicholson * channels/chan_sip.c: print a warning instructing the user to disable storesipcause if we process 100 or more scheduler entries at a time AST-580 2011-08-16 20:10 +0000 [r332176] Paul Belanger * tests/test_db.c, tests/test_linkedlists.c, tests/test_sched.c, tests/test_netsock2.c, tests/test_strings.c, tests/test_pbx.c, tests/test_func_file.c, tests/test_security_events.c, tests/test_stringfields.c, tests/test_time.c, tests/test_skel.c, tests/test_locale.c, tests/test_acl.c, tests/test_devicestate.c, tests/test_utils.c, tests/test_aoc.c, tests/test_astobj2.c, tests/test_poll.c, tests/test_amihooks.c, tests/test_substitution.c, tests/test_heap.c, tests/test_ast_format_str_reduce.c, tests/test_expr.c, tests/test_logger.c, tests/test_gosub.c, tests/test_app.c, tests/test_dlinklists.c, tests/test_event.c: Flag test modules as 'core' Review: https://reviewboard.asterisk.org/r/1369/ 2011-08-16 17:38 +0000 [r332118] Jonathan Rose * channels/chan_sip.c: ASTERISK-18067 ASTERISK-15479 - White Space affects mailbox value, multiple MWI subs Before, having multiple subscriptions to mailboxes on a sip peer set via the mailbox setting in sip.conf would only result in updates being sent on whichever mailbox triggered the mwi event. Now all of them get counted regardless. Also fixes a bug involving parsing of the mailbox option in sip.conf so that trailing and leading spaces before/after commas are trimmed. (closes issue ASTERISK-18067) Reported by: aragon (closes issue ASTERISK-15479) Reported by: Ben Winslow Patches: chan_sip.c-mwi_multi_mailbox_fix-1.6.2.13.diff (License #5288) patch uploaded by Ben Winslow 2011-08-16 16:31 +0000 [r332100] Richard Mudgett * CHANGES, configs/features.conf.sample, main/asterisk.c, main/features.c: Fix multiple parking issues. JIRA ASTERISK-17183 Multi-parkinglot directs calls to wrong parkinglot. JIRA ASTERISK-17870 Cannot retrieve parked calls. JIRA ASTERISK-17430 ParkedCall() with no extension should pickup first available call and does not. JIRA AST-576 Issues with parking lots * Removed searching for parking lots by extension. Parking lots can only be found by the parking lot name since parking lot access extensions and spaces are not guaranteed to be unique. * Added parking_lot_name option to the Park and ParkedCall applications. Updated documentation for Park and ParkedCall applications. * Add parkext_exclusive configuration option to make parking entry extensions specify which parking lot they access. (closes issue ASTERISK-17183) Reported by: David Cabrejos Tested by: rmudgett, David Cabrejos (closes issue ASTERISK-17870) Reported by: Remi Quezada (closes issue ASTERISK-17430) Reported by: Philippe Lindheimer JIRA ASTERISK-17452 Parking_offset not used JIRA AST-624 'next' setting for findslot does nothing * Reimplemented since findslot feature option broken by -r114655. (closes issue ASTERISK-17452) Reported by: David Woolley Tested by: rmudgett JIRA ASTERISK-15792 Dialplan continues execution after transfer to park. This happens for DTMF attended transfer, DTMF blind transfer, and DTMF one-touch-parking if the party initiating these features also initiated the call. * Fixed the return code from the affected builtin features when parking a call. (closes issue ASTERISK-15792) Reported by: Mat Murdock Tested by: rmudgett, twilson JIRA AST-607 The courtesytone is not playing to the expected call when picking up a parked call. This is mostly a documentation problem. However, the option is not reset to the default when features.conf is reloaded. * Updated features.conf.sample documentation for courtesytone and parkedplay options. * Reset the parkedplay option to default when features.conf is reloaded. JIRA AST-615 AMI Park action followed by features reload results in orphaned channels in parking lot. * Reloading features.conf will not touch parking lots that have calls still parked in them. Reload again at a later time. Misc additional fixes: * Added unit test for parking lot dialplan usage checking. * Made update connected line when a parked call is retrieved from a parking lot. * Made retrieved parked call stop ringing or MOH depending upon how the call was waiting in the parking lot. * Made CLI "features show" indicate if the parking lot is enabled for use. * Added PARKINGDYNEXTEN channel variable to allow dynamic parking lots to specify the parking lot access extension. * Made AMI ParkedCalls action ParkedCall events have a Parkinglot header. * Made AMI ParkedCalls action ParkedCallsComplete event have a Total header. * Fixed potential deadlock from AMI Park action holding channel locks while calling masq_park_call(). * Fixed several places where ast_strdupa() were used inside of loops. (Mostly fixed by refactoring the loop body into its own function.) * Fixed copy_parkinglot() copying too much from the source parking lot. Extracted the parking lot configuration settings into struct parkinglot_cfg. * Refactored courtesytone playing code to put the channel not playing the tone in autoservice. * Fix when pbx-parkingfailed is played that the other channel is put in autoservice if it exists. * Fixed parkinglot reference leak in parked_call_exec() error paths. * Fixed parkinglot_unref() use of parkinglot after it was unreffed. * Made destroy the struct ast_parkinglot parkings lock when done. * Refactored the features.conf parking lot configuration code to eliminate redundancy. * Fixed feature reload to better protect parking lots. * Fixed parking lot container reference leak in handle_parkedcalls(). * Fixed the total count in handle_parkedcalls(). Review: https://reviewboard.asterisk.org/r/1358/ 2011-08-16 15:06 +0000 [r332021-332026] Matthew Nicholson * channels/sip/include/sip.h, channels/chan_sip.c: use DEFAULT_STORE_SIP_CAUSE to set the default value for the 'storesipcause' option AST-580 * configs/sip.conf.sample, CHANGES, channels/chan_sip.c: Added the 'storesipcause' option to sip.conf to allow the user to disable the setting of HASH(SIP_CAUSE,) on the channel. Having chan_sip set HASH(SIP_CAUSE,) on the channel carries a significant performance penalty because of the usage of the MASTER_CHANNEL() dialplan function. AST-580 2011-08-15 17:24 +0000 [r331955] Richard Mudgett * channels/chan_dahdi.c: Fix some minor chan_dahdi config load issues. * Address chan_dahdi.conf dahdichan option todo item about needing line number. * Make ignore_failed_channels option also apply to dahdichan option. * Don't attempt to create a default pseudo channel if the chan_dahdi.conf channel/channels option is not allowed. * Add a similar check for dahdichan in normal chan_dahdi.conf sections as is done in users.conf. 2011-08-15 15:21 +0000 [r331886] Paul Belanger * main/rtp_engine.c: Fix noisy message when briding channels (closes issue ASTERISK-18270) Reported by: Federico Alves 2011-08-15 15:12 +0000 [r331867] David Vossel * channels/chan_sip.c: Fixes locking inversion issues present in the handling of the sip REFER method. (closes issue ASTERISK-18082) Reported by: James Van Vleet 2011-08-12 19:01 +0000 [r331774] Matthew Nicholson * apps/app_queue.c: Unlock the channel before calling update_queue. Holding the channel lock when calling update_queue which attempts to lock the queue lock can cause a deadlock. This deadlock involves the following chain: 1. hold chan lock -> wait queue lock 2. hold queue lock -> wait agent list lock 3. hold agent list lock -> wait chan list lock 4. hold chan list lock -> wait chan lock 2011-08-12 18:58 +0000 [r331714-331771] Richard Mudgett * channels/chan_dahdi.c: Suppress warning message when using DAHDITransfer or DAHDIHangup. * The fake event should only be processed by the channel that currently owns the private and not the associated call waiting or 3-way channel. JIRA AST-620 JIRA SWP-3616 * channels/chan_dahdi.c: AMI actions DAHDIHangup and DAHDITransfer have no effect. The AMI actions DAHDIHangup and DAHDITransfer have no effect on a DAHDI channel. These two AMI actions are highly specialized to analog channels and appear to make the channel behave like a jack port for headsets. * Made the faked DAHDI event get processed before a normal media stream read in dahdi_read() instead of trying to trigger an exception read by setting the AST_FLAG_EXCEPTION flag. Apparently a change was made long ago that changed how AST_FLAG_EXCEPTION is processed in the core. Unfortunately, the faked DAHDI events no longer worked when that happened. * Updated the DAHDI AMI action documentation for the following actions: DAHDITransfer, DAHDIHangup, DAHDIDialOffhook, DAHDIDNDon, DAHDIDNDoff, DAHDIShowChannels, and DAHDIRestart. * Made use sscanf() instead of atoi() for better error checking of the DAHDIChannel header string. JIRA AST-620 JIRA SWP-3616 2011-08-12 16:30 +0000 [r331658] Terry Wilson * tests/test_netsock2.c: Fix netsock2 multiple zero-expansion test Remove erroneous single bracket. 2011-08-12 16:20 +0000 [r331649] Kinsey Moore * main/logger.c: Logger does not warn of failure to open logging channels Currently, logger only prints an error message to stderr when it fails to open a logger channel where many users will not see it because the logger lock is held. The alternative provided by this patch is to log the error to all attached consoles in the hopes that it will be easier to see. Additionally, this patch prevents the failed logger channel from being added to the list where it would silently fail on each call to the Asterisk logger. (closes issue ASTERISK-16231) Review: https://reviewboard.asterisk.org/r/1338 2011-08-12 15:49 +0000 [r331635] Jonathan Rose * apps/app_dial.c, apps/app_meetme.c: Fixes 32bit compilation warnings brought on by 331634 in app_dial and app_meetme 2011-08-11 21:46 +0000 [r331578] Jason Parker * apps/app_dial.c, apps/app_meetme.c: Use proper values for 64-bit option flags. Also, reusing bits es no bueno, so change the value of a duplicate. (issue ASTERISK-18239) 2011-08-11 21:39 +0000 [r331575] Richard Mudgett * funcs/func_shell.c: Segfault in shell_helper in func_shell.c. The return value of popen() was not checked for failure to open. (closes issue ASTERISK-18109) JIRA SWP-3633 Reported by: Michael Myles Tested by: rmudgett 2011-08-10 22:23 +0000 [r331517] Kinsey Moore * channels/chan_sip.c: SIP Notify via AMI or CLI leaks SIP PVTs Any SIP notify sent via AMI or CLI leaks a SIP PVT with ref count +2. Removing the additional ref just before the invite and adding an unref following it corrects the issue as seen via REF_DEBUG. The unref existed in a distant revision and it appears as though the wrong ref operation was removed. (closes issue ASTERISK-18091) Review: https://reviewboard.asterisk.org/r/1332/ 2011-08-10 20:29 +0000 [r331461] Richard Mudgett * main/logger.c: Output of queue log not started until logger reloaded. ASTERISK-15863 caused a regression with queue logging. The output of the queue log is not started until the logger configuration is reloaded. * Queue log initialization is completely delayed until the first message is posted to the queue log system. Including the initial opening of the queue log file. * Fixed rotate_file() ROTATE strategy to give the file just rotated out to the configured exec function after rotate. Just like the other strategies. * Fixed logger reload to always post the queue reload entry instead of just if there is a queue log file. * Refactored some code to eliminate some redundancy and to reduce stack utilization. (closes issue ASTERISK-17036) JIRA SWP-2952 Reported by: Juan Carlos Valero Patches: jira_asterisk_17036_v1.8.patch (license #5621) patch uploaded by rmudgett Tested by: rmudgett (closes issue ASTERISK-18208) Reported by: Christian Pinedo Review: https://reviewboard.asterisk.org/r/1333/ 2011-08-31 Asterisk Development Team * Asterisk 1.8.6.0 Released. 2011-08-25 Asterisk Development Team * Asterisk 1.8.6.0-rc3 Released. ------------------------------------------------------------------------ r333201 | qwell | 2011-08-25 10:27:06 -0500 (Thu, 25 Aug 2011) | 8 lines Fix installation into directories containing spaces. This also vastly simplifies the logic in sounds/Makefile (Closes issue ASTERISK-18290) Reported by: Paul Belanger Review: https://reviewboard.asterisk.org/r/1379/ ------------------------------------------------------------------------ 2011-08-22 Asterisk Development Team * Asterisk 1.8.6.0-rc2 Released. ------------------------------------------------------------------------ r331575 | rmudgett | 2011-08-11 16:39:58 -0500 (Thu, 11 Aug 2011) | 9 lines Segfault in shell_helper in func_shell.c. The return value of popen() was not checked for failure to open. (closes issue ASTERISK-18109) JIRA SWP-3633 Reported by: Michael Myles Tested by: rmudgett ------------------------------------------------------------------------ r332355 | tilghman | 2011-08-17 14:21:36 -0500 (Wed, 17 Aug 2011) | 13 lines Re-add support for spaces in pathnames, including now spaces in DESTDIR. This was initially added to 1.8 prior to release, primarily to support the standard paths on Mac OS X, but was partially reverted recently in Subversion, due to the lack of support for spaces in DESTDIR. This commit restores support for the standard paths on Mac OS X, and also includes support for spaces in DESTDIR. (closes issue ASTERISK-18290) Reported by: pabelanger Review: https://reviewboard.asterisk.org/r/1326/ ------------------------------------------------------------------------ r332559 | twilson | 2011-08-18 16:26:01 -0500 (Thu, 18 Aug 2011) | 7 lines Fix possible error on stringification of IPv4-mapped addrs The FreeBSD netsock2 test has been failing for a while. We were pasing sa->len to getnameinfo instead of sa_tmp->len. ASTERISK-18289 ------------------------------------------------------------------------ 2011-08-10 Asterisk Development Team * Asterisk 1.8.6.0-rc1 Released. 2011-08-10 13:47 +0000 [r331315] Kinsey Moore * main/manager.c: AMI action ModuleReload returns Error if Module: missing or empty An empty string was not being checked for properly causing identification of the module to be reloaded to fail and return an Error with message "No such module." (closes issue AST-616) 2011-08-09 22:12 +0000 [r331248] Richard Mudgett * channels/chan_iax2.c, apps/app_parkandannounce.c, main/pbx.c, channels/chan_sip.c, main/features.c: Misc minor items found in code. * Add some reentrancy protection in pbx.c when creating the contexts_table hash table. * Fix inverted test in chan_sip.c conditional code. * Fix uninitialized variable and use of the wrong variable in chan_iax2.c. * Fix test of return value in app_parkandannounce.c. Explicitly testing for -1 is bad if the function does not actually return that value when it fails. * Fixup some comments and add some curly braces in features.c. 2011-08-09 16:13 +0000 [r331146] Alexandr Anikin * addons/ooh323c/src/ooLogChan.c, addons/ooh323c/src/ooGkClient.c, addons/chan_ooh323.c: move ast_cond_signal for admitted call after all data filled/freed clear all log channels by pointed number not only first free allocated callToken in ooh323_answer 2011-08-09 15:58 +0000 [r331142] Jason Parker * doc/asterisk.8: Regenerate asterisk man page from sgml. 2011-08-08 20:52 +0000 [r331038] Kinsey Moore * res/res_musiconhold.c: In-queue MOH stops after a periodic announcement If the seek value is past the end of file when resuming G.722 MOH, MOH will cease to function for the duration of the MOH session through all starts and stops until saved state is cleared. Adjusting the code to guarantee a single valid read (which is already assumed) fixes the bug. (closes issue ASTERISK-18077) Review: https://reviewboard.asterisk.org/r/1328/ Tested-by: Jonathan Rose 2011-08-04 20:29 +0000 [r330843] Terry Wilson * configure, configure.ac: Make libsrtp instructions more explicit when linking fails (closes issue ASTERISK-18139) 2011-08-04 19:37 +0000 [r330827] Alexandr Anikin * addons/ooh323c/src/ooCmdChannel.c, addons/ooh323c/src/ooGkClient.c: change gk client behaivour on rrq/grq failures to setup timers and next tries after timeout instead of complete failure in the ooh323 stack 2011-08-03 15:14 +0000 [r330705-330762] Kinsey Moore * main/Makefile: editing files in main/editline does not ensure rebuild of libedit.a When editing a source file in main/editline, the build system does not rebuild libedit.a and uses the already existing one instead. Adding a PHONY to CHECK_SUBDIR fixes this problem. (closes issue ASTERISK-16221) Patch-by: Walter Doekes * channels/chan_dahdi.c, channels/sig_analog.c: Call pickup broken for DAHDI channels when beginning with # The call pickup feature did not work on DAHDI devices for anything other than feature codes beginning with * since all feature codes in chan_dahdi were originally hard-coded to begin with *. This patch is also applied to chan_dahdi.c to fix this bug with radio modes. (closes issue AST-621) Review: https://reviewboard.asterisk.org/r/1336/ 2011-08-02 20:51 +0000 [r330648] Kevin P. Fleming * res/res_jabber.c: Convert an error message to actually be helpful. 2011-08-02 16:15 +0000 [r330575-330581] David Vossel * channels/chan_iax2.c: Fixes crash in chan_iax2. Fixes crash in chan_iax2 resulting from an edge case in the way control frames are queued during calltoken negotiation is complete. (closes issue ASTERISK-17610) Reported by: mgrobecker * channels/chan_sip.c: Optimization to buffer initialization fix. * channels/chan_sip.c: Fixes uninitialized string buffer in log message. (closes issue ASTERISK-17200) Reported by: lmadsen 2011-08-01 15:22 +0000 [r330433] Kinsey Moore * main/say.c: Incorrect playback for Spanish in some circumstances When you say the time in spanish and it is 01:00 - 01:59 or 13:00 - 13:59 you must use female pronunciation "1F". The function "say_date_with_format_es" does not take this in account. (closes ASTERISK-15016) Patch-by: Luis Jimenez 2011-07-30 23:56 +0000 [r330368] Richard Mudgett * main/channel.c: Remove some redundant locking code in ast_do_masquerade(). Also updated some comments. 2011-07-30 15:25 +0000 [r330311] Gregory Nietsky * main/channel.c: prevent double masqurading channels when one is been hung up and deadlock avoidance is used. There is a race condition in ast_do_masquerade / ast_hangup (at least) Reported by me signed off by schmidts with input from David Vossel Review: https://reviewboard.asterisk.org/r/1323/ 2011-07-29 17:18 +0000 [r330203-330213] Sean Bright * formats/format_wav.c: Correct the check for O_RDONLY. * formats/format_wav.c: Only write to wav files that were opened to be written to. 2011-07-28 21:42 +0000 [r330107] Terry Wilson * main/term.c: Make console colors work for TERM=xterm-256color 2011-07-28 17:04 +0000 [r330050] Richard Mudgett * channels/sig_pri.c: Merged revisions 330033 from https://origsvn.digium.com/svn/asterisk/be/branches/C.3-bier .......... r330033 | rmudgett | 2011-07-28 11:26:38 -0500 (Thu, 28 Jul 2011) | 15 lines Datacalls with B410P fail. Incoming and outgoing call legs of a data call are using different formats: a-law, u-law. When the call is bridged, the media stream is run through translation to convert the media formats. The translation is bad for data calls. * Make incoming call that does not explicitly specify u-law or a-law use the DAHDI channel's default law. The outgoing call always uses the default law from the DAHDI channel. (closes issue ABE-2800) Patches: jira_abe_2800_companding.patch (license #5621) patch uploaded by rmudgett .......... 2011-07-28 15:45 +0000 [r329994] Jason Parker * channels/chan_sip.c: Fix a SIP transfer deadlock. The locking in this function is very scary. There are like 6 structs involved. (closes issue AST-470) 2011-07-28 15:26 +0000 [r329991] Matthew Nicholson * res/res_fax.c: check for CONFIG_STATUS_FILE_INVALID when loading the res_fax config file Patch by: tzafrir Reported by: tzafrir (closes issue ASTERISK-18161) 2011-07-28 11:34 +0000 [r329895] Sean Bright * channels/chan_sip.c: Make the output of Externhost in 'sip show settings' more consistent. 2011-07-27 19:27 +0000 [r329782] Leif Madsen * apps/app_confbridge.c: Change support for ConfBridge() in 1.8 to Extended. 2011-07-27 19:17 +0000 [r329767] Sean Bright * Makefile.moddir_rules: Explicitly sort the module list so that the menuselect lists are sorted. (closes issue ASTERISK-18141) Reported by: Richard Miller Patches: sort-order.diff uploaded by seanbright (License #5060) Tested by: leifmadsen 2011-07-27 18:10 +0000 [r329709] Jonathan Rose * configs/indications.conf.sample: Fix New Zealand indications profile based on http://www.telepermit.co.nz/TNA102.pdf (closes issue ASTERISK-16263) Reported by: richardf Patches: nz-indications.patch uploaded by richardf (License #6015) 2011-07-27 04:23 +0000 [r329613] Tilghman Lesher * cdr/cdr_odbc.c: Duration and billsec are swapped in high resolution time. Closes ASTERISK-18024 Patches: 20110726__ASTERISK-18024.diff by Tilghman Lesher (License 5003) 2011-07-26 14:04 +0000 [r329527-329529] Jonathan Rose * apps/app_voicemail.c: Changes sound file for prepend "then-press-pound" to "vm-then-pound" which is the same prompt, only it turned out "then-press-pound" was part of extra sounds. Also, vm is more appropriate anyway. * main/app.c, apps/app_voicemail.c, include/asterisk/app.h, configs/voicemail.conf.sample: Fixes some voicemail forwarding behavior based around prepend mode. Formerly, prepend forwarding would have the user record a message with no useful prompt and an expectation for the user to push a button on the phone when finished recording. If a length of silence was detected instead, the recording would be canceled and the user would re-enter the voicemail forwarding menu. Subsequent time-outs in prepend recording would also bug out in the sense that they would write over the original message and get sent to the recipient regardless of whether they timed out or were accepted. This patch fixes this issue and adds a prompt which will be played after a timeout informing the user that they needed to press a button. Currently, the sound files that we have are somewhat inadquate for this, so after the call we simply have Allison say "Please try again. Then press pound." which actually relies on two separate sound files. Just one would be more appropriate. reporter: Vlad Povorozniuc Review: https://reviewboard.asterisk.org/r/1327/ 2011-07-25 19:49 +0000 [r329471] Paul Belanger * main/enum.c: Decrease verbose messages to debug, to help clean up CLI. 2011-07-22 21:10 +0000 [r329144-329333] Richard Mudgett * main/pbx.c: Fix memory leak in an allocation error path of handle_statechange(). * Make use buffer accessor function in handle_statechange() rather than directly accessing the struct member. * Make use less redundant loop construct for iterating over hints. * main/pbx.c: Deadlocks dealing with dialplan hints during reload. There are two remaining different deadlocks reported dealing with dialplan hints. The deadlock in ASTERISK-17666 is caused by invalid locking order in ast_remove_hint(). The hints container must be locked before the hint object. The deadlock in ASTERISK-17760 is caused by a catch-22 situation in handle_statechange(). The deadlock is caused by not having the conlock before calling the watcher callbacks. Unfortunately, having that lock causes a different deadlock as reported in ASTERISK-16961. * Fixed ast_remove_hint() locking order. * Made handle_statechange() no longer call the watcher callbacks holding any locks that matter. * Made hint ao2 destructor do the watcher callbacks for extension deactivation to guarantee that they get called. * Fixed hint reference leak in ast_add_hint() if the callback container constructor failed. * Fixed hint reference leak in complete_core_show_hint() for every hint it found for CLI tab completion. * Adjusted locking in ast_merge_contexts_and_delete() for safety. * Added context_merge_lock to prevent ast_merge_contexts_and_delete() and handle_statechange() from interfering with each other. * Fixed ast_change_hint() not taking into account that the extension is used for the hash key. (closes issue ASTERISK-17666) Reported by: irroot Tested by: irroot JIRA SWP-3318 (closes issue ASTERISK-17760) Reported by: Byron Clark Tested by: irroot JIRA SWP-3393 Review: https://reviewboard.asterisk.org/r/1313/ * channels/chan_dahdi.c, configs/chan_dahdi.conf.sample: Document parkinglot in chan_dahdi.conf.sample. * Document existing feature in chan_dahdi.conf.sample. * Remove some dead code related to the parkinglot option. * apps/app_directed_pickup.c: Update PickupChan documentation. The PickupChan uses the ampersand as the argument separator. Was documented as: PickupChan(channel[,channel2[,...][,options]]) Fixed documentation to: PickupChan(Technology/Resource[&Technology2/Resource2[&...]][,options]) This is a continuation of ASTERISK-17494 for v1.8 and later. (closes issue ASTERISK-18144) Reported by: Erik Smith Patches: pickupchan_ducumentation-v2.patch (License #6263) patch uploaded by Erik Smith Tested by: Erik Smith * main/features.c: Dialplan bridge() app mutex 'current_dest_chan' freed more times than we've locked! This appears to be a leftover from when ast_channel was converted to ao2 objects. Simply removed the extraneous unlock. (closes issue ASTERISK-17772) 2011-07-20 21:20 +0000 [r329027] Paul Belanger * UPGRADE.txt: Asterisk now requires libpri 1.4.11+ for PRI support. 2011-07-20 20:52 +0000 [r329012] Richard Mudgett * channels/sig_pri.c, channels/sig_pri.h, channels/chan_dahdi.c: Backport useful CLI "pri show channels" command to v1.8. The "pri show channels" command is useful for debuging to see if there are any stuck B channels. .......... r307964 | rmudgett | 2011-02-15 15:42:55 -0600 (Tue, 15 Feb 2011) | 9 lines Add CLI "pri show channels" command. List the current mapping of DAHDI B channels to Asterisk channel names and which calls are on hold or call-waiting. Calls on hold or call-waiting are not associated with any B channel. JIRA LIBPRI-27 JIRA SWP-2547 .......... r308205 | rmudgett | 2011-02-17 14:21:56 -0600 (Thu, 17 Feb 2011) | 1 line Add more verbage to CLI command 'pri show channels' usage. .......... r312579 | rmudgett | 2011-04-04 11:17:58 -0500 (Mon, 04 Apr 2011) | 59 lines Change also updates 'pri show channels' command with the "chan idle" column to report if a channel is available for use. 2011-07-20 20:16 +0000 [r328987] Terry Wilson * tests/test_netsock2.c: We can't guarantee an eth0 is present FreeBSD test fails on this case presumably because there is no eth0 on the test machine. Better to just remove this test for now. 2011-07-20 19:00 +0000 [r328935] Kinsey Moore * channels/chan_sip.c: Inband DTMF regression The functionality of inband DTMF in chan_sip relied upon ast_rtp_instance_dtmf_mode_get/set not working properly to avoid calling ast_rtp_instance_dtmf_begin/end on RTP streams with inband DTMF. According to documentation, ast_rtp_instance_dtmf_begin/end is meant only for RFC2833 DTMF, never inband. This fixes the regression introduced in revision 328823. 2011-07-19 21:29 +0000 [r328878] Kevin P. Fleming * sounds/Makefile, Makefile, Makefile.moddir_rules: Revert partial attempt at handling pathnames with spaces. Revision 299794 attempted to improve the build system to be able to handle pathnames (primarily DESTDIR) with spaces in them, since this is common on some platforms (including Mac OSX). Unfortunately, the changes were incomplete and did not actually provide the desired behavior, and as a side effect the functionality that ensured that stale headers in the Asterisk 'include' directory were removed got broken. In addition, the check for stale (and possibly incompatible) modules in the Asterisk 'modules' directory also got broken, and would never report any stale modules. Users upgrading to this version or later versions would then see unexpected module load errors. Since there are few users who actually want to install Asterisk into paths that contain spaces, and a proper fix for the build system would take many hours, the best solution for now is to just revert the partial solution. 2011-07-19 17:57 +0000 [r328770-328823] Kinsey Moore * include/asterisk/rtp_engine.h, res/res_rtp_asterisk.c, main/rtp_engine.c, channels/chan_sip.c: RTP bridge away with inband DTMF and feature detection When deciding whether Asterisk was allowed to bridge the call away from the core, chan_sip did not take into account the usage of features on dialed channels that require monitoring of DTMF on channels utilizing inband DTMF. This would cause Asterisk to allow the call to be locally or remotely bridged, preventing access to the data required to detect activations of such features. (closes 17237) Review: https://reviewboard.asterisk.org/r/1302/ * apps/app_meetme.c: MeetMe requests a PIN twice in some circumstances If a call to MeetMe includes both the dynamic(D) and always request PIN(P) options, MeetMe will ask for the PIN two times: once for creating the conference and once for entering the conference. This behavior was introduced in rev 311616 when adding the CONFFLAG_ALWAYSPROMPT option to the logic branch controlling PIN entry for joining a conference. (closes AST-601) Review: https://reviewboard.asterisk.org/r/1305/ 2011-07-19 01:35 +0000 [r328716] Terry Wilson * tests/test_linkedlists.c (added), include/asterisk/linkedlists.h: Make AST_LIST_REMOVE safer AST_LIST_REMOVE shouldn't modify the element passed in if it isn't found. This commit also adds linked list unit tests. Review: https://reviewboard.asterisk.org/r/1321/ 2011-07-18 20:47 +0000 [r328593-328663] Mark Murawki * apps/app_dial.c: app_dial may double free a channel datastore When starting a call with originate, and having the callee channel run Bridge() on pickup, we will double free the dialed_interface_info datastore, causing a crash. Make sure to check if the datastore still exists before trying to free it. (closes issue ASTERISK-17917) Reported by: Mark Murawski Tested by: Mark Murawski * channels/chan_sip.c: If the sip private structure is null, sip_setoption() will defref the null pointer and crash. Ideally, sip_setoption shouldn't be called if there is a lack of a sip private structure. But this will fix a crash. (closes issue ASTERISK-17909) Reported by: Mark Murawski Tested by: Mark Murawski * main/asterisk.c: Fixed invalid read and null pointer deref on asterisk shutdown. In some cases when starting asterisk with -c and hitting control-c to shutdown, there will be an invalid read and null pointer deref causing a crash. (closes issue ASTERISK-17927) Reported by: Mark Murawski Tested by: Mark Murawski, Kinsey Moore, Tilghman Lesher 2011-07-18 07:10 +0000 [r328540] Tilghman Lesher * funcs/func_odbc.c: Typo 2011-07-15 20:41 +0000 [r328446] Leif Madsen * apps/app_macro.c, channels/chan_jingle.c, apps/app_dahdibarge.c, apps/app_readfile.c, apps/app_setcallerid.c, channels/chan_vpb.cc, apps/app_meetme.c, cdr/cdr_sqlite.c, channels/chan_h323.c: Revert changes to defaultenabled state for modules in Asterisk 1.8 2011-07-15 19:22 +0000 [r328427] Alexandr Anikin * addons/ooh323c/src/ooGkClient.c: small gk processing fixes: - decrease for 1 second registration ttl for very low expirations (some providers expire few earlier than TTL) - delete rrq and registration expire timers on URQ received as we make new registration. 2011-07-14 23:12 +0000 [r328302] Richard Mudgett * channels/chan_sip.c: Missing SIP pvt and channel unlock in sip_set_rtp_peer(). Regression introduced by -r326144. Add missing SIP pvt and channel unlock in sip_set_rtp_peer(). 2011-07-14 20:13 +0000 [r328209] Leif Madsen * apps/app_image.c, res/res_http_post.c, formats/format_wav_gsm.c, utils/stereorize.c, pbx/pbx_loopback.c, funcs/func_shell.c, main/features.c, channels/chan_alsa.c, apps/app_externalivr.c, formats/format_jpeg.c, res/res_speech.c, formats/format_gsm.c, apps/app_milliwatt.c, formats/format_g719.c, apps/app_saycounted.c, apps/app_fax.c, apps/app_echo.c, funcs/func_math.c, channels/chan_agent.c, apps/app_dahdiras.c, utils/astman.c, res/res_ael_share.c, apps/app_transfer.c, apps/app_playback.c, res/res_config_curl.c, funcs/func_curl.c, apps/app_waitforring.c, channels/chan_misdn.c, tests/test_skel.c, addons/cdr_mysql.c, codecs/codec_ilbc.c, apps/app_zapateller.c, apps/app_chanspy.c, apps/app_cdr.c, tests/test_substitution.c, funcs/func_md5.c, utils/muted.c, tests/test_gosub.c, funcs/func_sysinfo.c, funcs/func_vmcount.c, funcs/func_sha1.c, cdr/cdr_radius.c, formats/format_siren7.c, apps/app_controlplayback.c, funcs/func_config.c, main/manager.c, bridges/bridge_builtin_features.c, funcs/func_volume.c, cdr/cdr_sqlite.c, funcs/func_aes.c, funcs/func_frame_trace.c, tests/test_devicestate.c, res/res_agi.c, tests/test_astobj2.c, apps/app_confbridge.c, apps/app_ivrdemo.c, res/res_clioriginate.c, res/res_calendar_icalendar.c, funcs/func_dialplan.c, funcs/func_db.c, tests/test_ast_format_str_reduce.c, res/res_fax.c, res/res_limit.c, apps/app_festival.c, apps/app_waitforsilence.c, apps/app_waituntil.c, channels/chan_console.c, apps/app_getcpeid.c, apps/app_queue.c, funcs/func_global.c, funcs/func_extstate.c, channels/chan_usbradio.c, apps/app_flash.c, codecs/codec_ulaw.c, channels/chan_nbs.c, formats/format_g729.c, funcs/func_dialgroup.c, funcs/func_env.c, res/res_timing_dahdi.c, funcs/func_strings.c, res/res_calendar_caldav.c, apps/app_chanisavail.c, formats/format_sln16.c, apps/app_ices.c, apps/app_exec.c, bridges/bridge_multiplexed.c, cel/cel_odbc.c, formats/format_pcm.c, pbx/pbx_ael.c, formats/format_h263.c, cdr/cdr_manager.c, res/res_clialiases.c, funcs/func_sprintf.c, tests/test_app.c, apps/app_softhangup.c, codecs/codec_g726.c, apps/app_morsecode.c, utils/smsq.c, bridges/bridge_simple.c, tests/test_sched.c, apps/app_talkdetect.c, apps/app_db.c, res/res_calendar_ews.c, funcs/func_callcompletion.c, tests/test_acl.c, funcs/func_cdr.c, utils/ael_main.c, utils/streamplayer.c, res/res_calendar.c, cel/cel_radius.c, channels/chan_vpb.cc, res/res_snmp.c, apps/app_dictate.c, apps/app_authenticate.c, res/res_phoneprov.c, funcs/func_logic.c, res/res_jabber.c, funcs/func_uri.c, funcs/func_audiohookinherit.c, res/res_config_odbc.c, funcs/func_odbc.c, res/res_realtime.c, codecs/codec_resample.c, formats/format_h264.c, apps/app_rpt.c, channels/chan_mgcp.c, tests/test_amihooks.c, codecs/codec_lpc10.c, channels/chan_sip.c, cdr/cdr_syslog.c, funcs/func_lock.c, res/res_adsi.c, utils/conf2ael.c, tests/test_pbx.c, apps/app_channelredirect.c, formats/format_vox.c, res/res_stun_monitor.c, tests/test_aoc.c, formats/format_g723.c, utils/extconf.c, tests/test_poll.c, addons/chan_ooh323.c, cdr/cdr_sqlite3_custom.c, funcs/func_module.c, apps/app_sayunixtime.c, cdr/cdr_adaptive_odbc.c, res/res_smdi.c, tests/test_time.c, apps/app_skel.c, funcs/func_srv.c, apps/app_amd.c, pbx/pbx_realtime.c, apps/app_url.c, apps/app_dial.c, apps/app_page.c, channels/chan_bridge.c, apps/app_privacy.c, codecs/codec_speex.c, apps/app_disa.c, res/res_mutestream.c, res/res_monitor.c, apps/app_macro.c, res/res_timing_kqueue.c, res/res_fax_spandsp.c, channels/chan_unistim.c, funcs/func_base64.c, addons/app_mysql.c, channels/chan_multicast_rtp.c, apps/app_meetme.c, utils/hashtest.c, res/res_musiconhold.c, apps/app_followme.c, res/res_config_sqlite.c, cdr/cdr_csv.c, tests/test_security_events.c, formats/format_ilbc.c, funcs/func_enum.c, channels/chan_phone.c, tests/test_stringfields.c, funcs/func_groupcount.c, tests/test_locale.c, addons/chan_mobile.c, cdr/cdr_custom.c, res/res_security_log.c, apps/app_parkandannounce.c, apps/app_while.c, apps/app_jack.c, res/res_rtp_asterisk.c, apps/app_nbscat.c, codecs/codec_a_mu.c, tests/test_dlinklists.c, res/res_convert.c, pbx/pbx_lua.c, utils/astcanary.c, channels/chan_oss.c, tests/test_strings.c, res/res_srtp.c, cdr/cdr_tds.c, res/res_timing_pthread.c, apps/app_directed_pickup.c, channels/chan_h323.c, cel/cel_sqlite3_custom.c, apps/app_senddtmf.c, funcs/func_callerid.c, addons/app_saycountpl.c, cel/cel_pgsql.c, funcs/func_speex.c, apps/app_dahdibarge.c, channels/chan_local.c, tests/test_logger.c, apps/app_record.c, apps/app_playtones.c, bridges/bridge_softmix.c, apps/app_alarmreceiver.c, channels/chan_iax2.c, res/res_pktccops.c, res/res_rtp_multicast.c, channels/chan_dahdi.c, pbx/pbx_spool.c, funcs/func_pitchshift.c, channels/chan_skinny.c, apps/app_dumpchan.c, main/http.c, cdr/cdr_odbc.c, utils/refcounter.c, res/res_calendar_exchange.c, res/res_ais.c, codecs/codec_g722.c, tests/test_expr.c, funcs/func_timeout.c, cel/cel_tds.c, formats/format_wav.c, formats/format_ogg_vorbis.c, funcs/func_cut.c, apps/app_speech_utils.c, apps/app_sendtext.c, funcs/func_channel.c, utils/hashtest2.c, pbx/pbx_config.c, funcs/func_iconv.c, apps/app_mixmonitor.c, formats/format_g726.c, res/res_odbc.c, apps/app_voicemail.c, tests/test_heap.c, addons/format_mp3.c, formats/format_sln.c, apps/app_readexten.c, apps/app_userevent.c, codecs/codec_gsm.c, channels/chan_gtalk.c, cdr/cdr_pgsql.c, tests/test_func_file.c, apps/app_setcallerid.c, apps/app_osplookup.c, cel/cel_manager.c, cel/cel_custom.c, tests/test_utils.c, apps/app_minivm.c, apps/app_mp3.c, res/res_timing_timerfd.c, apps/app_directory.c, res/res_config_ldap.c, formats/format_siren14.c, apps/app_adsiprog.c, res/res_config_pgsql.c, apps/app_read.c, funcs/func_version.c, codecs/codec_alaw.c, agi/eagi-test.c, res/res_crypto.c, apps/app_originate.c, channels/chan_jingle.c, apps/app_forkcdr.c, funcs/func_blacklist.c, pbx/pbx_dundi.c, apps/app_sms.c, apps/app_stack.c, funcs/func_devstate.c, apps/app_verbose.c, addons/res_config_mysql.c, utils/check_expr.c, funcs/func_rand.c, apps/app_readfile.c, codecs/codec_adpcm.c, apps/app_test.c, tests/test_event.c: Introduce tags in MODULEINFO. This change introduces MODULEINFO into many modules in Asterisk in order to show the community support level for those modules. This is used by changes committed to menuselect by Russell Bryant recently (r917 in menuselect). More information about the support level types and what they mean is available on the wiki at https://wiki.asterisk.org/wiki/display/AST/Asterisk+Module+Support+States 2011-07-14 19:21 +0000 [r328205] Jonathan Rose * res/res_monitor.c: Monitor application arguments requirements fixed. Monitor was requiring options in spite of no individual option on Monitor being required. Review: https://reviewboard.asterisk.org/r/1320/ 2011-07-13 18:46 +0000 [r328014] Richard Mudgett * configs/features.conf.sample: Add ATXFER_NULL_TECH note in features.conf.sample. 2011-07-12 22:53 +0000 [r327950] Kevin P. Fleming * main/manager.c: Correct double-free situation in manager output processing. The process_output() function calls ast_str_append() and xml_translate() on its 'out' parameter, which is a pointer to an ast_str buffer. If either of these functions need to reallocate the ast_str so it will have more space, they will free the existing buffer and allocate a new one, returning the address of the new one. However, because process_output only receives a pointer to the ast_str, not a pointer to its caller's variable holding the pointer, if the original ast_str is freed, the caller will not know, and will continue to use it (and later attempt to free it). (reported by jkroon on #asterisk-dev) 2011-07-12 20:07 +0000 [r327890] Matthew Nicholson * apps/app_directory.c: search in the current context for 'a' and 'o' instead of 'default' 2011-07-12 19:38 +0000 [r327888] Jason Parker * Makefile: Fix uninstall target, so that modules dir gets cleared again. 2011-07-12 19:10 +0000 [r327852] Matthew Jordan * apps/app_voicemail.c: Added additional checks for mailbox / password beginning with '*' character A bug existed such that if a user entered a password with '*', and the extension 'a' did not exist, an invalid mailbox would be created and the user authenticated. The code was changed to prevent this from occurring, and to prevent users from having mailboxes or passwords defined that begin with the '*' character. (closes issue ASTERISK-17443) Reported by: Kevin Scott Adams Tested by: Matt Jordan Review: https://reviewboard.asterisk.org/r/1316/ 2011-07-12 15:35 +0000 [r327793] Tilghman Lesher * tests/test_substitution.c: Use 'printf' (POSIX issue 4) instead of 'echo -n', for portability. The problem with using 'echo -n' is that it is not portable. While BSD systems required that the '-n' option be removed and interpreted, System V required that all strings should be echoed with no interpretation of options. This fundamental difference of behavior means that it is never possible to use the '-n' flag to echo in tests which are meant to be portable. In this case, on Mac OS X 10.6, the /bin/sh shell builtin 'echo' uses the System V semantics of the command, and thus the SHELL test failed on that platform. http://pubs.opengroup.org/onlinepubs/009695399/utilities/echo.html#tag_04_41_16 2011-07-11 19:41 +0000 [r327682] Terry Wilson * include/asterisk/jingle.h, channels/chan_gtalk.c: Update chan_gtalk to work with changed GMail-based calls The messages sent by the GMail client have changed, but include the old-style messages as well. This patch checks for this case and uses the old-style offer. (closes issue ASTERISK-18084) Review: https://reviewboard.asterisk.org/r/1312/ 2011-07-11 13:53 +0000 [r327512] Matthew Nicholson * main/pbx.c, tests/test_substitution.c: reset our buffer each iteration when doing variable substitution 2011-07-11 10:56 +0000 [r327411-327412] Tzafrir Cohen * main/Makefile: Properly building the Debian armhf (HardFloat) port. Remove the line that should have been removed in r327411. * main/Makefile: fix building the Debian armhf (HardFloat) port Fixes http://buildd.debian-ports.org/status/fetch.php?pkg=asterisk&arch=armhf&ver=1%3A1.8.4.4~dfsg-2&stamp=1309935385 (Missing pthreads) 2011-07-08 22:27 +0000 [r327258] Jason Parker * main/db1-ast/mpool, addons, cdr, formats, codecs/gsm/src, funcs, addons/ooh323c/src, bridges, codecs/lpc10, main/db1-ast/btree, codecs/g722, main, main/db1-ast/recno, channels/sip, res, pbx, res/ael, channels, main/stdtime, addons/ooh323c/src/h323, codecs, utils, main/db1-ast/hash, cel, apps, main/db1-ast/db: Add .o files to svn:ignore property, since it's only ignored if locally configured to do so. 2011-07-08 21:41 +0000 [r327211] Richard Mudgett * channels/chan_sip.c: INVITE 403 Forbidden response always retransmits the maximum times. Asterisk sends a 403 Forbidden response if authentication fails for an INVITE as required. However, it ignores the ACK and keeps retransmitting the response. * Made not delete the to-tag in the dialog so the expected ACK can be matched with the dialog and stop the retransmissions. 2011-07-08 19:52 +0000 [r327106] Matthew Nicholson * main/pbx.c, tests/test_substitution.c: Reset our ast_str before passing it on to dialplan function backends. It is possible for a dialplan backend to not modify the given buffer or ast_str and still return success. This causes any previous value stored in the buffer to be used as if the new function call provided it. Some functions also append to the given buffer assuming it is empty. The test_substitution unit test has also been modified to detect this problem. (closes issue ASTERISK-17878) 2011-07-08 16:00 +0000 [r327044-327046] Russell Bryant * tests/test_netsock2.c: Fix an error and add more log message info to help see why this fails on FreeBSD. * channels/chan_dahdi.c: Resolve some set-but-unused-variable warnings. 2011-07-08 01:08 +0000 [r326985] Richard Mudgett * main/pbx.c: Some code cleanup in pbx.c * Mostly comment and format changes. * ast_context_remove_extension_callerid() and ast_add_extension_nolock() will write lock the found specific context. * ast_context_find() will now tolerate a NULL name. * Eliminated some inlined versions of find_context() and find_context_locked(). 2011-07-07 19:17 +0000 [r326830] Tilghman Lesher * res/res_http_post.c: libgen.h is also needed on Darwin for basename(3) 2011-07-07 16:04 +0000 [r326689] Jonathan Rose * res/res_config_odbc.c: res_odbc patch by tilghman to fix integers with null values Addresses some improper sql statements in res_odbc that would cause an update to fail on realtime peers due to trying to set as "(NULL)" rather than an actual NULL. (closes issue #1922STERISK-17791) Reported by: marcelloceschia Patches: 20110505__issue19223.diff.txt uploaded by tilghman (license 14) 2011-07-07 15:28 +0000 [r326681-326683] Matthew Nicholson * channels/chan_sip.c: use sips: or sip: depending on the transport in use when building reply digest URIs * channels/chan_sip.c: make the uri parameter used in reply digests more standards compliant in certain cases by prepending "sip:" or "sips:" to it 2011-07-06 15:26 +0000 [r326484] David Vossel * res/res_timing_timerfd.c: Reverts fix for timerfd locking issue. jrose discovered a performance issue with this fix that prevents his analog phones from working when using timerfd as a timing source. Until it is understood what is causing this performance problem, this patch is being reverted. 2011-07-06 14:35 +0000 [r326411-326469] Tilghman Lesher * pbx/pbx_dundi.c, channels/chan_gtalk.c, apps/app_queue.c, channels/chan_iax2.c, res/res_jabber.c, apps/app_stack.c, channels/chan_mgcp.c, apps/app_voicemail.c, channels/chan_jingle.c, channels/chan_dahdi.c, funcs/func_speex.c, channels/chan_sip.c, codecs/codec_speex.c, funcs/func_aes.c: Removing type attributes, as a change to menuselect makes them no longer necessary. * pbx/pbx_dundi.c, channels/chan_gtalk.c, apps/app_queue.c, channels/chan_iax2.c, res/res_jabber.c, apps/app_stack.c, channels/chan_mgcp.c, apps/app_voicemail.c, channels/chan_jingle.c, channels/chan_dahdi.c, funcs/func_speex.c, channels/chan_sip.c, codecs/codec_speex.c, funcs/func_aes.c: Add the attribute "type" to each "" for menuselect. This matters only when autoconf fails to detect that weak linking is supported. External optional dependencies will become optional in both cases, as they are removed at compile time when not detected. However, runtime-optional modules are made mandatory when weak linking is not found. This change affects only the external optional dependencies; previously, they were incorrectly required when weak linking support was not detected. Patches: 20110702__issue18062__asterisk_trunk.diff.txt by tilghman (License #5003) Tested by: iasgoscouk 2011-07-05 17:22 +0000 [r326291] Richard Mudgett * channels/sip/include/sip.h, channels/chan_sip.c: Used auth= parameter freed during "sip reload" causes crash. If you use the auth= parameter and do a "sip reload" while there is an ongoing call. The peer->auth data points to free'd memory. The patch does several things: 1) Puts the authentication list into an ao2 object for reference counting to fix the reported crash during a SIP reload. 2) Converts the authentication list from open coding to AST list macros. 3) Adds display of the global authentication list in "sip show settings". (closes issue ASTERISK-17939) Reported by: wdoekes Patches: jira_asterisk_17939_v1.8.patch (license #5621) patch uploaded by rmudgett Review: https://reviewboard.asterisk.org/r/1303/ JIRA SWP-3526 2011-07-05 13:23 +0000 [r326209] Matthew Jordan * main/file.c: Updated filestream destructor to block until move is complete when cache is used When a cache directory is used, the process is forked and a mv command is executed to move the temporary file to the permanent location. This caused issues with voicemail, where a race condition occurred when the parent expected the file to be in the permanent location prior to the mv command completing. The parent process is now blocked until the mv command completes. (closes issue ASTERISK-17724) Reported by: Adiren P. Tested by: mjordan 2011-07-01 21:07 +0000 [r326144] Richard Mudgett * channels/chan_sip.c: Better way to get chan and pvt lock for issue ASTERISK-17431. Redoes -r308945 for issue ASTERISK-17431 deadlock fix for sip_set_udptl_peer() and sip_set_rtp_peer(). * Lock the channels in the defined order and avoid the need for a deadlock avoidance loop. * Lock the channel before getting the pointer to the private structure to be sure that the pointer will not change due to a masquerade or channel hangup. * To preserve sanity, check that chan and p->owner are the same. (Pointer rearangements should not happen without the protection of locks because bad things tend to happen otherwise.) 2011-06-30 20:39 +0000 [r325935] Richard Mudgett * configs/sip.conf.sample, channels/chan_sip.c: Misc minor changes in chan_sip. * Add load failure exit if primary SIP container(s) could not get created in chan_sip.c:load_module(). * Removed a redundant static prototype. * Some typos. * Some whitespace. 2011-06-30 20:09 +0000 [r325877] Matthew Jordan * apps/app_voicemail.c: Patched voicemail user option for emailbody / emailsubject Incorporated changes per ASTERISK-16795; updated unit tests to check for vmu->emailbody / vmu->emailsubject (closes issue ASTERISK-16795) Reported by: mdeneen Tested by: mjordan 2011-06-30 19:17 +0000 [r325821] Jonathan Rose * res/res_musiconhold.c: Fixes an issue with Music on Hold classes losing files in playlist when realtime is used. The bug occurs rather intermittently and I relied on the reporters to test the patch. After a sanity check and some testing, I'm giving it an OK. (closes issue ASTERISK-17875) Reported by: David Cunningham Patches: res_musiconhold.c.mohrt17875_v1 uploaded by Igor Goncharovsky (license #5009) 2011-06-29 21:49 +0000 [r325740] Kinsey Moore * channels/sip/include/sip.h, channels/chan_sip.c: chan_sip: cleanup from the introduction of ast_str Remove the length field from sip_req and sip_pkt in chan_sip since they are redundant (ast_str holds its own length) and refactor the necessary functions. Review: https://reviewboard.asterisk.org/r/1281/ 2011-07-11 Leif Madsen * Asterisk 1.8.5.0 Released. * r326484 | dvossel | 2011-07-06 10:26:49 -0500 (Wed, 06 Jul 2011) Reverts fix for timerfd locking issue. jrose discovered a performance issue with this fix that prevents his analog phones from working when using timerfd as a timing source. Until it is understood what is causing this performance problem, this patch is being reverted. 2011-06-29 Leif Madsen * Asterisk 1.8.5-rc1 Released. 2011-06-29 18:59 +0000 [r325673] David Vossel * res/res_timing_timerfd.c: Fixes timerfd locking issue. (closes ASTERISK-17867, ASTERISK-17415) Patches: fix uploaded by kobaz https://reviewboard.asterisk.org/r/1255/ 2011-06-29 18:16 +0000 [r325610-325614] Richard Mudgett * apps/app_queue.c: Fixed some error exit cleanup in app_queue.c. * Fixed error exit cleanup in app_queue.c copy_rules() and reload_queue_rules(). * apps/app_queue.c: Response to QueueRule manager command does not contain ActionID if it was specified. * Add ActionID support as documented for the QueueRule AMI action. * Remove documentation for ActionID with the Queues AMI action. The output does not follow normal AMI response output and there is no place to put an ActionID header. (closes issue AST-602) Reported by: Vlad Povorozniuc Patches: jira_ast_602_v1.8.patch (license #5621) patch uploaded by rmudgett Tested by: Vlad Povorozniuc, rmudgett Review: https://reviewboard.asterisk.org/r/1295/ JIRA SWP-3575 2011-06-29 16:18 +0000 [r325537-325545] Matthew Nicholson * main/channel.c: make framehooks prevent native bridging (for real this time) * apps/app_dial.c, main/rtp_engine.c: don't do native/remote bridging if a framehook is active on the channel 2011-06-28 21:50 +0000 [r325416] Kevin P. Fleming * channels/chan_sip.c: Fix random misspelling noticed on asterisk-users. 2011-06-28 20:31 +0000 [r325339] David Vossel * channels/chan_sip.c: Fixes locking inversion caused by holding sip pvt lock during async_goto. (closes ASTERISK-17352) 2011-06-28 20:07 +0000 [r325279] Terry Wilson * /, channels/chan_sip.c: Merged revisions 325277 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r325277 | twilson | 2011-06-28 15:06:16 -0500 (Tue, 28 Jun 2011) | 9 lines Merged revisions 325275 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r325275 | twilson | 2011-06-28 15:03:19 -0500 (Tue, 28 Jun 2011) | 2 lines Don't leak SIP username information ........ ................ 2011-06-28 17:30 +0000 [r325212] Richard Mudgett * channels/chan_dahdi.c: Use the device name and not the channel name to initialize the device state. Correct ASTERISK-11323 implementation as I don't see how it ever worked as claimed when it used the channel name and not the device name. (issue ASTERISK-11323) 2011-06-28 15:46 +0000 [r325152] Jonathan Rose * res/res_musiconhold.c: Fixes moh reload breaking custom mode moh classes when the config file is untouched (closes issue ASTERISK-17730) Reported by: sdolloff 2011-06-28 15:12 +0000 [r325091] Leif Madsen * build_tools/prep_tarball: Remove line from prep_tarball that kills mkrelease. 2011-06-27 16:30 +0000 [r324955] Tilghman Lesher * main/asterisk.c: Save and restore errno from within signal handlers. This is recommended by the POSIX standard, as well as by the sigaction(2) manpage for various platforms that we support (e.g. Mac OS X). 2011-06-27 15:37 +0000 [r324914] Richard Mudgett * channels/chan_sip.c: When subscribing MWI to an unsolicited mailbox the first notification is incorrect. A remote peer subscribed to MWI with the unsolicited option and a local phone subscribed to the remote mailbox. The notify message-summary events are sent correctly except for the first one when subscribing, which will always be 0. This means the phone MWI indicator will be wrong until the mailbox read/unread count changes and the event is fired. Looks like this is a regression from ASTERISK-16149. * Fix the logic to check the cache and if allowed then fallback to manually counting mailbox messages. (closes issue ASTERISK-17997) Reported by: rsw686 Patches: jira_asterisk_17997_v1.8.patch (license #5621) uploaded by rmudgett Tested by: rsw686 JIRA SWP-3551 2011-06-24 20:46 +0000 [r324849] Richard Mudgett * pbx/pbx_config.c: Syntax errors in dialplan do not display the file name. When issuing the CLI command "dialplan reload" syntax errors and warnings are displayed on the console. The offending line number is displayed on the console, but the file name is not displayed. Errors caught in main/config.c do display the file name. (closes issue ASTERISK-17985) Reported by: ulogic Patches: pbx_config.patch uploaded by ulogic (License #5685) modified format Tested by: rmudgett JIRA SWP-3554 2011-06-24 16:48 +0000 [r324768] Jonathan Rose * include/asterisk/logger.h: DTMF wasn't being logged on connected consoles when enabled in logger.conf Previously in order for DTMF to be logged in a connected console session, the user would have to do logger set channel DTMF on. This corrects that so that it is on by default. This issue was caused by an off by one error incurred by a logger level count of 6 in logger.h where it should have been 7. (closes issue: ASTERISK-17974) Reported by: Luke H 2011-06-23 18:31 +0000 [r324685] David Vossel * channels/sip/reqresp_parser.c: Fixes sip crash when calling remove_uri_parameters with NULL AST-2011-009 (closes issue ASTERISK-18017) Reported by: jaredmauch 2011-06-23 18:29 +0000 [r324678] Kinsey Moore * /, channels/chan_sip.c: Merged revisions 324643 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r324643 | kmoore | 2011-06-23 13:21:12 -0500 (Thu, 23 Jun 2011) | 4 lines Addresses AST-2011-008, memory corruption and remote crash in SIP driver. AST-2011-008 ........ 2011-06-23 18:23 +0000 [r324652] David Vossel * channels/chan_iax2.c, include/asterisk/frame.h, /, main/features.c: Merged revisions 324634 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r324634 | dvossel | 2011-06-23 13:18:46 -0500 (Thu, 23 Jun 2011) | 13 lines Merged revisions 324627 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r324627 | dvossel | 2011-06-23 13:16:52 -0500 (Thu, 23 Jun 2011) | 7 lines Addresses AST-2011-010, remote crash in IAX2 driver Thanks to twilson for identifying the issue and providing the patches. AST-2011-010 ........ ................ 2011-06-23 03:10 +0000 [r324557] Terry Wilson * tests/test_netsock2.c: Remove tests for parsing address with invalid port getaddrinfo on OS X returns with EAI_NONAME error when passed a port greater than 65535. Linux throws no error, so remove the tests for now. 2011-06-22 19:16 +0000 [r324491] Richard Mudgett * channels/chan_sip.c: Use correct variable for text SRTP media. 2011-06-22 18:52 +0000 [r324484] Terry Wilson * include/asterisk/netsock2.h, tests/test_netsock2.c (added), main/netsock2.c, channels/chan_sip.c: Stop sending IPv6 link-local scope-ids in SIP messages The idea behind the patch listed below was used, but in a more targeted manner. There are now address stringification functions for addresses that are meant to be sent to a remote party. Link-local scope-ids only make sense on the machine from which they originate and so are stripped in the new functions. There is also a host sanitization function added to chan_sip which is used for when peer and dialog tohost fields or sip_registry hostnames are used to craft a SIP message. Also added are some basic unit tests for netsock2 address parsing. (closes issue ASTERISK-17711) Reported by: ch_djalel Patches: asterisk-1.8.3.2-ipv6_ll_scope.patch uploaded by ch_djalel (license 1251) Review: https://reviewboard.asterisk.org/r/1278/ 2011-06-22 18:41 +0000 [r324479-324481] Richard Mudgett * channels/chan_sip.c: Timout or error on INFO or MESSAGE transaction causes call to be lost. When exchanging INFO messages within a call, 4xx error causes the call to be disconnected although RFC 2976 explicitly states that such transactions do not modify the state of the dialog. When exchanging MESSAGE messages within a call, 4xx error causes the call to be disconnected. To provide least surprise, we should not disconnect the call since a MESSAGE is like INFO in this case. (Implied by RFC 3428 Section 2) (closes issue ASTERISK-17901) Reported by: neutrino88 Review: https://reviewboard.asterisk.org/r/1257/ Review: https://reviewboard.asterisk.org/r/1258/ JIRA SWP-3486 * channels/chan_sip.c: Comments and whitespace in chan_sip.c 2011-06-21 20:11 +0000 [r324364] David Vossel * include/asterisk/pbx.h, main/pbx.c: Fixes locking inversion issue in ast_async_goto() During this function we can not hold the "chan" lock while doing the masquerade, the explicit goto on the tmp chan, or the channel alloc. Instead we need to get the channel lock, store off information about the channel that we need, and then let the channel lock go for the remainder of the function. Review: https://reviewboard.asterisk.org/r/1275/ 2011-06-21 16:09 +0000 [r324305] Kinsey Moore * apps/app_confbridge.c: ConfBridge does not handle hangup properly When playing back a prompt to a channel, confbridge neglects to check for hangup events causing lockup condititions for hangups that occur before actually joining the conference. This change ensures that the user is removed from the conference in the event of a premature hangup. Review: https://reviewboard.asterisk.org/r/1277/ 2011-06-20 18:12 +0000 [r324239-324241] Leif Madsen * configs/queuerules.conf.sample: Remove extra 'the'. Reported by Vlad Povorozniuc * configs/queuerules.conf.sample, contrib/scripts/asterisk.logrotate: Revert previous merge which had extra changes. * configs/queuerules.conf.sample, contrib/scripts/asterisk.logrotate: Remove extra 'the'. Reported by Vlad Povorozniuc 2011-06-20 17:33 +0000 [r324237] Terry Wilson * channels/chan_sip.c: Ignore media offers with a port of 0 Section 5.1 of RFC3264 states: A port number of zero in the offer indicates that the stream is offered but MUST NOT be used. (closes issue ASTERISK-17845) Reported by: jacco Patches: issue19281_2.patch uploaded by jacco (license 1277) Tested by: jacco, twilson 2011-06-17 18:51 +0000 [r324176-324178] Leif Madsen * main/manager.c: Add Username and Secret fields to manager Login action. Pointed out by Vlad Povorozniuc * apps/app_meetme.c: Fix typo in documentation. Pointed out by Vlad Povorozniuc 2011-06-17 18:23 +0000 [r324174] Richard Mudgett * channels/chan_dahdi.c: Add header string to libpri debug output. Add header string to libpri debug output so the libpri output can be found/extracted easier from huge debug trace files. 2011-06-17 15:14 +0000 [r324115] Leif Madsen * main/pbx.c: Fix grammar in documentation for Goto() and GotoIf() (closes issue ASTERISK-18023) Reported by: Tim Osman 2011-06-16 22:41 +0000 [r324048-324049] Terry Wilson * channels/chan_local.c: Shame on me * include/asterisk/channel.h, main/channel.c, channels/chan_local.c, channels/chan_sip.c: Lock the channel before calling the setoption callback The channel needs to be locked before calling these callback functions. Also, sip_setoption needs to lock the pvt and a check p->rtp is non-null before using it. Review: https://reviewboard.asterisk.org/r/1220/ 2011-06-16 18:12 +0000 [r323990] Richard Mudgett * tests/test_event.c: The test_event unit test is occasionally failing. Wait for the special posted event to process before adding a new subscription. 2011-06-16 15:58 +0000 [r323754-323932] Terry Wilson * Makefile: Don't assume ASTDBDIR exists It most likely doesn't on FreeBSD * tests/test_db.c: Remove now-useless cast of ARRAY_LEN * include/asterisk/utils.h: Make ARRAY_LEN() return the same type on x86 and x86_64 systems * tests/test_db.c: Fix more ARRAY_LEN format string issues * /, main/features.c: Merged revisions 323733 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r323733 | twilson | 2011-06-15 13:13:00 -0500 (Wed, 15 Jun 2011) | 16 lines Merged revisions 323732 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r323732 | twilson | 2011-06-15 13:06:24 -0500 (Wed, 15 Jun 2011) | 9 lines Fix DYNAMIC_FEATURES DYNAMIC_FEATURES were broken by a recent DTMF change. This patch makes sure that dynamic features are also checked when deciding whether or not to pass DTMF through or store it for interpreting. (closes issue ASTERISK-17914) Reported by: vrban ........ ................ 2011-06-15 17:42 +0000 [r323730] Jonathan Rose * res/res_config_pgsql.c: Adds locking to find_table in res_configure_pgsql to prevent a crash. Bryonclark described the problem as occuring during this function because of multiple simultaneous database operations causing corruption against a pgsqlConn object. (closes issue ASTERISK-17811) Reported by: byronclark Patches: pgsql_find_table_locking.patch uploaded by byronclark (license 1200) 2011-06-15 17:09 +0000 [r323672] Terry Wilson * tests/test_db.c: Cast ARRAY_LEN to size_t for ast_logging 32-bit and 64-bit machines return different types for ARRAY_LEN(), so cast it before using in a format string. 2011-06-15 16:43 +0000 [r323669-323670] Richard Mudgett * tests/test_event.c: Add a test to the event unit tests to catch ASTERISK-18002. The new tests check to see if there are ANY subscribers to the event type when ast_event_check_subscriber() is not passed any specific ie values. (issue ASTERISK-18002) * main/event.c: [regression] Voicemail MWI is no longer sent. When leaving a voicemail, the MWI message is never sent. The same thing happens when checking a voicemail and marking it as read. If you restart Asterisk, everything comes up at that state correctly, but changes to the messages in voicemail causes the light to not be set appropriately. Very easy to reproduce. * Made ast_event_check_subscriber() return TRUE if there are ANY subscribers to an event type when there are no restricting ie values passed. This allows an event being queued to be queued. (closes issue ASTERISK-18002) Reported by: lmadsen Tested by: lmadsen, irroot Patches: jira_asterisk_18002_v1.8.patch uploaded by rmudgett (License #5621) (closes issue ASTERISK-18019) 2011-06-15 16:09 +0000 [r323610] Jonathan Rose * res/res_config_pgsql.c: Adds PQclear calls on result to various parts of res_conf_pgsql (closes issue ASTERISK-17812) Reported by: byronclark Patches: pgsql_pqclear.patch uploaded by byronclark (license 1200) 2011-06-15 15:31 +0000 [r323608] Sean Bright * main/manager.c, /: Merged revisions 323579 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r323579 | seanbright | 2011-06-15 11:22:50 -0400 (Wed, 15 Jun 2011) | 32 lines Merged revisions 323559 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r323559 | seanbright | 2011-06-15 11:15:30 -0400 (Wed, 15 Jun 2011) | 25 lines Resolve a segfault/bus error when we try to map memory that falls on a page boundary. The fix for ASTERISK-15359 was incorrect in that it added 1 to the length of the mmap'd region. The problem with this is that reading/writing to that extra byte outside of the bounds of the underlying fd causes a bus error. The real issue is that we are working with both a FILE * and the raw fd underneath it and not synchronizing between them. The code that was removed in ASTERISK-15359 was correct, but we weren't flushing the FILE * before mapping the fd. Looking at the manager code in 1.4 reveals that the FILE * in 'struct mansession' is never used except to create a temporary file that we immediately fdopen. This means we just need to write a 0 byte to the fd and everything will just work. The other branches require a call to fflush() which, while not a guaranteed fix, should reduce the likelihood of a crash. This all makes sense in my head. (closes issue ASTERISK-16460) Reported by: Ravelomanantsoa Hoby (hoby) Patches: issue17747_1.4_svn_markII.patch uploaded by Sean Bright (license #5060) ........ ................ 2011-06-15 00:50 +0000 [r323392-323456] Richard Mudgett * main/event.c: Add missing break in ast_event_get_cached(). * main/netsock2.c: Made ast_sockaddr_split_hostport() port warning msgs more meaningful. * main/dnsmgr.c: Add more strict hostname checking to ast_dnsmgr_lookup(). Change suggested in review. Review: https://reviewboard.asterisk.org/r/1240/ 2011-06-14 16:38 +0000 [r323371] Jonathan Rose * channels/chan_sip.c: Changes contact use in build_peer to use the FORCE_RPORT flag instead of RPORT_PRESENT It turned out that this was causing NAT=Yes to always use rport when present which was against 1.6.2 behavior and the check itself was redundant since the only way this segment of code could be reached was if RPORT_PRESENT was already evaluated as true earlier. (closes issue ASTERISK-17789) Reported by: byronclark Patches: use_sip_nat_force_rport.patch uploaded by byronclark (license 1200) 2011-06-14 16:33 +0000 [r323370] Terry Wilson * include/asterisk/rtp_engine.h, res/res_rtp_asterisk.c, main/rtp_engine.c, channels/chan_sip.c: Add rtpkeepalives back to 1.8 The RTP-engine conversion left out support for handling rtpkeepalives. This patch adds them back. (closes issue ASTERISK-17304) Reported by: lmadsen Review: https://reviewboard.asterisk.org/r/1226/ 2011-06-13 20:22 +0000 [r323154-323234] Leif Madsen * configs/sip.conf.sample: Additional documentation for bindaddr. Note that bindaddr will only enable UDP instead of both UDP and TCP which is what I would expect for backwards compatibility with systems being upgraded which only support UDP transportation. (closes issue ASTERISK-17976) Reported by: Sean Darcy * main/channel.c: Avoid dividing by zero with L() option to Dial() Reported by: nicolasom Patches: issue-17995.patch - nicolasom (License #5994) * res/res_agi.c: Tweak documentation for AGI Hangup command. (closes issue ASTERISK-17999) Reported by: Ben Klang Patches: hangup-doc.diff - uploaded by Ben Klang (License #5876) 2011-06-10 19:20 +0000 [r323040] Matthew Nicholson * channels/chan_sip.c: Unlock the sip channel during fax detection like chan_dahdi does to prevent a deadlock with ast_autoservice_stop. (closes issue ASTERISK-17798) tested by mnicholson 2011-06-10 15:29 +0000 [r322865-322981] Terry Wilson * main/db.c: Avoid a DB1 infinite loop bug Explicity check the last entry in the DB and make sure that we don't iterate past it. Since there can be no duplicates, this just makes sure that we stop after matching the last key. This patch also refactors the code to get away from some code duplication. A previous patch added many astdb tests and this patch passed them. Review: https://reviewboard.asterisk.org/r/1259/ * tests/test_db.c (added): Add some astdb unit tests * include/asterisk/astdb.h: Correct ast_db_deltree documentation ast_db_deltree returns -1 on error, otherwise the number of deletions 2011-06-09 17:37 +0000 [r322807] Matthew Nicholson * channels/chan_sip.c: don't drop any voice frames when checking for T.38 during early media (closes issue ASTERISK-17705) Review: https://reviewboard.asterisk.org/r/1186/ patch by oej reported by oej 2011-06-09 16:31 +0000 [r322749] Richard Mudgett * include/asterisk/features.h, apps/app_directed_pickup.c, main/features.c: Remove potential deadlock in call pickup race. Deadlock is possible in ast_do_pickup() when holding the target channel lock and trying to get the chan channel lock. Also, holding the target lock when calling ast_channel_masquerade() is not a good idea because that routine does deadlock avoidance. * Removed the need to hold the target lock after marking the target with a datastore and getting the connected line data off of the target channel. * Moved can_pickup() to ast_can_pickup() in features.c. Now all the call pickup methods use the same basic call pickup availability check. Review: https://reviewboard.asterisk.org/r/1234/ 2011-06-09 14:06 +0000 [r322585] Jonathan Rose * main/utils.c, include/asterisk/utils.h, channels/chan_sip.c, tests/test_utils.c: Adds ast_escape_encoded utility to properly handle escaping of quoted field before uri. This commit backports a feature in trunk affecting initreqprep so that display name won't be encoded improperly. Also includes unit tests for the ast_escape_quoted function. This patch gives 1.8 a much improved outlook in countries which don't use standard ASCII characters. (closes issue ASTERISK-16949) Reported by: Ă–rn Arnarson Review: https://reviewboard.asterisk.org/r/1235/ 2011-06-08 20:46 +0000 [r322425-322484] Richard Mudgett * apps/app_queue.c: Ring all queue with more than 255 agents will cause crash. 1. Create a ring-all queue with 500 permanent agents. 2. Call it. 3. Asterisk will crash. The watchers array in app_queue.c has a hard limit of 255. Bounds checking is not done on this array. No sane person should put 255 people in a ring-all queue, but we should not crash anyway. * Added bounds checking to the watchers array. JIRA AST-464 JIRA SWP-2903 * main/dnsmgr.c: SRV lookup attempted for SIP peers listed as an IP address. Asterisk attempts to SRV lookup a host name even if the host name is an IP address. Regression introduced when IPv6 support was added. * Restored the check in ast_dnsmgr_lookup() to see if the given host name is an IP address. The IP address could be in either IPv4 or IPv6 formats. (closes issue ASTERISK-17815) Reported by: Byron Clark Tested by: Byron Clark, Richard Mudgett Patches: issue19248_v1.8.patch - uploaded by Richard Mudgett (License #5621) Review: https://reviewboard.asterisk.org/r/1240/ 2011-06-08 06:18 +0000 [r322322] Gregory Nietsky * channels/chan_sip.c: Make handle_request_publish do dialog expiration and destruction. This patch fixes handle_request_publish so that it does dialog expiration and destruction. Without this patch the incoming PUBLISH requests will get stuck in the dialog list. Restarting asterisk is the only way to remove them. Personal observation on one system the server hung up while looping through the channels rendering asterisk unusable and all sip phones unregisterd when they try reregister more requests are added. (closes issue #18898) Reported by: gareth Tested by: loloski, Chainsaw, wimpy, se, kuj, irroot Jira: https://issues.asterisk.org/jira/browse/ASTERISK-17915 Review: https://reviewboard.asterisk.org/r/1253 2011-06-07 17:59 +0000 [r322189] Paul Belanger * configs/sip_notify.conf.sample: Use correct syntax for 'sip notify snom-reboot' (closes issue ASTERISK-17915) 2011-06-06 19:07 +0000 [r322069] Jonathan Rose * main/asterisk.c, include/asterisk/logger.h: Fixes level toggling for logger set levels since it was reversed (closes issue ASTERISK-17850) Reported by: Luke H Tested by: jrose, Luke H Review: https://reviewboard.asterisk.org/r/1244/ 2011-06-03 22:09 +0000 [r321812-321926] Richard Mudgett * cdr/cdr_radius.c, cel/cel_radius.c: Asterisk crash when unloading cdr_radius/cel_radius. The rc_openlog() API call is passed a string that is used by openlog() to format log messages. The openlog() does not copy the string it just keeps a pointer to it. When the module is unloaded, the string is gone from memory. Depending upon module load order and if the other module then has an error, a crash happens. * Pass rc_openlog() a strdup'd string with the understanding that there will be a small memory leak if the cdr_radius/cel_radius modules are unloaded. * Call rc_destroy() to free the rc handle memory when the module is unloaded. JIRA AST-483 JIRA SWP-3062 * main/ccss.c: Be more explicit for CCSS generic device state event subscription. Make CCSS generic device state event subscription specify the AST_EVENT_IE_STATE ie exists to be safe. * main/event.c, tests/test_event.c: Event subscription fixes. Must commit the subscription fixes together with the integration subscription tests. The subscription fixes cause an erroneously passing test to fail. The new subscription tests detect errors without the subscription fixes. * Added missing event_names[] table entry. * Reworked ast_event_check_subscriber()/match_sub_ie_val_to_event() to correctly detect if a subscriber exists for the proposed event. * Made match_ie_val() and match_sub_ie_val_to_event() check the buffer length for RAW payload types. * Fixed error handling memory leak in ast_event_sub_activate(), ast_event_unsubscribe(), and ast_event_queue(). * Made ast_event_new() and ast_event_check_subscriber() better protect themselves from an invalid payload type. * Added container lock protection between removing old cache events and adding the new cached event in ast_event_queue_and_cache()/event_update_cache(). * Added new event subscription tests. * main/event.c, include/asterisk/event.h: Constify subscription description parameter string. * channels/chan_iax2.c, channels/chan_sip.c: Correct IAX2 and SIP event subscription description string. 2011-06-03 18:32 +0000 [r321753] Russell Bryant * tests/test_astobj2.c: Backport an astobj2 unit test so that it runs on 1.8 as well. 2011-06-03 13:17 +0000 [r321685] Leif Madsen * configs/queues.conf.sample: Also document the 'queue-minute' option. (closes issue #19386) Reported by: juanmol 2011-06-01 23:11 +0000 [r321547] Richard Mudgett * main/cdr.c: CDR comment tweaks. 2011-06-01 20:10 +0000 [r321537] Brett Bryant * apps/app_voicemail.c: This patch fixes an issue with using the wrong voicemail folders with greetings. (closes issue #17871) Reported by: edhorton Patches: digium_bug_17871_2 uploaded by fhackenberger (license 592) Tested by: edhorton, fhackenberger 2011-06-01 10:40 +0000 [r321528] Alexandr Anikin * addons/ooh323c/src/oochannels.c, addons/chan_ooh323.c, addons/ooh323c/src/ooh245.c: Fix double alerting, add forced alerting before answer Fix double alerting (it wasn't fixed here by issue #18542) Add forced alerting before connect (if it wasn't before) Try to send all packets from outgoing queue rather than one only Call goes into clearing state when disconnect command is received (closes issue #19361) Reported by: vmikhelson Patches: issue19361-3.patch uploaded by may213 (license 454) Tested by: vmikhelson 2011-05-31 20:54 +0000 [r321517] Richard Mudgett * include/asterisk/dnsmgr.h, include/asterisk/acl.h: Update some comments. 2011-05-31 18:52 +0000 [r321515] David Vossel * channels/chan_local.c: Chan_local locking cleanup. This patch removes all of the unnecessary deadlock avoidance loops that occur in chan_local. It also resolves an issue with a deadlock triggered by local channel optimizations. (issue #18028) Review: https://reviewboard.asterisk.org/r/1231/ 2011-05-31 16:04 +0000 [r321511] Leif Madsen * channels/chan_sip.c: Enhance NOTICE message to know who couldn't access the dialplan. (closes issue #19390) Reported by: lmadsen Patches: __20110531-sip-notice-tweak.txt uploaded by lmadsen (license 10) Tested by: russell 2011-05-28 00:27 +0000 [r321337-321436] Richard Mudgett * res/res_agi.c: Some hagi launch cleanup. Inspired by issue 19256. This patch would also fix the crash. * main/srv.c: Crash when using hagi and no servers are available. When none of the servers returned by the SRV querey respond, asterisk crashes. The problem is that if the loop over all the SRV entries finishes then the srv_context has already been cleaned up. * Make ast_srv_cleanup() check to see if the context is already cleaned up. (closes issue #19256) Reported by: byronclark * apps/app_privacy.c: The app_privacy args have undocumented "options" position, interferes with "context" position. * Add documention for unused "options" position to match existing code. (closes issue #19273) Reported by: mdavenport 2011-05-27 21:54 +0000 [r321333-321335] Leif Madsen * include/asterisk/frame.h, main/file.c: Fix issue with playback of H.261 video. (closes issue #19379) Reported by: neutrino88 Patches: videoprompt.patch uploaded by neutrino88 (license 297) (changes by russell) * main/features.c: Allow parking lot hints and musicclass to be set. (closes issue #19378) Reported by: sboily_proformatique Patches: pf_parkinghint_music_fix uploaded by sboily proformatique (license 206) Tested by: russell 2011-05-27 21:31 +0000 [r321330] Richard Mudgett * apps/app_privacy.c: The app_privacy args have undocumented "options" position, interferes with "context" position. * Add documention for unused "options" position to match existing code. The trunk(v1.10) version will remove the unused options position. (closes issue #19273) Reported by: mdavenport 2011-05-27 14:59 +0000 [r321273] Jonathan Rose * channels/sip/reqresp_parser.c: markm committed a patch I was working on yesterday, this fixes it to mesh up with suggestions by mnicholson. 2011-05-27 08:31 +0000 [r321211] Alec L Davis * main/features.c: Fix *8 directed pickup locks system during pickupsound play out move playout from sip_pickup_thread to bridge using BRIDGE_PLAY_SOUND method, This stop the clash of 2 threads trying to write audio to same channel. In addition fixes choppy audio beep in issue 19177. (issue #18654) (issue #19177) Reported by: Docent Patches: review1232-1.88888888 alecdavis (license 585) Tested by: alecdavis Review: https://reviewboard.asterisk.org/r/1232/ 2011-05-26 21:48 +0000 [r321100-321155] Mark Murawki * channels/chan_sip.c, channels/sip/reqresp_parser.c: Fixed build problem with dev mode enabled, which was caused by commit 321100. Reformulated patch to be more generic. Moved the sip uri parse variable initalization to parse_uri_full in reqresp_parser.c. This will ensure that any use of parse uri will have null output variables if the parse fails. (closes issue #19346) Reported by: kobaz Tested by: kobaz,JonathanRose Review: [full review board URL with trailing slash] * main/netsock2.c, channels/chan_sip.c: ast_sockaddr_resolve() in netsock2.c may deref a null pointer Added a null check in netsock2 ast_sockaddr_resolve() as well as added default initalizers in chan_sip parse_uri_legacy_check() to make sure that invalid uris will make null (and not undefined) user,pass,domain,transport variables (closes issue #19346) Reported by: kobaz Patches: netsock2.patch uploaded by kobaz (license 834) Tested by: kobaz, Marquis 2011-05-26 18:10 +0000 [r321044] Richard Mudgett * include/asterisk/netsock2.h: Update ast_sockaddr comment with an important note. 2011-05-26 17:29 +0000 [r321042] Terry Wilson * main/rtp_engine.c: Initialize stack-allocated ast_sockaddrs before use It is important to always initialize ast_sockaddrs before use--even if they are passed to ast_sockaddr_copy as the underlying storage could be bigger than what ends up being copied--leaving part of the data unitialized. 2011-05-26 15:57 +0000 [r320947] Russell Bryant * channels/chan_alsa.c, channels/chan_mgcp.c: Remove some variables that were set but unused. 2011-05-25 22:25 +0000 [r320796-320883] Richard Mudgett * channels/chan_sip.c: Native SIP CCSS sends bad CC cancel SUBSCRIBE message. The SUBSCRIBE message used to cancel a CC request has incorrect To/From SIP headers. They are reversed and the dialog tags are the same when they should not be. If pedantic mode was disabled, then the cancel would have succeeded despite the incorrect message. * The SIP_OUTGOING flag was not set correctly for the dialog and I had to move some CC subscribe handling code as a result. * Initialized the dialog subscribed type to CALL_COMPLETION earlier. If a CC request SUBSCRIBE message comes in and the CC instance is not found, the 404 response was duplicated. JIRA AST-568 JIRA SWP-3493 * UPGRADE.txt, CHANGES, apps/app_queue.c, apps/app_dial.c, main/channel.c, main/manager.c, apps/app_meetme.c, apps/app_fax.c, main/features.c: The AMI Newstate event contains different information between v1.4 and v1.8. The addition of connected line support in v1.8 changes the behavior of the channel caller ID somewhat. The channel caller ID value no longer time shares with the connected line ID on outgoing call legs. The timing of some AMI events/responses output the connected line ID as caller ID. These party ID's are now separate. * The ConnectedLineNum and ConnectedLineName headers were added to many AMI events/responses if the CallerIDNum/CallerIDName headers were also present. (closes issue #18252) Reported by: gje Tested by: rmudgett Review: https://reviewboard.asterisk.org/r/1227/ * include/asterisk/channel.h, main/channel.c, main/features.c: Give zombies a safe channel driver to use. Recent crashes from zombie channels suggests that they need a safe home to goto. When a masquerade happens, the physical part of the zombie channel is hungup. The hangup normally sets the channel private pointer to NULL. If someone then blindly does a callback to the channel driver, a crash is likely because the private pointer is NULL. The masquerade now sets the channel technology of zombie channels to the kill channel driver. Related to the following issues: (issue #19116) (issue #19310) Review: https://reviewboard.asterisk.org/r/1224/ 2011-05-25 00:49 +0000 [r320716] Terry Wilson * addons/chan_mobile.c: Cast data as char * before using S_OR This is required for compiling successfully under dev mode 2011-05-23 17:53 +0000 [r320650] Richard Mudgett * CHANGES, main/manager.c: Add ConnectedLineNum/Name headers to output of AMI action Status. * Add ConnectedLineNum and ConnectedLineName headers to the output of the AMI action Status. This makes it easier to find out who the channel is connected to without having to lookup BridgedChannel or when they are connected to an application (e.g.: VoiceMail) which has no bridged channel. * Bridged channels with no CallerID had "" instead of "" output, that might be a bug as "" was what older versions used. (closes issue #18158) Reported by: gareth Patches: svn-292308.diff uploaded by gareth (license 208) 2011-05-23 16:19 +0000 [r320573] Tilghman Lesher * configure, configure.ac: GNU libiconv uses symbol "libiconv_open" instead of "iconv_open". (closes issue #19344) Reported by: rohanl Patches: iconv-check.patch uploaded by rohanl (license 1284) 2011-05-23 16:18 +0000 [r320568] David Vossel * main/tcptls.c, /: Merged revisions 320562 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r320562 | dvossel | 2011-05-23 11:15:18 -0500 (Mon, 23 May 2011) | 9 lines Adds missing part to the ast_tcptls_server_start fails second attempt to bind patch. (closes issue #19289) Reported by: wdoekes Patches: issue19289_delay_old_address_setting_tcptls_2.patch uploaded by wdoekes (license 717) ........ 2011-05-23 15:47 +0000 [r320560] Kevin P. Fleming * configure, configure.ac: Don't generate spurious "No: command not found" messages when running the configure script on a system that has neither gmime-config nor pkg-config. 2011-05-23 14:33 +0000 [r320504] Jonathan Rose * channels/chan_sip.c: Fixes segfault occuring in chan_sip.c at __set_address_from_contact Checks to see if domain contains anything before sending it off to ast_sockaddr_resolve which is where the segfault was occuring due to null str. (closes issue #18857) Reported by: sybasesql Review: https://reviewboard.asterisk.org/r/1225/ 2011-05-22 23:34 +0000 [r320445] Tilghman Lesher * res/res_odbc.c, /: Merged revisions 320444 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r320444 | tilghman | 2011-05-22 18:25:51 -0500 (Sun, 22 May 2011) | 8 lines Don't crash when the connection fails. (closes issue #19250) Reported by: seadweller Patches: 20110514__issue19250.diff.txt uploaded by tilghman (license 14) Tested by: seadweller, sum ........ 2011-05-20 21:39 +0000 [r320338] David Vossel * main/tcptls.c, /: Merged revisions 320271 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r320271 | dvossel | 2011-05-20 16:24:48 -0500 (Fri, 20 May 2011) | 8 lines Fixes issue with ast_tcptls_server_start failing on second attempt to bind. (closes issue #19289) Reported by: wdoekes Patches: issue19289_delay_old_address_setting_tcptls.patch uploaded by wdoekes (license 717) ........ 2011-05-20 20:49 +0000 [r320237] Richard Mudgett * /, apps/app_meetme.c: Merged revisions 320236 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r320236 | rmudgett | 2011-05-20 15:44:54 -0500 (Fri, 20 May 2011) | 20 lines Merged revisions 320235 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r320235 | rmudgett | 2011-05-20 15:38:22 -0500 (Fri, 20 May 2011) | 13 lines The meetme CLI command completion leaves conferences mutex locked. When issuing a meetme kick CLI command and an invalid (non-existent) conference number is specified, pressing Tab leaves the conferences mutex locked and, therefore, all conferences deadlock. Add missing unlock. (closes issue #19336) Reported by: zvision Patches: app_meetme.diff uploaded by zvision (license 798) ........ ................ 2011-05-20 18:48 +0000 [r320180] Matthew Nicholson * channels/chan_sip.c: This commit modifies the way polling is done on TLS sockets. Because of the buffering the TLS layer does, polling is unreliable. If poll is called while there is data waiting to be read in the TLS layer but not at the network layer, the messaging processing engine will not proceed until something else writes data to the socket, which may not occur. This change modifies the logic around TLS sockets to only poll after a failed read on a non-blocking socket. This way we know that there is no data waiting to be read from the buffering layer. (closes issue #19182) Reported by: st Patches: ssl-poll-fix3.diff uploaded by mnicholson (license 96) Tested by: mnicholson 2011-05-20 18:12 +0000 [r320162] Jonathan Rose * apps/app_voicemail.c: Fixes an imapfolder related crash imapfolders being set in the general section of voicemail would cause the inbox folder name to change. Since sound file names are made based on the names of the folders, this would cause the audio related to that folder name to change and if Asterisk attempted to play it, the channel would instantly hang up when the audio file couldn't be found. This patch searches for the name of the folder first to leave existing behavior in tact and if that fails, it uses the normal inbox name to get the sound file instead. (closes issue #16104) Reported by: blkline Review: https://reviewboard.asterisk.org/r/1215/ 2011-05-20 17:03 +0000 [r319997-320059] Richard Mudgett * main/features.c: Misc comment cleanup in features.c. * main/channel.c, main/features.c: Crash while transferring a call during DTMF feature timeout. When a call is being attended transferred during the time between AST_FRAME_DTMF_BEGIN and AST_FRAME_DTMF_END, the transferred channel becomes a zombie (so tech data is not available), making ast_dtmf_stream() segfault when it tries to send the DTMF digit (at least with SIP channels). Patch based on feature-end-zombie.patch uploaded by Irontec (license 1256) * Check for zombies when ast_channel_bridge() returns. * Guarantee that the fo parameter value is initialized in ast_channel_bridge() before any returns. (closes issue #19116) Reported by: Irontec Tested by: rmudgett * apps/app_directed_pickup.c, main/features.c: Change some variable names to make pickup code easier to understand. * apps/app_directed_pickup.c, main/features.c: Crash when using directed pickup applications. The directed pickup applications can cause a crash if the pickup was successful because the dialplan keeps executing. This patch does the following: * Completes the channel masquerade on a successful pickup before the application returns. The channel is now guaranteed a zombie and must not continue executing the dialplan. * Changes the return value of the directed pickup applications to return zero if the pickup failed and nonzero(-1) if the pickup succeeded. * Made some code optimizations that no longer require re-checking the pickup channel to see if it is still available to pickup. (closes issue #19310) Reported by: remiq Patches: issue19310_v1.8_v2.patch uploaded by rmudgett (license 664) Tested by: alecdavis, remiq, rmudgett Review: https://reviewboard.asterisk.org/r/1221/ 2011-05-20 13:28 +0000 [r319938] Jonathan Rose * configs/sip.conf.sample, channels/sip/include/sip.h, channels/chan_sip.c: Adds legacy_useroption_parsing to address interoperability concerns. With the new option engaged, Asterisk should interpret user fields with useroptions contained within the userfield of the uri by stripping them out of the original message whenever a semicolon is encountered in the userfield string. (closes issue #18344) Reported by: danimal Tested by: jrose Review: https://reviewboard.asterisk.org/r/1223/ 2011-05-19 23:28 +0000 [r319920] Terry Wilson * main/bridging.c, include/asterisk/bridging_technology.h, include/asterisk/bridging.h: Revert part of a change to the bridging API code The capabilities used in the bridging API are very different than the ones used for formats. When the conversion was made expanding the bit width of codecs, the bridging code was accidentally accosted in ways that it didn't deserve. 2011-05-19 18:32 +0000 [r319866] Jonathan Rose * main/features.c: Fix Randomize option on Park() The randomize option was generally not working like it should have at all on Park(). This patch restores intended functionality. (closes issue #18862) Reported by: davidw Tested by: jrose Review: https://reviewboard.asterisk.org/r/1222/ 2011-05-19 17:59 +0000 [r319812] Mark Murawki * cel/cel_odbc.c: In cel_odbc, an uninitialized RWLIST is attempted to be locked. Added INIT and DESTROY for the RWLIST odbc_tables (closes issue #19331) Reported by: kobaz Patches: odbc_cel.patch uploaded by kobaz (license 834) 2011-05-19 16:50 +0000 [r319758] Richard Mudgett * main/ccss.c: CCSS generic agent with POTS and ISDN phones fail caller busy call-back test. If the following is true after a CCSS activation: * The generic agent is for an analog phone or ISDN phone. (Caller party) * The called party becomes available. * The caller party is not available. When the caller party becomes available, the caller is not alerted to the called party being available. The generic agent still thinks the caller is busy. * Fixed the generic agent device state event subscription to look for all device states that are considered available. * Encapsulated the device state test for CCSS generic device available in cc_generic_is_device_available(). Made the generic agent and monitor use the new function instead of the manually coded inline equivalent. JIRA AST-559 JIRA SWP-3462 2011-05-18 23:15 +0000 [r319529-319654] Terry Wilson * /, channels/chan_sip.c: Merged revisions 319653 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r319653 | twilson | 2011-05-18 16:11:57 -0700 (Wed, 18 May 2011) | 15 lines Merged revisions 319652 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r319652 | twilson | 2011-05-18 16:04:35 -0700 (Wed, 18 May 2011) | 8 lines Make sure everyone gets an unhold when a transfer succeeds Some phones, like the Snom phones, send a hold to the transfer target after before sending the REFER. We need to make sure that we unhold the parties that are being connected after the masquerade. If Local channels with the /nm option are used when dialing the parties, hold music would still be playing on the transfer target, even after being connected with the transferee. ........ ................ * channels/chan_sip.c: Unbreak the storing of registrations for restart The fix for issue 18882 broke retrieving non-realtime peers from the ast_db on restart/reload. This patch tries to unbreak things while leaving the intent of the original fix intact. (closes issue #19318) Reported by: remiq Patches: diff.txt uploaded by twilson (license 396) Tested by: lmadsen, remiq * apps/app_dial.c, /: Merged revisions 319528 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r319528 | twilson | 2011-05-18 13:02:06 -0700 (Wed, 18 May 2011) | 17 lines Merged revisions 319527 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r319527 | twilson | 2011-05-18 12:56:08 -0700 (Wed, 18 May 2011) | 10 lines Fix app_dial ring groups Revert part of r315643. We need to remove the datastore here as well. The code in bridging code will catch anything that app_dial might miss. (closes issue #19311) Reported by: mspuhler Patches: issue_19311_no_answer.diff uploaded by elguero (license 37) ........ ................ 2011-05-17 21:57 +0000 [r319469] Richard Mudgett * channels/misdn/isdn_lib.c: Merged revision 319468 from https://origsvn.digium.com/svn/asterisk/be/branches/C.3-bier .......... r319468 | rmudgett | 2011-05-17 16:49:31 -0500 (Tue, 17 May 2011) | 15 lines The mISDN HDLC mode is prevented on dialed channels. The use of mISDN HDLC mode is prevented if the mISDN dial technology option 'h1' is used when config option astdtmf=yes. There is a bug in channels/misdn/isdn_lib.c which prevents the use of HDLC mode. Instead of setting the channel to HDLC mode it is set to transparent(no dsp, no hdlc), although hdlc is not "no hdlc". I.e the logging message is correct, but the if condition is not. Make check the nodsp and hdlc flags. JIRA ABE-2787 JIRA SWP-3437 .......... 2011-05-17 12:53 +0000 [r319365-319367] Leif Madsen * apps/app_voicemail.c: Don't create [general] voicemail context when using users.conf Prior to this patch, app_voicemail would create a [general] context when parsing users.conf. (closes issue #18891) Reported by: pdugas Patches: app_voicemail-ignore-general.patch uploaded by pdugas (license 1222) app_voicemail-ignore-general-style-guidelines.patch uploaded by seanbright (license 71) Tested by: pdugas * contrib/init.d/rc.debian.asterisk: Make Debian init script lsb compliant (closes issue #18896) Reported by: manwe Patches: debian_init_lsb.patch uploaded by manwe (license 1223) 2011-05-16 21:00 +0000 [r319261] Jonathan Rose * main/dsp.c: Makes busy detection in dsp.c always allow for at least one frame (20ms) of error so that 200ms tone lengths don't get ignored by single frame error lengths. 2011-05-16 20:33 +0000 [r319259] Richard Mudgett * main/ccss.c: Deadlock between generic CCSS agent and native ISDN CCSS. Deadlock can occur when the generic CCSS agent is deleting duplicate CC offers and the native ISDN CC driver is processing an incoming CC message. The cc_core_instances container lock cannot be held when an agent or monitor callback is invoked without the possibility of a deadlock. * Make kill_duplicate_offers() remove the reference in cc_core_instances outside of the container lock. JIRA AST-566 JIRA SWP-3469 2011-05-16 18:17 +0000 [r319204] Terry Wilson * /, channels/chan_sip.c: Merged revisions 319202 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r319202 | twilson | 2011-05-16 11:00:21 -0700 (Mon, 16 May 2011) | 4 lines Unlink a peer from peers_by_ip when expiring a registration Review: https://reviewboard.asterisk.org/r/1218/ ........ 2011-05-16 15:57 +0000 [r319145] David Vossel * /, channels/chan_sip.c: Merged revisions 319144 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r319144 | dvossel | 2011-05-16 10:56:16 -0500 (Mon, 16 May 2011) | 2 lines Fixes issue with peer ref-counting during handle_request_subscribe. (closes issue #19293) Reported by: irroot ........ 2011-05-16 15:53 +0000 [r319142] Matthew Nicholson * channels/chan_sip.c: Make sure tcptls_session exists before dereferencing it. (closes issue #19192) Reported by: stknob Patches: 10-tcptls-unreachable-peer-segfault.patch uploaded by Chainsaw (license 723) Tested by: vois, Chainsaw 2011-05-16 14:35 +0000 [r319085] Paul Belanger * res/res_http_post.c, configure, include/asterisk/autoconfig.h.in, configure.ac: Support gmime-2.4 (closes issue #18863) Reported by: tzafrir Patches: gmime-2.4-18.diff uploaded by tzafrir (license 46) Tested by: tzafrir Review: https://reviewboard.asterisk.org/r/1213/ 2011-05-16 14:26 +0000 [r319083] David Vossel * formats/format_wav.c: Fixes Big Endian build issue. (closes issue #19298) Reported by: tzafrir 2011-05-13 18:09 +0000 [r318917-318921] Brett Bryant * main/channel.c: Fixes a segmentation fault in dynamic hints when a channel technology isn't loaded for a hint. (closes issue #18495) Reported by: bertrand Tested by: bertrand * res/res_srtp.c: This patch fixes an issue with SRTP which makes HOLD/UNHOLD impossible when too much time has passed between sending audio. (closes issue #18206) Reported by: bernhardsi Patches: res_srtp_unhold.patch uploaded by bernhards (license 1138) Tested by: bernhards, notthematrix * channels/chan_sip.c: This patch allows TCP peers into the ast_db where they were previously restricted. (closes issue #18882) Reported by: cmaj Patches: patch-chan_sip-1.8.3-rc2-allow-tcp-peer-store-db-and-readonly-rt-backend.diff.txt uploaded by cmaj (license 830) Tested by: cmaj 2011-05-13 16:28 +0000 [r318783-318868] Richard Mudgett * main/features.c: CDR's are being written immediately on caller hangup. CDR's are being written immediately on caller hangup. The dialplan is not able to modify it in the h exten. The h exten in the initial context is not run before closing CDR's when the bridge is unlinked if a macro is active and does not have an h exten. * Make ast_bridge_call() check for an h exten in the current context and if a macro is active then the initial context. The first h exten found is then run before closing the CDR. (closes issue #18212) Reported by: leearcher Patches: issue18212_v1.8.patch uploaded by rmudgett (license 664) Tested by: rmudgett Review: https://reviewboard.asterisk.org/r/1206/ * channels/sig_pri.c: PRI early media won't ring. And another way to pass early media. Don't indicate that there is inband information present, just assume that the B channel is connected. * Restore clearing the dialing flag Rx squelch unconditionally when a PROCEEDING message comes in. (closes issue #19268) Reported by: tbsky Patches: issue19268_v1.8.patch uploaded by rmudgett (license 664) Tested by: tbsky 2011-05-12 23:35 +0000 [r318720] Matthew Nicholson * channels/sip/reqresp_parser.c: Handle ipv6 addresses in the sent-by Via: field. This change fixes a regression in via header parsing and ipv6 handling. (closes issue #18951) 2011-05-12 22:52 +0000 [r318671] Alec L Davis * include/asterisk/features.h, channels/chan_sip.c, apps/app_directed_pickup.c, main/features.c: Fix directed group pickup feature code *8 with pickupsounds enabled Since 1.6.2, the new pickupsound and pickupfailsound in features.conf cause many issues. 1). chan_sip:handle_request_invite() shouldn't be playing out the fail/success audio, as it has 'netlock' locked. 2). dialplan applications for directed_pickups shouldn't beep. 3). feature code for directed pickup should beep on success/failure if configured. Created a sip_pickup() thread to handle the pickup and playout the audio, spawned from handle_request_invite. Moved app_directed:pickup_do() to features:ast_do_pickup(). Functions below, all now use the new ast_do_pickup() app_directed_pickup.c: pickup_by_channel() pickup_by_exten() pickup_by_mark() pickup_by_part() features.c: ast_pickup_call() (closes issue #18654) Reported by: Docent Patches: ast_do_pickup_1.8_trunk.diff.txt uploaded by alecdavis (license 585) Tested by: lmadsen, francesco_r, amilcar, isis242, alecdavis, irroot, rymkus, loloski, rmudgett Review: https://reviewboard.asterisk.org/r/1185/ 2011-05-11 18:47 +0000 [r318549-318550] Terry Wilson * channels/chan_sip.c: Comment out the REF_DEBUG that slipped in during debugging * /, channels/chan_sip.c: Merged revisions 318548 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r318548 | twilson | 2011-05-11 12:15:39 -0500 (Wed, 11 May 2011) | 19 lines Clean up several chan_sip reference leaks Several situations in the code could lead to peers or sip_pvt references being leaked. This would cause RTP ports to never be destroyed (leading to exhaustion of all available RTP ports) and memory leaks. The original patch for this issue from rgagnon was the result of an obscene amount of testing and hard work, for which I am very grateful. I did some cleanup and added a few additional refcount fixes that I found. (closes issue #17255) Reported by: kvveltho Patches: tag-1.6.2.17-r309252-sip-dos-mem-leak-fix.diff uploaded by rgagnon (license 1202) Tested by: rgagnon, twilson, wdoekes, loloski Review: https://reviewboard.asterisk.org/r/1101/ Review: https://reviewboard.asterisk.org/r/1207/ Review: https://reviewboard.asterisk.org/r/1210/ ........ 2011-05-10 23:41 +0000 [r318499] Richard Mudgett * channels/sig_pri.c, channels/sig_ss7.c: Unable to pickup DAHDI/PRI call because call state is reported as DIALING. The channel state is not updated to RINGING when an ALERTING message is received. Regression caused when sig_pri.c (also sig_ss7.c) extracted from chan_dahdi.c. * Added missing channel state update to RINGING when the AST_CONTROL_RINGING frame is queued for ISDN and SS7. (closes issue #19257) Reported by: alecdavis Patches: issue19257_v1.8_v2.patch uploaded by rmudgett (license 664) Tested by: alecdavis, rmudgett 2011-05-10 18:46 +0000 [r318485] Leif Madsen * main/manager.c: Filter out blacklisted manager events when using eventfilter. Merging change from trunk in revision 306432. (closes issue #19260) Reported by: dhubbard Tested by: dhubbard 2011-05-10 15:13 +0000 [r318436] Russell Bryant * channels/chan_iax2.c: chan_iax2: change LOG_NOTICE to LOG_DEBUG in iax2_read(). 2011-05-09 23:15 +0000 [r318351] Richard Mudgett * res/Makefile, res/res_features.exports.in (removed): Remove references to res_features and its export file. The contents of res/res_features.c was moved to into main/features.c awhile ago. There is no longer any need for the res/Makefile to reference res_features or the res_features linker exports file to exist. 2011-05-09 20:23 +0000 [r318337] Terry Wilson * /, channels/chan_sip.c: Merged revisions 318331 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r318331 | twilson | 2011-05-09 15:04:41 -0500 (Mon, 09 May 2011) | 12 lines Don't offer video to directmedia callee unless caller offered it as well Make sure that when directmedia is enabled, that video is not offered to the callee even if it supports it. p->vrtp will not exist since the caller didn't offer video. (closes issue #19195) Reported by: one47 Patches: sip_cant_add_video_rtp uploaded by one47 (license 23) ........ 2011-05-09 19:07 +0000 [r318282] Richard Mudgett * main/features.c: Hangup extension executed twice. When a user hangs up a call, in certain circumstances, the hangup extension can end up being executed twice: 1) If a call is bridged and the 'h' extension executes the Hangup application, then the 'h' extension will be executed twice. 2) If a call is bridged within a macro (Dial or Queue), it has its own 'h' extension, the main context also has an 'h' extension, and the macro 'h' extension executes the Hangup application, then both 'h' extensions will be executed. * Revert originally commited fix for #16106 and just set AST_FLAG_BRIDGE_HANGUP_RUN unconditionally in ast_bridge_call(). The bridge code just executed an 'h' extension so the main PBX loop does not need to execute one as well. (issue #16106) Reported by: ajohnson (issue #16548) Reported by: hajekd 2011-05-09 17:09 +0000 [r318233] David Vossel * /, channels/chan_sip.c: Merged revisions 318230 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r318230 | dvossel | 2011-05-09 11:51:45 -0500 (Mon, 09 May 2011) | 7 lines Fixes cases where sip_set_rtp_peer can return too early during media path reset. (closes issue #19225) Reported by: one47 Patches: sip_set_rtp_peer.patch uploaded by one47 (license 23) ........ 2011-05-09 16:57 +0000 [r318231] Richard Mudgett * channels/sig_pri.c: Don't get early media for ISDN on outgoing calls. It looks to be a long-standing misinterpretation of the progress indicator ie values: 1 - Call is not end-to-end ISDN; further call progress information may be available in-band. 8 - In-band information or an appropriate pattern is now available. Only value 8 is handled by chan_dahdi/sig_pri. The 1 value is not handled as early media probably because the meaning of the second half of it's description was overlooked. * Test to see if either PRI_PROG_CALL_NOT_E2E_ISDN(1) or PRI_PROG_INBAND_AVAILABLE(8) bits are set to open the media path. (closes issue #18868) Reported by: isrl Patches: issue18868_19246_v1.8.patch uploaded by rmudgett (license 664) Tested by: satish_lx .......... No inband progress on PRI_EVENT_RINGING even if inband flag set. My ISDN-PRI provider sends an ALERTING with "Inband information or appropriate pattern now available", but Asterisk only generates and passes the RING to the SIP extension, not the inband message. Unfortunately, the inband message is not a ringback tone but a prompt that says the number is not in service. The SIP extension then hears two rings and the call is hungup which confuses the caller. * Post an AST_CONTROL_PROGRESS as well as opening the media path if inband audio is indicated with an ALERTING message. (closes issue #19246) Reported by: cristiandimache Patches: issue19246_v1.8.patch uploaded by rmudgett (license 664) Tested by: cristiandimache 2011-05-09 14:18 +0000 [r318148] Jonathan Rose * configs/features.conf.sample: Documenting an observed behavior of features in features.conf. Since parkinglots use an integer for the parkinglot extensions, leading zeros specified in the configuration file are ignored. 2011-05-09 14:09 +0000 [r318142] Matthew Nicholson * main/channel.c: Make indicate/control frames WRITE events on framehooks. Also, if a framehook returns a non-control frame, don't forward it to the channel. (closes issue #19251) Reported by: irroot Patches: (modified) framehook_indicate.patch2 uploaded by irroot (license 52) Tested by: irroot 2011-05-07 23:35 +0000 [r318055-318057] Russell Bryant * res/res_config_curl.c: res_config_curl: fix a crash with static realtime. (closes issue #18413) Reported by: jmls Patches: 20101202__issue18413.diff.txt uploaded by tilghman (license 14) Tested by: jmls * channels/chan_iax2.c: chan_iax2: Don't overwrite port found with an SRV lookup. (closes issue #17291) Reported by: jcovert Patches: chan_iax2.c.1.8.3-srvlookup-corrected.patch uploaded by jcovert (license 551) 2011-05-06 21:49 +0000 [r317967-317969] Russell Bryant * apps/app_meetme.c: Use the right variable to print the time in a debug message. The original patch also increased some buffer sizes, but that was already done in this version. (closes issue #17034) Reported by: sysreq Patches: asterisk-issue-17034.patch uploaded by sysreq (license 1009) * apps/app_meetme.c: Fix some more "set but unused" compiler warnings. 2011-05-06 21:06 +0000 [r317918] David Vossel * res/res_rtp_asterisk.c: Fixes missing colon from To/From headers in RTCP manager events. (closes issue #18221) Reported by: clegall_proformatique Patches: 18221_1.patch uploaded by ebroad (license 878) 2011-05-06 21:06 +0000 [r317861-317917] Russell Bryant * main/pbx.c: Fix calculation of free RAM to make minmemfree option work. (closes issue #17124) Reported by: loic Patches: pbx_c.diff uploaded by loic (license 1020) * channels/chan_sip.c: chan_sip: Destroy variables on a sip_pvt before copying vars from the sip_peer. Don't duplicate variables on the sip_pvt. Just reset the variable list each time. (closes issue #19202) Reported by: wdoekes Patches: issue19202_destroy_challenged_invite_chanvars.patch uploaded by wdoekes (license 717) * channels/chan_sip.c: chan_sip: fix a deadlock in check_rtp_timeout. Don't block doing silly deadlock avoidance. Just return and try again later. The funciton gets called often enough that it's fine. Also, this change was already made in trunk. (closes issue #18791) Reported by: irroot Patches: chan_sip.rtptimeout.patch uploaded by irroot (license 52) * channels/chan_sip.c: URI encode less characters in the RPID and Contact headers. If this change causes any problems, we will need to backport the more extensive uri encoding and decoding handling changes that are in trunk/1.10. (closes issue #18686) Reported by: wolfgang Patches: quick-and-dirty.patch uploaded by wdoekes (license 717) Tested by: wdoekes, devellow, wolfgang, mav3rick 2011-05-06 19:31 +0000 [r317858] Matthew Nicholson * pbx/pbx_lua.c: pbx_lua autoservice fixes Don't start an autoservice in pbx_lua if pbx_lua already started one and don't stop one if we didn't start one. Also start and stop the autoservice when transferring control from and to the pbx. 2011-05-06 19:24 +0000 [r317805-317837] Russell Bryant * addons/app_mysql.c: Fix a crash in the MySQL() application. This code was not handling channel datastores safely. The channel must be locked. (closes issue #17964) Reported by: wuwu Patches: issue17964_addon_1.6.2_svn.patch uploaded by seanbright (license 71) Tested by: wuwu * contrib/realtime/mysql/sipfriends.sql: Add a new sipfriends.sql for MySQL that has more fields in it. (closes issue #16399) Reported by: pabelanger Patches: sipfriends.sql.v3 uploaded by pabelanger (license 224) 2011-05-06 16:19 +0000 [r317670] Richard Mudgett * channels/chan_sip.c: Fix SIP connected line updates. This patch fixes a couple SIP connected line update problems: 1) The connected line needs to be updated when the initial INVITE is sent if there is a peer callerid configured. Previously, the connected line information did not get reported until the call was connected so SIP could not report connected line information in ringing or progress messages. 2) The connected line should not be updated on initial connect if there is no connected line information. Previously, all it did was wipe out any default preset CONNECTEDLINE information set by the dialplan with empty strings. (closes issue #18367) Reported by: GeorgeKonopacki Patches: issue18367_v1.8.patch uploaded by rmudgett (license 664) Tested by: rmudgett Review: https://reviewboard.asterisk.org/r/1199/ 2011-05-06 08:18 +0000 [r317584] Terry Wilson * apps/app_queue.c, /: Merged revisions 317575 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r317575 | twilson | 2011-05-06 01:04:17 -0700 (Fri, 06 May 2011) | 13 lines Merged revisions 317574 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r317574 | twilson | 2011-05-06 00:55:21 -0700 (Fri, 06 May 2011) | 6 lines Re-fix queue round-robin This part of the change for r315596 was incorrect. No bridge occurs when doing a roundrobin dial and no one answers, so this code shouldn't have been removed. ........ ................ 2011-05-05 23:46 +0000 [r317425-317530] Russell Bryant * Makefile: If the configure script runs, force a rebuild of menuselect-tree. Some contents in the menuselect tree are dependent on configure script parameters, namely --enable-dev-mode. (closes issue #17219) Reported by: Nick_Lewis Patches: issue_17219.rev1.txt uploaded by russell (license 2) * contrib/realtime/mysql/queue_log.sql, contrib/realtime/mysql/sipfriends.sql: Fix some more realtime MySQL schema issues. (closes issue #18537) Reported by: denzs Patches: sipfriends.sql.svndiff uploaded by denzs (license 1182) queue_log.sql.svndiff uploaded by denzs (license 1182) meetme.sql.svndiff uploaded by denzs (license 1182) * contrib/realtime/mysql/sipfriends.sql, contrib/realtime/mysql/meetme.sql: Fix some errors in sample MySQL realtime schema files. (closes issue #18915) Reported by: Dovid Patches: sipfriends.patch uploaded by Dovid (license 652) meetme.patch uploaded by Dovid (license 652) * cdr/cdr_syslog.c: Don't lose cdr_syslog config on a reload. (closes issue #18679) Reported by: enegaard Patches: issue18679_seanbright.patch uploaded by seanbright (license 71) Tested by: enegaard * channels/chan_alsa.c, channels/chan_console.c, channels/chan_oss.c, channels/chan_mgcp.c, channels/misdn_config.c, channels/chan_unistim.c, channels/chan_usbradio.c, channels/chan_dahdi.c, channels/chan_sip.c, channels/chan_skinny.c, channels/chan_h323.c: Fix some consistency issues with jitterbuffer config. Store the defaults noted in the sample config files in the jitterbuffer config data structure. This makes the CLI commands that output these settings show the right thing. Also only show the settings that are relevant in the settings CLI commands, based on which jitterbuffer is selected and whether it's enabled. (closes issue #19083) Reported by: rgagnon Patches: issue-19083-trunk-r313139.diff uploaded by rgagnon (license 1202) * pbx/pbx_lua.c: Add a datastore fixup to fix a pbx_lua crash. (closes issue #19055) Reported by: jamhed Patches: lua_datastore_fixup1.diff uploaded by mnicholson (license 96) Tested by: mnicholson, jamhed * channels/iax2-provision.c, pbx/pbx_dundi.c, channels/chan_console.c, cdr/cdr_radius.c, channels/chan_iax2.c, res/res_jabber.c, res/res_config_sqlite.c, cel/cel_pgsql.c, channels/chan_jingle.c, channels/sip/sdp_crypto.c, res/res_config_odbc.c, channels/chan_sip.c, res/res_crypto.c, pbx/pbx_lua.c: Fix more "set but unused" warnings. * main/dsp.c: Only display inband DTMF warning if inband DTMF detection is enabled. (closes issue #18901) Reported by: irroot * apps/app_rpt.c: Fix potential memory leak, and use of uninitialized memory. (closes issue #16476) Reported by: junky Patches: M16476.diff uploaded by junky (license 177) * main/manager.c: Add missing ActioID handling to Events action. (closes issue #18949) Reported by: edersohe Patches: 0018949.patch uploaded by edersohe (license 1228) 2011-05-05 20:25 +0000 [r317370] Sean Bright * addons/res_config_mysql.c: Don't duplicate our data on the stack and just use the MYSQL_ROW directly. With large result sets we were blowing out the stack. (closes issue #19090) Reported by: mickecarlsson Patches: issue19090_trunk_svn.patch uploaded by seanbright (license 71) Tested by: mickecarlsson 2011-05-05 19:55 +0000 [r317336] Russell Bryant * apps/app_queue.c: Increase buffer size to be PATH_MAX for a path. (closes issue #19239) Reported by: byronclark Patches: queue_announce_length.patch uploaded by byronclark (license 1200) 2011-05-05 19:09 +0000 [r317283] Jonathan Rose * channels/chan_sip.c: Resolves a deadlock that occurs during sip_new This is based on an uncommitted patch by jpeeler for the issue. Instead of relocking and then unlocking the channel though, we keep the lock on the channel until we are finished doing what we need to the channel. (closes issue #18441) Reported by: Alric 2011-05-05 18:39 +0000 [r317280-317281] Russell Bryant * /, channels/chan_sip.c: Merged revisions 317255 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r317255 | russell | 2011-05-05 13:29:53 -0500 (Thu, 05 May 2011) | 22 lines Merged revisions 317211 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r317211 | russell | 2011-05-05 13:20:29 -0500 (Thu, 05 May 2011) | 15 lines chan_sip: fix broken realtime peer count, fix memory leak This patch addresses two bugs in chan_sip: 1) The count of realtime peers and users was off. The increment checked the value of the caching option, while the decrement did not. 2) Add a missing regfree() for a regex. (closes issue #19108) Reported by: vrban Patches: missing_regfree.patch uploaded by vrban (license 756) sip_object_counter.patch uploaded by vrban (license 756) ........ ................ * /: Restore branch-1.6.2-merged and branch-1.6.2-blocked properties. 2011-05-05 18:02 +0000 [r317196] Matthew Nicholson * channels/chan_sip.c: Set SO_KEEPALIVE on SIP TCP sockets so that they eventually go away when a peer abruptly disappears. This mostly occurs after a successful registration. (closes issue #17544) Reported by: marcelloceschia Patches: (modified) tcptls.patch uploaded by st (license 907) 2011-05-05 15:04 +0000 [r317058-317104] Leif Madsen * contrib/scripts/safe_asterisk, /: Merged revisions 317102 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r317102 | lmadsen | 2011-05-05 10:54:46 -0400 (Thu, 05 May 2011) | 8 lines Disable console colourization inside safe_asterisk checks. (closes issue #19213) Reported by: lefoyer Patches: issue19213_strip_color_in_safe_asterisk-svn.patch uploaded by wdoekes (license 717) Tested by: wdoekes, lefoyer ........ * Makefile, configs/cel.conf.sample: Remove unused directory and clear up some documentation. (closes issue #19193) Reported by: bchia Patches: cel-csv.diff uploaded by lathama (license 1028) Tested by: lathama, Marquis42 2011-05-05 02:30 +0000 [r316917-316919] Sean Bright * main/http.c: Use the correct HTTP method when generating our digest, otherwise we always fail. When calculating the 'A2' portion of our digest for verification, we need the HTTP method that is currently in use. Unfortunately our mapping function was incorrect, resulting in invalid hashes being generated and, in turn, failures in authentication. (closes issue #18598) Reported by: ksn * main/utils.c: Look at the correct buffer for our digest info instead of an empty one. (issue #18598) Reported by: ksn * main/manager.c: Make sure that tcptls_session is properly initialized. (issue #18598) Reported by: ksn 2011-05-04 20:50 +0000 [r316874] Alexandr Anikin * addons/ooh323c/src/ooSocket.c: Fix trivial bug in ooSocket.c codes Revert condition for result code of ast_gethostbyname (closes issue #19185) Reported by: dswartz Patches: issue19185-patch uploaded by may213 (license 454) 2011-05-04 18:51 +0000 [r316831] Richard Mudgett * apps/app_meetme.c: Wait for leader with Music On Hold allows crosstalk between participants. Parenthesis in the wrong position. Regression from issue #14365 when expanding conference flags to use 64 bits. (closes issue #18418) Reported by: MrHanMan Tested by: rmudgett 2011-05-04 16:15 +0000 [r316663-316709] Sean Bright * apps/app_voicemail.c, /: Merged revisions 316708 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r316708 | seanbright | 2011-05-04 12:10:59 -0400 (Wed, 04 May 2011) | 15 lines Merged revisions 316707 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r316707 | seanbright | 2011-05-04 12:08:50 -0400 (Wed, 04 May 2011) | 8 lines If sox fails when processing a voicemail, don't delete the original file. (closes issue #18111) Reported by: sysreq Patches: issue18111_trunk.patch uploaded by seanbright (license 71) Tested by: seanbright ........ ................ * main/manager.c: Only return a single error via AMI when requesting a forbidden action. (closes issue #19216) Reported by: oej Patches: issue19216-1.8-r316204.patch uploaded by seanbright (license 71) Tested by: seanbright 2011-05-04 14:25 +0000 [r316617-316650] David Vossel * apps/app_chanspy.c, /: Merged revisions 316644 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r316644 | dvossel | 2011-05-04 09:23:39 -0500 (Wed, 04 May 2011) | 9 lines Fixes one-way-audio when chanspy activated with the 'o' option (closes issue #18382) Reported by: jkister Patches: 0001-Bugfix-18382-one-way-audio-when-chanspy-activated.patch.txt uploaded by malin (license ) Tested by: firstsip, Greenlightcrm, malin, wdoekes, boroda, dvossel ........ * /, channels/chan_sip.c: Merged revisions 316616 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r316616 | dvossel | 2011-05-04 08:40:41 -0500 (Wed, 04 May 2011) | 12 lines Fixes session-timers=refuse not being enforced for *caller* During handle_request_invite, the session timer mode was retrieved from a cached variable. This patch forces a peer lookup of the session timer mode in the case of an incoming invite. (closes issue #18804) Reported by: wdoekes Patches: issue18804_session_timer_refuse_caller.patch uploaded by wdoekes (license 717) issue_18804_v2.diff uploaded by dvossel (license 671) ........ 2011-05-04 02:34 +0000 [r316476] Sean Bright * /, apps/app_meetme.c: Merged revisions 316475 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r316475 | seanbright | 2011-05-03 22:23:01 -0400 (Tue, 03 May 2011) | 10 lines Honor the C option to MeetMe when L is passed. This fixes a case that r304773 and friends missed. (closes issue #17317) Reported by: var Patches: meetme-continue-on-l_16218.diff uploaded by var (license 1227) Tested by: seanbright ........ 2011-05-04 00:12 +0000 [r316429] Tilghman Lesher * addons/cdr_mysql.c, addons/res_config_mysql.c: Escape column names in case they contain illegal characters ('-') or reserved words. (closes issue #19063) Reported by: festr Patches: patch uploaded by festr (license 443) 2011-05-03 22:13 +0000 [r316336] Russell Bryant * pbx/pbx_dundi.c, channels/chan_mgcp.c, channels/chan_skinny.c: Use htons() instead of ntohs() in some places. (closes issue #19200) Reported by: wdoekes Patches: issue19200-trunk.patch uploaded by wdoekes (license 717) issue19200-1.8.x.patch uploaded by wdoekes (license 717) 2011-05-03 22:05 +0000 [r316334] David Vossel * main/channel.c: Fixes framehook segfault on indicate (closes issue #19215) Reported by: irroot Patches: framehook_indicate.patch uploaded by irroot (license 52) 2011-05-03 21:41 +0000 [r316331] Russell Bryant * apps/app_minivm.c: Resolve another warning. 2011-05-03 21:37 +0000 [r316330] David Vossel * channels/chan_local.c, /: Merged revisions 316329 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r316329 | dvossel | 2011-05-03 16:29:55 -0500 (Tue, 03 May 2011) | 17 lines Merged revisions 316328 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r316328 | dvossel | 2011-05-03 16:27:59 -0500 (Tue, 03 May 2011) | 10 lines Fixes chan_local crashs in local_fixup() Thanks OEJ for tracking down the issue and submitting the patch. (closes issue #19053) Reported by: oej Tested by: oej Review: https://reviewboard.asterisk.org/r/1158/ ........ ................ 2011-05-03 19:55 +0000 [r316265] Russell Bryant * res/res_musiconhold.c, apps/app_ices.c, apps/app_followme.c, main/config.c, main/cdr.c, main/channel.c, channels/chan_phone.c, funcs/func_enum.c, main/manager.c, channels/chan_skinny.c, res/res_agi.c, main/plc.c, main/features.c, apps/app_minivm.c, apps/app_amd.c, main/pbx.c, res/res_fax.c, formats/format_wav.c, apps/app_festival.c, channels/chan_agent.c, apps/app_originate.c, apps/app_queue.c, codecs/lpc10/dyptrk.c, include/asterisk/linkedlists.h, main/audiohook.c, pbx/pbx_config.c, main/asterisk.c, main/dsp.c, res/res_calendar.c, apps/app_voicemail.c, main/udptl.c, channels/chan_unistim.c, main/fskmodem_float.c, main/rtp_engine.c: Fix a bunch of compiler warnings generated by gcc 4.6.0. Most of these are -Wunused-but-set-variable, but there were a few others mixed in here, as well. 2011-05-03 19:18 +0000 [r316224] Richard Mudgett * channels/sig_pri.c, channels/chan_dahdi.c, channels/sig_analog.c: The dahdi_hangup() call does not clean up the channel fully. After dahdi_hangup() has supposedly hungup an ISDN channel there is still traffic on the S0-bus because the channel was not cleaned up fully. Shuffled the hangup code to include some missing cleanup. Also fixed some code formatting in the area. I think the primary missing clean up code was the call to tone_zone_play_tone() to turn off any active tones on the channel. (closes issue #19188) Reported by: jg1234 Patches: issue19188_v1.8.patch uploaded by rmudgett (license 664) Tested by: jg1234 2011-05-03 18:59 +0000 [r316215-316217] David Vossel * channels/chan_sip.c: Never put the Require: timer header in an Invite. This has already been discussed and should have been resolved earlier. View revsion 285565's log for more information about why it is important to not put timer in the Require header. (closes issue #18704) Reported by: mfrager * res/res_odbc.c: Fixes a random crash (NULL reference) in res_odbc.c. (closes issue #19180) Reported by: pruiz Patches: tmp.diff uploaded by pruiz (license 1152) Tested by: pruiz, seanbright 2011-05-03 18:17 +0000 [r316206] Sean Bright * main/manager.c: If we aren't interested in events, don't generate the FullyBooted event on AMI login. (closes issue #19089) Reported by: bklang Patches: issue19089-1.8-r316204.patch uploaded by seanbright (license 71) Tested by: seanbright 2011-05-03 10:57 +0000 [r316193] Tzafrir Cohen * autoconf/ast_check_pwlib.m4, configure: Re-fix bashism in ./configure: s/let/$(( ))/ A forward-port in r278985 accidentally re-introduced issue 17485. Fixing it. Thanks to Jilles Tjoelker for the good report. (closes issue #17485) 2011-05-02 19:09 +0000 [r316094] Tilghman Lesher * funcs/func_curl.c, /: Merged revisions 316093 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r316093 | tilghman | 2011-05-02 14:04:36 -0500 (Mon, 02 May 2011) | 8 lines More possible crashes based upon invalid inputs. (closes issue #18161) Reported by: wdoekes Patches: 20110301__issue18161.diff.txt uploaded by tilghman (license 14) Tested by: wdoekes ........ 2011-04-27 19:14 +0000 [r315894] Matthew Nicholson * /, channels/chan_sip.c, channels/sip/reqresp_parser.c: Merged revisions 315893 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r315893 | mnicholson | 2011-04-27 14:03:05 -0500 (Wed, 27 Apr 2011) | 21 lines Merged revisions 315891 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r315891 | mnicholson | 2011-04-27 13:57:56 -0500 (Wed, 27 Apr 2011) | 14 lines Fix our compliance with RFC 3261 section 18.2.2. This change optimizes the free_via() function and removes some redundant null checking. It also fixes compliance with RFC 3261 section 18.2.2 by always using the port specified in the Via header for routing responses (even when maddr is not set). Also the htons() function is now used when setting the port. Additional documentation comments have been added in various places to make the logic in the code clearer. (closes issue #18951) Reported by: jmls Patches: issue18951_set_proper_port_from_via.patch uploaded by wdoekes (license 717) (modified) ........ ................ 2011-04-27 15:55 +0000 [r315810] Russell Bryant * main/asterisk.c: Set the copyright year to 2011 in the startup message. 2011-04-27 12:36 +0000 [r315765] Leif Madsen * sounds/sounds.xml, sounds/Makefile: Enable Russian core sound selection in menuselect. (closes issue #18724) Reported by: pbxware 2011-04-26 22:56 +0000 [r315673] Terry Wilson * /, channels/chan_sip.c: Merged revisions 315672 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r315672 | twilson | 2011-04-26 15:52:25 -0700 (Tue, 26 Apr 2011) | 18 lines Merged revisions 315671 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r315671 | twilson | 2011-04-26 15:47:56 -0700 (Tue, 26 Apr 2011) | 11 lines Make sure unregistering a peer unlinks it from the peer container Instead of mostly copying the code from expire_register, just use the function that "does the right thing". (closes issue #16033) Reported by: kkm Patches: 016033-tilgman-fixed-refcount.diff uploaded by kkm (license 888) Tested by: kkm, tilghman, twilson ........ ................ 2011-04-26 22:14 +0000 [r315645] Richard Mudgett * main/pbx.c: The 'e' special extension fails to trigger in at least two cases. The 'e' extension is a fall back for the 'i', 't', or 'T' extensions if any of them do not exist. Many of the places the 'e' extension was supposed to be invoked fail because the priority was set wrong. There were two places where the 'e' extension was not even checked for fall back. * Made invoke the 'e' extension similarly to the previous 'i', 't', or 'T' extension check and added the 'e' extension as a fall back to the two missing locations. * Prioritized and optimized some hangup tests associated with the 'e' extension. (closes issue #19136) Reported by: kshumard Tested by: rmudgett Review: https://reviewboard.asterisk.org/r/1196/ 2011-04-26 21:39 +0000 [r315644] Terry Wilson * apps/app_queue.c, apps/app_dial.c, /, main/features.c: Merged revisions 315643 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r315643 | twilson | 2011-04-26 14:27:44 -0700 (Tue, 26 Apr 2011) | 25 lines Merged revisions 315596 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r315596 | twilson | 2011-04-26 14:16:10 -0700 (Tue, 26 Apr 2011) | 18 lines Allow transfer loops without allowing forwarding loops We try to avoid the situation where two phones may be forwarded to each other causing an infinite loop by storing each dialed interface in a channel datastore and checking the list before dialing out. This works, but currently breaks situations like A calls B, A transfers B to C, B transfers C to A, and A transfers C to B. Since human interaction is happening here and not an automated forwarding loop, it should be allowed. This patch removes the dialed_interfaces datastore when a call is bridged (a suggestion from the brilliant mmichelson). If a call is being bridged, it should be safe to assume that we aren't stuck in a loop. Since we are now handling this is the bridge code, the previous attempts at handling it in app_dial and app_queue are removed. Review: https://reviewboard.asterisk.org/r/1195/ ........ ................ 2011-04-26 19:32 +0000 [r315503] Tilghman Lesher * include/asterisk/select.h, /: Merged revisions 315502 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r315502 | tilghman | 2011-04-26 14:22:52 -0500 (Tue, 26 Apr 2011) | 21 lines Merged revisions 315501 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r315501 | tilghman | 2011-04-26 14:18:46 -0500 (Tue, 26 Apr 2011) | 14 lines Fix the bounds-checking code. The code that set the bit within the select bitfield was correct, but the bounds-checking code was not. The change to that line uses the new _bitsize macro for clarity. Also, FD_ZERO macro did not zero-out anything but the first word of the bitfield, so this could have caused problems with modules using that macro with the expanded bitfield. (closes issue #18773) Reported by: jamicque Patches: 20110423__issue18773.diff.txt uploaded by tilghman (license 14) Tested by: chris-mac ........ ................ 2011-04-26 18:00 +0000 [r315452] Richard Mudgett * apps/app_dial.c: Add missing set of name valid flag when dialing. 2011-04-26 17:40 +0000 [r315446] Russell Bryant * channels/chan_local.c: chan_local: resolve a deadlock. This patch resolves a fairly complex deadlock that can occur with the combination of chan_local and a dialplan switch, such as dynamic realtime extensions, which pulls autoservice into the picture when doing a dialplan lookup. (closes issue #18818) Reported by: nic Patches: issue18818.patch uploaded by jthurman (license 614) 18818.v1.txt uploaded by russell (license 2) Tested by: nic, jthurman, kterzi, steve-howes, sysreq, IshMalik 2011-04-26 02:18 +0000 [r315394] Paul Belanger * pbx/pbx_config.c, /: Merged revisions 315393 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r315393 | pabelanger | 2011-04-25 22:17:43 -0400 (Mon, 25 Apr 2011) | 7 lines Add back CLI command 'dialplan save' (closes issue #19140) Reported by: lmadsen Patches: __20110419_dialplan_save.patch.txt uploaded by lmadsen (license 10) ........ 2011-04-25 21:49 +0000 [r315349] Richard Mudgett * channels/chan_mgcp.c: When using MGCP realtime gateway definitions, random crashes occur. Fixed incorrect linked list node removal for realtime gateways. (closes issue #18291) Reported by: nahuelgreco Patches: dangling-pointers-when-pruning.patch uploaded by nahuelgreco (license 162) 2011-04-25 19:37 +0000 [r315213-315259] Russell Bryant * /, formats/format_wav.c: Merged revisions 315258 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r315258 | russell | 2011-04-25 14:31:44 -0500 (Mon, 25 Apr 2011) | 17 lines Merged revisions 315257 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r315257 | russell | 2011-04-25 14:28:41 -0500 (Mon, 25 Apr 2011) | 10 lines Be more flexible with unknown chunks in wav files. This patch makes format_wav ignore unknown chunks instead of erroring out on them. (closes issue #18306) Reported by: jhirsch Patches: wav_skip_unknown_blocks.diff uploaded by jhirsch (license 1156) ........ ................ * /, channels/chan_sip.c: Merged revisions 315212 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r315212 | russell | 2011-04-25 14:00:24 -0500 (Mon, 25 Apr 2011) | 7 lines Don't link non-cached realtime peers into the peers_by_ip container. (closes issue #18924) Reported by: wdoekes Patches: issue18924_uncached_realtime_peers_leak-1.6.2.17.patch uploaded by wdoekes (license 717) ........ 2011-04-25 07:14 +0000 [r315053] Alec L Davis * channels/chan_local.c, /: Merged revisions 315052 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r315052 | alecdavis | 2011-04-25 19:11:12 +1200 (Mon, 25 Apr 2011) | 16 lines Merged revisions 315051 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r315051 | alecdavis | 2011-04-25 19:06:29 +1200 (Mon, 25 Apr 2011) | 11 lines chan_local:check_bridge() misplaced misplaced ast_mutex_unlock if !p->chan->_bridge->_softhangup path isn't followed, brigde remains locked. (closes issue #19176) Reported by: alecdavis Patches: bug19176.diff.txt uploaded by alecdavis (license 585) ........ ................ 2011-04-22 22:59 +0000 [r315001] Alec L Davis * channels/chan_dahdi.c: chan_dahdi: Can't return to normal ring after distinctive ring on FXS clear a previous distinctivering pattern before each new call (closes issue #18985) Reported by: bromont Patches: bug18985.diff.txt uploaded by alecdavis (license 585) Tested by: alecdavis, bromont 2011-04-22 21:20 +0000 [r314959] Matthew Nicholson * /, channels/chan_agent.c: Merged revisions 314958 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r314958 | mnicholson | 2011-04-22 15:49:45 -0500 (Fri, 22 Apr 2011) | 17 lines Merged revisions 311203,314908 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r311203 | mnicholson | 2011-03-17 14:14:37 -0500 (Thu, 17 Mar 2011) | 4 lines Don't hold the pvt lock while streaming a file. ABE-2756 ........ r314908 | mnicholson | 2011-04-22 15:01:48 -0500 (Fri, 22 Apr 2011) | 4 lines Prevent the login thread and the app threads from using the asterisk channel at the same time. ABE-2756 ........ ................ 2011-04-22 14:02 +0000 [r314780] Russell Bryant * /, res/res_agi.c: Merged revisions 314778 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r314778 | russell | 2011-04-22 08:58:03 -0500 (Fri, 22 Apr 2011) | 11 lines Initialize buffers in getvar and getvarfull. Initialize the buffers used to hold the result from GET VARIABLE or GET VARIABLE FULL. The bug report shows func_read returning garbage in the result. It assumed that the buffer passed in was initialized, like many other functions do. In the more common code path (through the dialplan), it is initialized, so just initialize it here too. (closes issue #19050) Reported by: johnz ........ 2011-04-22 13:59 +0000 [r314779] Tzafrir Cohen * res/res_fax_spandsp.c, channels/chan_unistim.c: Fix a few typos (shown by Lintian) 2011-04-22 13:35 +0000 [r314777] Russell Bryant * /: Recorded merge of revisions 314776 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r314776 | russell | 2011-04-22 08:35:22 -0500 (Fri, 22 Apr 2011) | 10 lines Fix handling of some call parking config options. This patch adjusts the handling of some call parking config options to fix some issues that have already been addressed in 1.8 and trunk. (closes issue #19167) Reported by: bluecrow76 Patches: asterisk-1.6.2.17.2-fix-build-parkinglot-parked-AST_FEATURE_FLAGS.diff uploaded by bluecrow76 (license 270) ........ 2011-04-21 22:38 +0000 [r314732] Richard Mudgett * channels/chan_dahdi.c: Correct DAHDIShowChannels XML documentation. 2011-04-21 18:24 +0000 [r314628] Matthew Nicholson * configs/sip.conf.sample, configs/skinny.conf.sample, channels/sip/include/sip.h, configs/http.conf.sample, main/manager.c, /, channels/chan_sip.c, channels/chan_skinny.c, main/http.c: Merged revisions 314620 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r314620 | mnicholson | 2011-04-21 13:22:19 -0500 (Thu, 21 Apr 2011) | 20 lines Merged revisions 314607 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r314607 | mnicholson | 2011-04-21 13:19:21 -0500 (Thu, 21 Apr 2011) | 14 lines Added limits to the number of unauthenticated sessions TCP based protocols are allowed to have open simultaneously. Also added timeouts for unauthenticated sessions where it made sense to do so. Unrelated, the manager interface now properly checks if the user has the "system" privilege before executing shell commands via the Originate action. AST-2011-005 AST-2011-006 (closes issue #18787) Reported by: kobaz (related to issue #18996) Reported by: tzafrir ........ ................ 2011-04-21 00:23 +0000 [r314550] Terry Wilson * /, channels/chan_sip.c: Merged revisions 314549 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r314549 | twilson | 2011-04-20 17:17:34 -0700 (Wed, 20 Apr 2011) | 6 lines Don't allocate more space than necessary for a sip_pkt This extra allocation is a hold-over from when pkt->data was a character array. Now that it is an allocated string, just allocate enough for the sip_pkt. ........ 2011-04-20 16:54 +0000 [r314417] Richard Mudgett * include/asterisk/frame.h: AST_CONTROL_XXX comment changes. 2011-04-20 05:25 +0000 [r314358] Terry Wilson * main/lock.c: Initialize track pointer ast_reentrancy_init checks to see if it is NULL before initializing with calloc 2011-04-19 15:42 +0000 [r314203-314251] Leif Madsen * main/tcptls.c: Use SSLv23_client_method instead of old SSLv2 only. (closes issue #19095) (closes issue #19138) Reported by: tzafrir Patches: no_ssl2.diff uploaded by tzafrir (license 46) Tested by: russell, chazzam * /, funcs/func_channel.c: Merged revisions 314205 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r314205 | lmadsen | 2011-04-19 09:27:50 -0500 (Tue, 19 Apr 2011) | 6 lines Remove duplicate documentation from func_channel.c (closes issue #18970) Reported by: IgorG Patches: func_channel.c.doc.diff uploaded by IgorG (license 20) ........ * apps/app_dial.c, /: Merged revisions 314202 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r314202 | lmadsen | 2011-04-19 09:23:39 -0500 (Tue, 19 Apr 2011) | 7 lines Update seconds to milliseconds in ast_verb output. (closes issue #19084) Reported by: smurfix Patches: app_dial.patch uploaded by smurfix (license 547) Tested by: lmadsen, smurfix ........ 2011-04-18 16:10 +0000 [r314068-314069] Richard Mudgett * res/res_agi.c: The AsyncAGI command loop is lax in the value it returns for the return status. * Return correct status: SUCCESS/FAILED/HANGUP. Previously, abnormal exits from the command loop such as hangup would return SUCCESS. * The "asyncagi break" command now returns SUCCESS and is now the only way to break the command loop with that status. Previously, it returned FAILED. * The AMI event AsyncAGI End is no longer sent if the AsyncAGI Start event is not sent. Previously, this happened because of an error setting up the AGI pipes. * All executed AGI commands now get an AsyncAGI Exec result event. Previously, if the command returned failure (because of hangup), the command loop just exited with FAILURE and did not send the AsyncAGI Exec result event. * Makes sure that the channel frame queue is empty on hangup. Review: https://reviewboard.asterisk.org/r/1183/ * apps/app_dial.c: Unclear code in app_dial.c. Make code formatting clear. (closes issue #19134) Reported by: oej 2011-04-18 15:23 +0000 [r314017-314067] David Vossel * channels/chan_sip.c: Remove the need for deadlock avoidance in chan_sip do_monitor. Deadlock avoidance between the sip pvt and the pvt->owner is very difficult. Now that channel's are ao2 objects, this complication is no longer necessary. It turns out the pvt's msg queue only exists because of deadlock avoidance (when deadlock avoidance fails msgs were added to a queue to be processed later), so this goes away as well. The technique used in the new sip_lock_pvt_full() function should be used as a template for replacing all locations where deadlock avoidance occurs between a channel tech_pvt and the pvt's owner. My hope is that this will begin a reversal of the invalid channel driver locking architecture we have been using for so long. This patch also resolves an issue where the pvt->owner gets unlocked during processing the msg queue. (closes issue #18690) Reported by: dvossel Review: https://reviewboard.asterisk.org/r/1182/ * include/asterisk/rtp_engine.h, main/rtp_engine.c, channels/chan_sip.c: sip codec negotiation of dynamic rtp payloads error fix This patch fixes how chan_sip handles dynamic rtp payload types it does not understand. At the moment if a dynamic payload's mime type does not match one we understand, the payload does not get removed from our payload table. As a result of this, the payload is set to whatever dynamic codec we use internally for that payload number on outgoing INVITES. This is incorrect. This patch fixes this by properly checking the rtpmap set function's return code to make sure it was found. The function can return both -1 and -2 depending on the source of the mismatch. We were just checking -1 explicitly. Review: https://reviewboard.asterisk.org/r/1169/ 2011-04-15 15:08 +0000 [r313860] Jonathan Rose * main/cli.c, /: Merged revisions 313859 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r313859 | jrose | 2011-04-15 09:58:37 -0500 (Fri, 15 Apr 2011) | 10 lines Fix a Tab Completion bug that occurs due to multiple matches on a substring. Makes word_match function in cli.c repeat a search for a command string until a proper match is found or the string is searched to the last point. (closes issue #17494) Reported by: ffossard Review: https://reviewboard.asterisk.org/r/1180/ ........ 2011-04-14 20:59 +0000 [r313517-313780] Richard Mudgett * channels/chan_dahdi.c: Leftover debug messages unconditionally sent to the console. Executing Dial(DAHDI/1/18475551212,300,) with the echotraining config option enabled outputs the following debug messages unconditionally: Dialing T1847555121 on 1 Dialing www2w on 1 * Made debug messages in my_dial_digits() normal debug messages that do not get output unless enabled. * Reworded some debug messages in my_dial_digits() to be clearer. * Replace strncpy() with ast_copy_string() in my_dial_digits() which does the same job better. (closes issue #18847) Reported by: vmikhelson Tested by: rmudgett * res/res_agi.c: Revert flushing stale AsyncAGI commands from -r313615. It looks like it was intentional to leave any commands or in-flight commands in the queue in case Async AGI is run again on the call. * res/res_agi.c: Miscellaneous AGI diagnostic message cleanup and code optimization. * res/res_agi.c: * Add missing channel lock to handle_cli_agi_add_cmd(). * Flush any Async AGI commands left over from earlier Async AGI control of the call. * main/channel.c, /, res/res_agi.c: Merged revisions 313579 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r313579 | rmudgett | 2011-04-13 11:29:49 -0500 (Wed, 13 Apr 2011) | 48 lines Merged revisions 313545 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r313545 | rmudgett | 2011-04-13 11:21:24 -0500 (Wed, 13 Apr 2011) | 41 lines Asterisk does not hangup a channel after endpoint hangs up. If the call that the dialplan started an AGI script for is hungup while the AGI script is in the middle of a command then the AGI script is not notified of the hangup. There are many AGI Exec commands that this can happen with. The reported applications have been: Background, Wait, Read, and Dial. Also the AGI Get Data command. * Don't wait on the Asterisk channel after it has hung up. The channel is likely to never need servicing again. * Restored the AGI script's ability to return the AGI_RESULT_HANGUP value in run_agi(). It previously only could return AGI_RESULT_SUCCESS or AGI_RESULT_FAILURE after the DeadAGI and AGI applications were merged. (closes issue #17954) Reported by: mn3250 Patches: issue17954_v1.8.patch uploaded by rmudgett (license 664) issue17954_v1.6.2.patch uploaded by rmudgett (license 664) issue17954_v1.4.patch uploaded by rmudgett (license 664) Tested by: rmudgett JIRA SWP-2171 (closes issue #18492) Reported by: devmod Tested by: rmudgett JIRA SWP-2761 (closes issue #18935) Reported by: nvitaly Tested by: astmiv, rmudgett JIRA SWP-3216 (closes issue #17393) Reported by: siby Tested by: rmudgett JIRA SWP-2727 Review: https://reviewboard.asterisk.org/r/1165/ ........ ................ * apps/app_dumpchan.c: Bring the dumpchan application inline with "core show channel". * Added fields that are in "core show channel" to dumpchan output. * Fixed reuse of formatbuf before the previous string stored there was used by snprintf. All output strings now have their own buffer. * Adjusted the buffer sizes to not be so abusive of the stack now that there are more buffers. Change requested by oej. 2011-04-12 18:47 +0000 [r313434-313436] Jonathan Rose * channels/chan_dahdi.c, /: fixing stupid mistake with putting code before variable declaration ........ Merged revisions 313435 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r313432 | jrose | 2011-04-12 13:12:29 -0500 (Tue, 12 Apr 2011) | 14 lines reload Chan_dahdi memory leak caused by variables chan_dahdi reloading with variables set via setvar in chan_dahdi.conf would stay in the dahdi_pvt structs for individual channels (causing them to just continue adding the new ones to the list) and also there was a memory leak causes by the conf objects. This patch resolves both of these by using ast_variables_destroy during the loading process. (closes issue #17450) Reported by: nahuelgreco Patches: patch.diff uploaded by jrose (license 1225) Tested by: tilghman, jrose Review: https://reviewboard.asterisk.org/r/1170/ ........ ........ * channels/chan_dahdi.c, /: Merged revisions 313432 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r313432 | jrose | 2011-04-12 13:12:29 -0500 (Tue, 12 Apr 2011) | 14 lines reload Chan_dahdi memory leak caused by variables chan_dahdi reloading with variables set via setvar in chan_dahdi.conf would stay in the dahdi_pvt structs for individual channels (causing them to just continue adding the new ones to the list) and also there was a memory leak causes by the conf objects. This patch resolves both of these by using ast_variables_destroy during the loading process. (closes issue #17450) Reported by: nahuelgreco Patches: patch.diff uploaded by jrose (license 1225) Tested by: tilghman, jrose Review: https://reviewboard.asterisk.org/r/1170/ ........ 2011-04-11 23:08 +0000 [r313366-313369] Richard Mudgett * apps/app_dial.c: Frames from the inbound channel should go to all outbound channels in app_dial.c. In app_dial.c:wait_for_answer() frames from the inbound channel should be sent to all outbound channels instead of only if there is just one outbound channel. Control frames like AST_CONTROL_CONNECTED_LINE need to be passed to all of the the outbound channels. This can happen if a blond transfer is done by a remote switch on the inbound channel. JIRA AST-443 JIRA SWP-2730 * apps/app_dial.c: Backport a restructuring change from trunk to make the next change stand out. * main/cli.c: Added "Connected Line ID" and "Connected Line ID Name" to "core show channel" output. 2011-04-11 19:36 +0000 [r313279] Leif Madsen * /, configure, include/asterisk/autoconfig.h.in, configure.ac: Merged revisions 313278 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r313278 | lmadsen | 2011-04-11 14:33:03 -0500 (Mon, 11 Apr 2011) | 14 lines Merged revisions 313277 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r313277 | lmadsen | 2011-04-11 14:30:20 -0500 (Mon, 11 Apr 2011) | 6 lines Fix detection of OpenSSL 1.0 (closes issue #19093) Reported by: tzafrir Patches: detect_openssl_10.diff uploaded by tzafrir (license 46) ........ ................ 2011-04-11 15:40 +0000 [r313190] Richard Mudgett * channels/chan_dahdi.c, channels/sig_analog.c, /: Merged revisions 313189 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r313189 | rmudgett | 2011-04-11 10:32:53 -0500 (Mon, 11 Apr 2011) | 32 lines Merged revisions 313188 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r313188 | rmudgett | 2011-04-11 10:27:52 -0500 (Mon, 11 Apr 2011) | 25 lines Stuck channel using FEATD_MF if caller hangs up at the right time. The cause was actually a caller hanging up just at the end of the Feature Group D DTMF tones that setup the call. The reason for this is a "guard timer" that's implemented using ast_safe_sleep(100). If the caller happens to hang up AFTER the final tone of the DTMF string but BEFORE the end of that ast_safe_sleep(), then ast_safe_sleep() will return non-zero. This causes the code to bounce to the end of ss_thread(), but it does NOT tear down the call properly. This should be a rare occurrence because the caller has to hang up at EXACTLY the right time. Nonetheless, it was happening quite regularly on the reporter's system. It's not easily reproducible, unless you purposely increase the guard-time to 2000 or more. Once you do that, you can reproduce it every time by watching the DTMF debug and hanging up just as it ends. Simply add an ast_hangup() before goto quit. (closes issue #15671) Reported by: jcromes Patches: issue15671.patch uploaded by pabelanger (license 224) Tested by: jcromes ........ ................ 2011-04-09 20:56 +0000 [r313142] Alexandr Anikin * addons/chan_ooh323.c: fix trivial bug in ooh323_indicate on AST_CONTROL_SRC... check p->rtp is not null 2011-04-07 13:35 +0000 [r313048] Jonathan Rose * /, main/features.c: Merged revisions 313047 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r313047 | jrose | 2011-04-07 08:23:01 -0500 (Thu, 07 Apr 2011) | 9 lines Makes parking lots clear and rebuild properly when features reload is invoked from CLI Before, default parkinglot in context parkedcalls with ext 700 would always be present and when reload was invoked, the previous parkinglots would not be cleared. (closes issue #18801) Reported by: mickecarlsson Review: https://reviewboard.asterisk.org/r/1161/ ........ 2011-04-07 10:24 +0000 [r313001-313002] Alec L Davis * apps/app_voicemail.c: app_voicemail: close_mailbox change LOG_WARNING to LOG_NOTICE * channels/sig_pri.c: Fix ISDN calling subaddr User Specified Odd/Even Flag Calculation of the Odd/Even flag was wrong. Implement correct algo, and set odd/even=0 if data would be truncated. Only allow automatic calculation of the O/E flag, don't let dialplan influence. (closes issue #19062) Reported by: festr Patches: bug19062.diff2.txt uploaded by alecdavis (license 585) Tested by: festr, alecdavis, rmudgett 2011-04-05 18:45 +0000 [r312866-312949] Richard Mudgett * channels/sig_pri.c, channels/sig_pri.h, channels/chan_dahdi.c: Crash if ISDN span layer 1 is down on initial load. Regression from -r312575 B channel shifting during negotiation. * Also combine updating the alarm flag with clearing the resetting flag. * channels/chan_sip.c: Add 416 response to OPTIONS packet. RFC3261 Section 11.2 says the response code to an OPTIONS packet needs to be the same as if it were an INVITE. * channels/chan_sip.c: Responding to OPTIONS packet with 404 because Asterisk not looking for "s" extension. The get_destination() function was not using the "s" extension when the request URI did not specify an extension. This is a regression caused when the URI parsing code was extracted into parse_uri(). Made get_destination() substitute the "s" extension when the parsed URI results in an empty string. (closes issue #18348) Reported by: shmaize Patches: issue18348_v1.8.patch uploaded by rmudgett (license 664) Tested by: shmaize 2011-04-05 14:14 +0000 [r312766] Matthew Nicholson * configs/manager.conf.sample, main/manager.c, /: Merged revisions 312764 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r312764 | mnicholson | 2011-04-05 09:13:07 -0500 (Tue, 05 Apr 2011) | 15 lines Merged revisions 312761 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r312761 | mnicholson | 2011-04-05 09:10:34 -0500 (Tue, 05 Apr 2011) | 8 lines Limit the number of unauthenticated manager sessions and also limit the time they have to authenticate. AST-2011-005 (closes issue #18996) Reported by: tzafrir Tested by: mnicholson ........ ................ 2011-04-05 14:13 +0000 [r312765] Jonathan Rose * /, apps/app_meetme.c: Merged revisions 312762 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r312762 | jrose | 2011-04-05 09:11:36 -0500 (Tue, 05 Apr 2011) | 1 line Backporting trunk change to add verbosity to 'L' option in meetme ........ 2011-04-04 16:10 +0000 [r312575] Richard Mudgett * channels/sig_pri.c, channels/sig_pri.h, channels/chan_dahdi.c, /: Merged revisions 312574 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r312574 | rmudgett | 2011-04-04 11:00:02 -0500 (Mon, 04 Apr 2011) | 45 lines Merged revisions 312573 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r312573 | rmudgett | 2011-04-04 10:49:30 -0500 (Mon, 04 Apr 2011) | 38 lines Issues with ISDN calls changing B channels during call negotiations. The handling of the PROCEEDING message was not using the correct call structure if the B channel was changed. (The same for PROGRESS.) The call was also not hungup if the new B channel is not provisioned or is busy. * Made all call connection messages (SETUP_ACKNOWLEDGE, PROCEEDING, PROGRESS, ALERTING, CONNECT, CONNECT_ACKNOWLEDGE) ensure that they are using the correct structure and B channel. If there is any problem with the operations then the call is now hungup with an appropriate cause code. * Made miscellaneous messages (INFORMATION, FACILITY, NOTIFY) find the correct structure by looking for the call and not using the channel ID. NOTIFY is an exception with versions of libpri before v1.4.11 because a call pointer is not available for Asterisk to use. * Made all hangup messages (DISCONNECT, RELEASE, RELEASE_COMPLETE) find the correct structure by looking for the call and not using the channel ID. (closes issue #18313) Reported by: destiny6628 Tested by: rmudgett JIRA SWP-2620 (closes issue #18231) Reported by: destiny6628 Tested by: rmudgett JIRA SWP-2924 (closes issue #18488) Reported by: jpokorny JIRA SWP-2929 JIRA AST-437 (The issues fixed here are most likely causing this JIRA issue.) JIRA DAHDI-406 JIRA LIBPRI-33 (Stuck resetting flag likely fixed) ........ ................ 2011-04-01 23:15 +0000 [r312461-312509] Richard Mudgett * channels/chan_misdn.c: When a call going out an NT-PTMP port gets rejected, Asterisk crashes. If a call is sent to an ISDN phone that rejects the call with RELEASE_COMPLETE(cause: call reject(21), or busy(17)) Asterisk crashes. I could not get my setup to crash. However, I could see the possibility from a race condition between queuing an AST_CONTROL_BUSY to the core and then queueing an AST_CONTROL_HANGUP. If the AST_CONTROL_BUSY is processed before the AST_CONTROL_HANGUP is queued, the ast_channel could be destroyed out from under chan_misdn. Avoid this particular crash scenario by not queueing the AST_CONTROL_HANGUP if the AST_CONTROL_BUSY was queued. (closes issue #18408) Reported by: wimpy Patches: issue18408_v1.8.patch uploaded by rmudgett (license 664) Tested by: rmudgett, wimpy JIRA SWP-2679 * main/ccss.c: CallCompletionRequest()/CallCompletionCancel() exit non-zero if fail. The CallCompletionRequest()/CallCompletionCancel() dialplan applications exit nonzero on normal failure conditions. The nonzero exit causes the dialplan to hangup immediately. The dialplan author has no opportunity to report success/failure to the user. * Made always return zero so the dialplan can continue. * Made set CC_REQUEST_RESULT/CC_REQUEST_REASON and CC_CANCEL_RESULT/CC_CANCEL_REASON channel variables respectively. Also documented the values set. * Reduced the warning about no core instance in CallCompletionCancel() to a debug message. It is a normal event and should not be output at the WARNING level. (closes issue #18763) Reported by: p_lindheimer Patches: ccss.patch uploaded by p lindheimer (license 558) Modified Tested by: p_lindheimer, rmudgett JIRA SWP-3042 2011-04-01 10:58 +0000 [r312286-312288] Tilghman Lesher * main/asterisk.c, include/asterisk/select.h, /: Merged revisions 312287 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r312287 | tilghman | 2011-04-01 05:51:24 -0500 (Fri, 01 Apr 2011) | 14 lines Merged revisions 312285 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r312285 | tilghman | 2011-04-01 05:36:42 -0500 (Fri, 01 Apr 2011) | 7 lines Found some leaking file descriptors while looking at ast_FD_SETSIZE dead code. (issue #18969) Reported by: oej Patches: 20110315__issue18969__14.diff.txt uploaded by tilghman (license 14) ........ ................ * addons/cdr_mysql.c: Reload must react correctly against a possibly changed table, so dropping the conditional reload flag. 2011-04-01 09:03 +0000 [r312117-312211] Alec L Davis * apps/app_voicemail.c, /: Merged revisions 312210 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r312210 | alecdavis | 2011-04-01 21:47:29 +1300 (Fri, 01 Apr 2011) | 29 lines Merged revisions 312174 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r312174 | alecdavis | 2011-04-01 21:29:49 +1300 (Fri, 01 Apr 2011) | 23 lines voicemail: get real last_message_index and count_messages, ODBC resequence change last_message_index to read the max msgnum stored in the database change count_messages to actually count the number of messages. last_message_index change: This fixed overwriting of the last message if msgnum=0 was missing. Previously every incoming message would overwrite msgnum=1. count_messages change: allows us to detect when requencing is required in opneA_mailbox. resequence enabled for ODBC storage: Assists with fixing up corrupt databases with gaps, but only when a user actively opens there mailboxes. (closes issue #18692,#18582,#19032) Reported by: elguero Patches: based on odbc_resequence_mailbox2.1.diff uploaded by elguero (license 37) Tested by: elguero, nivek, alecdavis Review: https://reviewboard.asterisk.org/r/1153/ ........ ................ * apps/app_voicemail.c, /: Merged revisions 312103 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r312103 | alecdavis | 2011-04-01 20:25:54 +1300 (Fri, 01 Apr 2011) | 22 lines Merged revisions 312070 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r312070 | alecdavis | 2011-04-01 19:46:56 +1300 (Fri, 01 Apr 2011) | 16 lines app_voicemail: close_mailbox needs to respect additional messages while mailbox is open. close_mailbox leave gaps in message sequence if messages are deleted and new messages arrive during this time, this is because the shuffle down to slot 0, only shuffles the number of pre-existing messages when mailbox is opened, ignoring new arrivals. Fix: in close_mailbox re-evaluate number of messages before the shuffle, this then includes new arrivals. Happens on filebased or ODBC storage. (issues #19032,#18582,#18692,#18998) Reported by: alecdavis,tootai,afosorio Review: https://reviewboard.asterisk.org/r/1153/ ........ ................ 2011-03-31 20:11 +0000 [r312022] Richard Mudgett * channels/chan_misdn.c: chan_misdn segfaults when DEBUG_THREADS is enabled. The segfault happens because jb->mutexjb is uninitialized from the ast_malloc(). The internals of ast_mutex_init() were assuming a nonzero value meant mutex tracking initialization had already happened. Recent changes to mutex tracking code to reduce excessive memory consumption exposed this uninitialized value. Converted misdn_jb_init() to use ast_calloc() instead of ast_malloc(). Also eliminated redundant zero initialization code in the routine. (closes issue #18975) Reported by: irroot 2011-03-31 06:43 +0000 [r311930] Tilghman Lesher * configs/cdr_mysql.conf.sample: Incorrect default example; the field is actually internally named "clid", not "callerid". (closes issue #19040) Reported by: wcselby Tested by: tilghman 2011-03-30 01:56 +0000 [r311874] Richard Mudgett * channels/chan_dahdi.c: Update some setup_dahdi_int() comments. 2011-03-29 07:08 +0000 [r311799] Tilghman Lesher * cel/cel_odbc.c: Remove extraneous check from integer-type fields. (closes issue #19027) Reported by: mlehner Review: https://reviewboard.asterisk.org/r/1149/ 2011-03-28 22:00 +0000 [r311751] Russell Bryant * apps/app_voicemail.c: Cross-reference VoiceMail() and VoiceMailMain() in the xml docs. 2011-03-27 21:47 +0000 [r311687] Alexandr Anikin * addons/chan_ooh323.c: correct return values in ooh323_indicate for AST_CONTROL_T38_PARAMETERS 2011-03-23 21:54 +0000 [r311612-311615] Brett Bryant * apps/app_meetme.c: This patch fixes a bug with MeetMe behavior where the 'P' option for always prompting for a pin is ignored for the first caller. (closes issue #18070) Reported by: mav3rick Review: https://reviewboard.asterisk.org/r/1132/ * channels/sip/reqresp_parser.c: Fix a possible crash in sip/reqresp_parser.c that is caused by a possible null value. (closes issue #18821) Reported by: cmaj Patches: patch-reqresp_parser_sip_uri_domain_cmp_c_locale-crash-1.8.3-rc2.diff.tx uploaded by cmaj (license 830) 2011-03-23 02:24 +0000 [r311558] Terry Wilson * channels/sip/reqresp_parser.c: Don't use static declared buf in parse_name_andor_addr This function isn't used anywhere yet, but we definitely don't want to keep the same value for buf between calls to the function. 2011-03-22 15:25 +0000 [r311497] David Vossel * /, apps/app_meetme.c: Merged revisions 311496 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r311496 | dvossel | 2011-03-22 10:24:45 -0500 (Tue, 22 Mar 2011) | 2 lines Fixes memory leak in MeetMe AMI action ........ 2011-03-18 16:19 +0000 [r311352] Jonathan Rose * res/res_jabber.c, channels/chan_sip.c, res/res_fax.c: Changes some print statements/events to use a blank string in place of NULL if the string in question is NULL. This is supposed to improve Solaris compatibility since Solaris goes berserk when trying to output NULL strings. (closes issue #18759) Reported by: bklang Patches: null-strings.patch uploaded by bklang (license 919) 2011-03-18 16:02 +0000 [r311342] Matthew Nicholson * res/res_fax.c: Properly populate the LOCALSTATIONID channel variable. 2011-03-18 02:59 +0000 [r311295-311297] Richard Mudgett * channels/sig_pri.c: Race condition when ISDN CallRerouting/CallDeflection invoked. The queued AST_CONTROL_BUSY could sometimes be processed before the call_forward dial string is recognized. * Moved setting the call_forwarding dial string after sending a response to the initiator and just queue an empty frame to wake up the media thread instead of an AST_CONTROL_BUSY. * Added check for empty rerouting/deflection number and respond with an error. * apps/app_dial.c: Merged revision 310986 from https://origsvn.digium.com/svn/asterisk/be/branches/C.3-bier .......... r310986 | rmudgett | 2011-03-16 13:56:28 -0500 (Wed, 16 Mar 2011) | 28 lines Dial() o option broke when connected line feature added. The patch restores the o option behavior and adds the ability to specify the CallerID. The Dial o and f options are complementary to each other. The o option stores the CallerID on the outgoing channel as the channel's CallerID. The f option forces the CallerID sent by the outgoing channel. o(x) - The argument 'x' is optional. If not present, then specify that the CallerID that was present on the *calling* channel be stored as the CallerID on the *called* channel. This was the behavior of Asterisk 1.0 and earlier. If present, then specify the CallerID stored on the *called* channel. Note that o(${CALLERID(all)}) is similar to option o without parameters. f(x) - The argument 'x' is optional and its presence changes the behavior of this option. If not present, then force the outgoing CallerID on a call-forward or deflection to the dialplan extension for this Dial() using a dialplan 'hint'. For example, some PSTNs do not allow CallerID to be set to anything other than the numbers assigned to you. If present, then force the outgoing CallerID to 'x'. Patches: jira_abe_2752_dial_fo_options.patch uploaded by rmudgett (license 664) Tested by: rmudgett JIRA ABE-2752 JIRA SWP-3096 .......... 2011-03-17 19:03 +0000 [r311197] Jonathan Rose * apps/app_chanspy.c: This fixes a nasty chanspy bug which was causing a channel leak every time a spied on channel made a call. In addition to the above, it makes certain channel destruction occurs so that applications don't get stuck waiting for datastore destruction while monitored by chanspy. (closes issue #18742) Reported by: jkister Tested by: jkister, jcovert, jrose Review: http://reviewboard.digium.internal/r/106/ 2011-03-17 15:00 +0000 [r311141] Matthew Nicholson * main/manager.c, /: Merged revisions 311140 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r311140 | mnicholson | 2011-03-17 09:58:52 -0500 (Thu, 17 Mar 2011) | 4 lines Don't write items to the manager socket twice. AST-2011-003 (closes issue 0018987) Reported by: ks-steven ........ 2011-03-17 10:49 +0000 [r311050] Alec L Davis * /, configs/indications.conf.sample: Merged revisions 311049 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r311049 | alecdavis | 2011-03-17 23:45:47 +1300 (Thu, 17 Mar 2011) | 17 lines Merged revisions 311048 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r311048 | alecdavis | 2011-03-17 23:43:35 +1300 (Thu, 17 Mar 2011) | 12 lines Remove extra quote in indications.conf Picking low hanging fruit. (closes issue #18971) Reported by: IgorG Patches: based on indications.conf.sample.diff uploaded by IgorG (license 20) Tested by: IgorG ........ ................ 2011-03-16 19:47 +0000 [r310902-310999] Terry Wilson * main/tcptls.c, /: Merged revisions 310998 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r310998 | twilson | 2011-03-16 14:46:36 -0500 (Wed, 16 Mar 2011) | 11 lines Fix crash on fdopen failure See security advisory AST-2011-004 (closes issue #18845) Reported by: cmaj Patches: patch-main-tcptls-1.8.3-rc2-open-session-crash-take2.diff.txt uploaded by cmaj (license 830) patch-main-tcptls-1.8.3-rc2-open-session-crash-take3.diff.txt uploaded by cmaj (license 830) Tested by: cmaj, twilson ........ * main/manager.c, /: Merged revisions 310992 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r310992 | twilson | 2011-03-16 14:23:03 -0500 (Wed, 16 Mar 2011) | 4 lines Don't keep trying to write to a closed connection See security advisory AST-2011-003. ........ * /, main/features.c: Merged revisions 310889 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r310889 | twilson | 2011-03-16 12:03:27 -0500 (Wed, 16 Mar 2011) | 36 lines Merged revisions 310888 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r310888 | twilson | 2011-03-16 11:58:42 -0500 (Wed, 16 Mar 2011) | 29 lines Don't delay DTMF in core bridge while listening for DTMF features This patch is mostly the work of Olle Johansson. I did some cleanup and added the silence generating code if transmit_silence is set. When a channel listens for DTMF in the core bridge, the outbound DTMF is not sent until we have received DTMF_END. For a long DTMF, this is a disaster. We send 4 seconds of DTMF to Asterisk, which sends no audio for those 4 seconds. Some products see this delay and the time skew on RTP packets that results and start ignoring the audio that is sent afterward. With this change, the DTMF_BEGIN frame is inspected and checked. If it matches a feature code, we wait for DTMF_END and activate the feature as before. If transmit_silence=yes in asterisk.conf, silence is sent if we paritally match a multi-digit feature. If it doesn't match a feature, the frame is forwarded along with the DTMF_END without delay. By doing it this way, DTMF is not delayed. (closes issue #15642) Reported by: jasonshugart Patches: issue_15652_dtmf_ast-1.4.patch.txt uploaded by twilson (license 396) Tested by: globalnetinc, jde (closes issue #16625) Reported by: sharvanek Review: https://reviewboard.asterisk.org/r/1092/ Review: https://reviewboard.asterisk.org/r/1125/ ........ ................ 2011-03-15 01:48 +0000 [r310834] Tilghman Lesher * addons/chan_ooh323.c: Fix branch compile. 2011-03-15 01:00 +0000 [r310781] Alec L Davis * main/utils.c: core show locks: display ThreadID in hexadecimal Allow easier cross referencing of thread ID's with GDB backtraces (closes issue #18968) Reported by: alecdavis Patches: bug18968.diff.txt uploaded by alecdavis (license 585) 2011-03-14 21:45 +0000 [r310734] Alexandr Anikin * addons/chan_ooh323.c, addons/ooh323c/src/ooCapability.c, addons/ooh323c/src/ooCalls.h: Introduce t.38 parameters control functionality not full but enough for Send/RcvFax support Introduce t.38 controls between asterisk core and channel/proto layers. Not all parameters are transferred from proto layers but *Fax apps tested and work ok. (issue #18693) Reported by: benngard2 Patches: issue-18693.patch uploaded by may213 (license 454) 2011-03-14 21:30 +0000 [r310726-310733] Jonathan Rose * main/channel.c: Undoes 310726 for further analysis * main/channel.c: Moves data store destruction from channel destruction to hangup in channel.c This moves the data store destruction and app signaling events for a call to ast_hangup so that threads which wait for data store destruction don't become stuck forever when attached to an application/function/etc that keeps the channel open. (closes issue #18742) Reported by: jkister Patches: patch.diff uploaded by jrose (license 1225) Tested by: jkister, jcovert, jrose Review: https://reviewboard.asterisk.org/r/1136/ 2011-03-14 16:50 +0000 [r310636] Richard Mudgett * /, main/callerid.c: Merged revisions 310635 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r310635 | rmudgett | 2011-03-14 11:47:54 -0500 (Mon, 14 Mar 2011) | 32 lines Merged revisions 310633 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r310633 | rmudgett | 2011-03-14 11:38:24 -0500 (Mon, 14 Mar 2011) | 25 lines "Caller*ID failed checksum" on Wildcard TDM2400P and TDM410 The last character in the caller id message is getting a framing error. The checksum is the last character in the message. A framing error in the checksum could be because: 1) The sender did not send a full stop bit. 2) The sender cut off the FSK carrier too soon. 3) The sender opted to send zero of the specified zero to 10 trailing mark bits and round-off errors in the code resulted in the code not being where it thought it was in the demodulated bit stream. Bit 8 of 'b' is set when parity error. Bit 9 of 'b' is set when framing error. Made ignore the framing and parity error bits if the errored character is the checksum. We can tolerate a framing/parity error there. The checksum character validates the message. (closes issue #18474) Reported by: nivek Patches: callerid.c.1.patch uploaded by nivek (license 636) (with modifications) Tested by: nivek ........ ................ 2011-03-14 15:27 +0000 [r310587] Jonathan Rose * /, funcs/func_volume.c: Merged revisions 310585 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r310585 | jrose | 2011-03-14 08:56:22 -0500 (Mon, 14 Mar 2011) | 8 lines Adds 'p' as an option to func_volume. When it is on, the old behavior with DTMF controlling volume adjustment will be enforced. When it is off, DTMF will not be processed by the function. Programmed by Jonathan Rose Reviewed by David Vossel, Leif Madsen, and Russell Bryant http://reviewboard.digium.internal/r/93/ ........ 2011-03-12 20:27 +0000 [r310415-310462] Tilghman Lesher * /, pbx/pbx_ael.c: Merged revisions 310448 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r310448 | tilghman | 2011-03-12 14:24:54 -0600 (Sat, 12 Mar 2011) | 38 lines Recorded merge of revisions 310435 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r310435 | tilghman | 2011-03-12 14:22:07 -0600 (Sat, 12 Mar 2011) | 31 lines Add AELSub, which provides a stable entry point into AEL subroutines. This commit needs some explanation, given that we're adding a new application into an existing release branch. This is generally a violation of our release policy, except in very limited circumstances, and I believe this is one of those circumstances. The problem that this solves is one of the sanity of using multiple dialplan languages to define a dialplan. In the case of the reporter, he or she is using AEL is define subroutines, while using Realtime extensions to invoke those subroutines. While you can do this, it's based upon the reality of AEL using actual dialplan extensions; however, there is no guarantee that the details of _how_ AEL is compiled into extensions will remain stable. In fact, at the time of this commit, it has already changed twice, once in a fundamental way. Now normally, a new application would only be added to trunk. However, this application is explicitly to create a stable user-level API between versions, and adding it to trunk only will not solve the user's problem of switching between 1.6.2 and 1.8, nor will it help anybody switching from 1.8 to 1.10. Therefore, it needs to go into existing release branches. For the sake of consistency, and also because one of the changes was between 1.4 and 1.6.x, I am also electing to commit this to 1.4. (closes issue #18910) Reported by: alexandrekeller Patches: 20110304__issue18919__1.6.2.diff.txt uploaded by tilghman (license 14) 20110304__issue18919__1.4.diff.txt uploaded by tilghman (license 14) Tested by: alexandrekeller ........ ................ * /, funcs/func_odbc.c: Merged revisions 310414 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r310414 | tilghman | 2011-03-12 13:51:23 -0600 (Sat, 12 Mar 2011) | 7 lines Transactional handles should be used for the insertbuf, if available. Also, fix a possible resource leak. (closes issue #18943) Reported by: irroot ........ 2011-03-11 06:47 +0000 [r310287] Alec L Davis * main/rtp_engine.c: remote_bridge_loop: prevent segfault when after transfer of IAX2 of DAHDI call If the channel condition is one of the following after breaking out of the loop, don't try to update_peer (where x = 0/1) 1). ZOMBIE 2). cx->tech_pvt != pvtx 3). gluex != ast_rtp_instance_get_glue(cx->tech->type)) (closes issue #18781) Reported by: alecdavis Patches: bug18781.diff3.txt uploaded by alecdavis (license 585) Tested by: alecdavis, ZX81 Review: https://reviewboard.asterisk.org/r/1128/ 2011-03-10 16:05 +0000 [r310240] Terry Wilson * main/manager.c, res/res_phoneprov.c: Add \r\n to remaining http headers passed to ast_http_send r309204 changed the behavior of ast_http_send. It now requires headers to be passed with trailing \r\n. This change updates the remaining instances in the code that did not pass the \r\n. (closes issue #18186) Reported by: nivaldomjunior Patches: res_phoneprov.c.diff uploaded by lathama (license 1028) manager.diff.txt uploaded by twilson (license 396) Tested by: lathama 2011-03-10 15:17 +0000 [r310231] Mark Michelson * channels/chan_sip.c: Be more tolerant of what URI we accept for call completion PUBLISH requests. (closes issue #18946) Reported by: GeorgeKonopacki Patches: 18946.patch uploaded by mmichelson (license 60) Tested by: GeorgeKonopacki 2011-03-10 05:53 +0000 [r310142] Tilghman Lesher * apps/app_voicemail.c, res/res_config_odbc.c, /, funcs/func_odbc.c: Merged revisions 310141 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r310141 | tilghman | 2011-03-09 23:51:37 -0600 (Wed, 09 Mar 2011) | 12 lines Merged revisions 310140 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r310140 | tilghman | 2011-03-09 23:38:44 -0600 (Wed, 09 Mar 2011) | 5 lines Initialize column size to 0 to deal with a potential UnixODBC bug on 64-bit systems. (closes issue #18295) Reported by: pruiz ........ ................ 2011-03-08 20:19 +0000 [r310088] Jonathan Rose * channels/sip/dialplan_functions.c: Returns with an error notice if CHANNEL function of SIP channel is read without arguments. (Closes issue #18653) Reported by: wuwu Patches: diff.patch uploaded by jrose (license 1225) Tested by: jrose 2011-03-08 18:10 +0000 [r310039] Terry Wilson * res/res_calendar.c: Spelling fix in "calendar show calendar" s/Cartegories/Catagories/ (closes issue #18931) Reported by: pdugas Patches: res_calendar.c.patch uploaded by pdugas (license 1222) 2011-03-08 16:37 +0000 [r309994] Richard Mudgett * channels/sig_pri.c: Make pri parameter description consistent. 2011-03-07 22:07 +0000 [r309858] Jonathan Rose * apps/app_mixmonitor.c, /: Merged revisions 309857 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r309857 | jrose | 2011-03-07 16:04:44 -0600 (Mon, 07 Mar 2011) | 15 lines Merged revisions 309856 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r309856 | jrose | 2011-03-07 16:02:12 -0600 (Mon, 07 Mar 2011) | 8 lines Bug fix for MixMonitor involving filenames with '.' not in the extension Closes issue #18391) Reported by: pabelanger Patches: bugfix.patch uploaded by jrose (license 1225) Tested by: jrose ........ ................ 2011-03-07 00:54 +0000 [r309808] Tilghman Lesher * main/ast_expr2.fl, channels/chan_dahdi.c, /, configure, include/asterisk/autoconfig.h.in, main/ast_expr2f.c, configure.ac: Merged revisions 309251 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r309251 | tilghman | 2011-03-01 19:06:02 -0600 (Tue, 01 Mar 2011) | 7 lines Revert previous 2 commits, and instead conditionally redefine the same macro used in flex 2.5.35 that clashed with our workaround. Not surprisingly, the workaround was exactly the same code as was provided by the Flex maintainers, albeit in two different places, in different macros. This should fix the FreeBSD builds, which have an older version of Flex. ........ 2011-03-07 00:13 +0000 [r309765] Mark Michelson * configs/sip.conf.sample: Indicate that Asterisk uses the Allow header to determine if MESSAGE requests should be sent. 2011-03-05 17:44 +0000 [r309720] Moises Silva * channels/chan_dahdi.c: Fix caller id passed to openr2_chan_make_call (closes issue #18894) Reported by: malufrj Tested by: moy 2011-03-05 10:29 +0000 [r309678] Tilghman Lesher * main/asterisk.c, /: Merged revisions 309677 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r309677 | tilghman | 2011-03-05 04:28:24 -0600 (Sat, 05 Mar 2011) | 7 lines Missed part of the conversion when we started passing ppid to astcanary. (closes issue #18850) Reported by: viraptor Patches: canary_ppid.patch uploaded by viraptor (license 543) ........ 2011-03-04 19:38 +0000 [r309448-309585] Matthew Nicholson * /, pbx/pbx_lua.c: Merged revisions 309584 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r309584 | mnicholson | 2011-03-04 13:37:13 -0600 (Fri, 04 Mar 2011) | 2 lines Restore mysterious lua_pushvalue() call removed in r309494. The mystery has been solved. ........ * /, pbx/pbx_lua.c: Merged revisions 309541 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r309541 | mnicholson | 2011-03-04 12:59:20 -0600 (Fri, 04 Mar 2011) | 4 lines Check for errors from fseek() when loading config file, properly abort on errors from fread(), and supply a traceback for errors generated when loading the config file. Also, prepend a newline to traceback output so that the main error message is on it's own line. ........ * /, pbx/pbx_lua.c: Merged revisions 309494 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r309494 | mnicholson | 2011-03-04 11:55:57 -0600 (Fri, 04 Mar 2011) | 2 lines remove mysterious lua_pushvalue() that is never used ........ * pbx/pbx_lua.c: Export global symbols from pbx_lua to allow modules to be loaded. Fixes a regression introduced in r278132. (closes issue #18671) Reported by: Igels Patches: pbx_lua_global_symbols1.diff uploaded by mnicholson (license 96) Tested by: Igels 2011-03-04 15:22 +0000 [r309445] Richard Mudgett * UPGRADE.txt, channels/sig_pri.c, channels/sig_pri.h, channels/chan_dahdi.c, funcs/func_channel.c: Get real channel of a DAHDI call. Starting with Asterisk v1.8, the DAHDI channel name format was changed for ISDN calls to: DAHDI/i/[:]- There were several reasons that the channel name had to change. 1) Call completion requires a device state for ISDN phones. The generic device state uses the channel name. 2) Calls do not necessarily have B channels. Calls placed on hold by an ISDN phone do not have B channels. 3) The B channel a call initially requests may not be the B channel the call ultimately uses. Changes to the internal implementation of the Asterisk master channel list caused deadlock problems for chan_dahdi if it needed to change the channel name. Chan_dahdi no longer changes the channel name. 4) DTMF attended transfers now work with ISDN phones because the channel name is "dialable" like the chan_sip channel names. For various reasons, some people need to know which B channel a DAHDI call is using. * Added CHANNEL(dahdi_span), CHANNEL(dahdi_channel), and CHANNEL(dahdi_type) so the dialplan can determine the B channel currently in use by the channel. Use CHANNEL(no_media_path) to determine if the channel even has a B channel. * Added AMI event DAHDIChannel to associate a DAHDI channel with an Asterisk channel so AMI applications can passively determine the B channel currently in use. Calls with "no-media" as the DAHDIChannel do not have an associated B channel. No-media calls are either on hold or call-waiting. (closes issue #17683) Reported by: mrwho Tested by: rmudgett (closes issue #18603) Reported by: arjankroon Patches: issue17683_18603_v1.8_v2.patch uploaded by rmudgett (license 664) Tested by: stever28, rmudgett 2011-03-04 01:50 +0000 [r309403] David Ruggles * apps/app_externalivr.c, /: Merged revisions 309356 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r309356 | diruggles | 2011-03-03 19:42:28 -0500 (Thu, 03 Mar 2011) | 16 lines Merged revisions 309355 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r309355 | diruggles | 2011-03-03 19:34:13 -0500 (Thu, 03 Mar 2011) | 9 lines fix small memory leak fix small memory leak caused by a string allocation that wasn't freed (closes issue #18907) Reported by: andy11 Patches: asterisk_trunk-app_externalivr-leak.patch uploaded by andy11 (license 1224) ........ ................ 2011-03-02 19:54 +0000 [r309204-309256] Jason Parker * /, channels/chan_sip.c: Merged revisions 309255 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r309255 | qwell | 2011-03-02 13:53:47 -0600 (Wed, 02 Mar 2011) | 8 lines Fix usage of "hasvoicemail=yes" and "mailbox=" in users.conf for SIP. Since it's a duplicate, nothing is going to be done, so delme doesn't need to be set at all. Strangely, when this was added, this was being set to 1 in 1.6, and 0 in trunk. (issue AST-439) ........ * main/http.c: Fix consistency of CRLFs on HTTP headers that get sent out. (closes issue #18186) Reported by: nivaldomjunior Patches: 18186-httpheadernewline.diff uploaded by qwell (license 4) 2011-03-01 21:57 +0000 [r309126-309170] Richard Mudgett * funcs/func_channel.c: Document CHANNEL(keypad_digits) and CHANNEL(no_media_path). * Added XML documentation for CHANNEL(keypad_digits) and CHANNEL(no_media_path). * Tweaked XML documentation for CHANNEL(reversecharge). * channels/sig_analog.c: Chan_dahdi does not retain CID when detecting DTMF CID without polarity reversal. Looks like an unintended change when sig_analog.c was extracted from chan_dahdi.c. Removed useless conditional around needed code and fixed resulting compiler warning. (closes issue #18667) Reported by: enegaard Patches: issue18667.patch uploaded by enegaard (license 1197) Tested by: enegaard JIRA SWP-2965 2011-03-01 16:09 +0000 [r309084] David Vossel * /, channels/chan_sip.c: Merged revisions 309083 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r309083 | dvossel | 2011-03-01 10:05:25 -0600 (Tue, 01 Mar 2011) | 9 lines Fixes thread blocking issue in the sip TCP/TLS implementation. (closes issue #18497) Reported by: vois Patches: issues_18497.diff uploaded by dvossel (license 671) Tested by: vois, rossbeer, kowalma, Freddi_Fonet ........ 2011-02-28 11:10 +0000 [r308991-309035] Tilghman Lesher * main/ast_expr2.fl, /, configure, include/asterisk/autoconfig.h.in, main/ast_expr2f.c, configure.ac: Merged revisions 309033-309034 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r309033 | tilghman | 2011-02-28 04:43:12 -0600 (Mon, 28 Feb 2011) | 4 lines A later version of flex already includes the fwrite workaround code, which if used twice causes a compilation error. Detect whether Flex will compile without the workaround; if so, suppress our workaround code. ........ r309034 | tilghman | 2011-02-28 05:07:52 -0600 (Mon, 28 Feb 2011) | 2 lines Clarify meaning, removing double negative (stupid!) ........ * /, funcs/func_odbc.c: Merged revisions 308990 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r308990 | tilghman | 2011-02-28 03:32:22 -0600 (Mon, 28 Feb 2011) | 7 lines Statements updating zero rows may return SQL_NO_DATA. This is fine; it's handled. (closes issue #18815) Reported by: irroot Patches: func_odbc.insert_nodata.patch uploaded by irroot (license 52) ........ 2011-02-25 18:52 +0000 [r308945] Alec L Davis * channels/chan_sip.c: Fix Deadlock with attended transfer of SIP call Call path sip_set_rtp_peer (locks chan then pvt) transmit_reinvite_with_sdp try_suggested_sip_codec pbx_builtin_getvar_helper (locks p->owner) But by the time p->owner lock was attempted, seems as though chan and p->owner were different. So in sip_set_rtp_peer, lock pvt first then lock p->owner using deadlocking methods. (closes issue #18837) Reported by: alecdavis Patches: bug18837-trunk.diff3.txt uploaded by alecdavis (license 585) Tested by: alecdavis, Irontec, ZX81, cmaj Review: [https://reviewboard.asterisk.org/r/1126/] 2011-02-24 21:38 +0000 [r308903] Richard Mudgett * main/channel.c: Invalid read in ast_channel_set_caller_event(). Valgrind reported that ast_channel_set_caller_event() was reading data from a freed buffer when using the pre_set structure. Rearange things to pre-calculate the name and number pointer before updating the caller party structure to see if the name or number was changed. 2011-02-24 17:57 +0000 [r308815] Terry Wilson * main/manager.c, /: Merged revisions 308814 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r308814 | twilson | 2011-02-24 11:54:49 -0600 (Thu, 24 Feb 2011) | 19 lines Merged revisions 308813 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r308813 | twilson | 2011-02-24 11:42:16 -0600 (Thu, 24 Feb 2011) | 12 lines Don't broadcast FullyBooted to every AMI connection The FullyBooted event should not be sent to every AMI connection every time someone connects via AMI. It should only be sent to the user who just connected. (closes issue #18168) Reported by: FeyFre Patches: bug0018168.patch uploaded by FeyFre (license 1142) Tested by: FeyFre, twilson ........ ................ 2011-02-24 15:06 +0000 [r308723] Matthew Nicholson * main/udptl.c, /: Merged revisions 308722 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r308722 | mnicholson | 2011-02-24 08:59:41 -0600 (Thu, 24 Feb 2011) | 9 lines Merged revisions 308721 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r308721 | mnicholson | 2011-02-24 08:54:56 -0600 (Thu, 24 Feb 2011) | 2 lines silence gcc 4.2 compiler warning ........ ................ 2011-02-24 03:41 +0000 [r308679] Terry Wilson * configs/sip.conf.sample, /, channels/chan_sip.c: Merged revisions 308678 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r308678 | twilson | 2011-02-23 21:38:22 -0600 (Wed, 23 Feb 2011) | 8 lines Use remotesecret to authenticate with a remote party The remotesecret option was only being used for outbound registration and not for placing calls. This patch uses remotesecret on outbound calls if it is set, otherwise secret is still used. Review: https://reviewboard.asterisk.org/r/1107/ ........ 2011-05-09 Leif Madsen * Asteris 1.8.4 Released. 2011-04-25 Leif Madsen * Asterisk 1.8.4-rc3 Released. * Use SSLv23_client_method instead of old SSLv2 only. (closes issue 0019095) (closes issue 0019138) Reported by: tzafrir Patches: no_ssl2.diff uploaded by tzafrir (license 46) Tested by: russell, chazzam * Resolve crash in ast_mutex_init() 2011-02-25 Leif Madsen * Asterisk 1.8.4-rc2 Released. * Fix Deadlock with attended transfer of SIP call (Closes issue #18837. Reported, patched by alecdavis. Tested by alecdavid, Irontec, ZX81, cmaj) 2011-02-23 Leif Madsen * Asterisk 1.8.4-rc1 Released. 2011-02-23 23:38 +0000 [r308622] Richard Mudgett * channels/sig_pri.c: sig_pri_new_ast_channel() should return NULL when new_ast_channel() fails. (closes issue #18874) Reported by: cmaj Patches: patch-sig_pri-crash-possible-null-channel-pointer.diff.txt uploaded by cmaj (license 830) JIRA SWP-3172 2011-02-22 15:31 +0000 [r308526] Andrew Latham * main/http.c: Use ast_debug for console logging Guessed the log levels based on info that level 3 is the soft roof. Can we create a page / document to define the levels? 2011-02-21 15:02 +0000 [r308416] Matthew Nicholson * main/udptl.c, /: Merged revisions 308414 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r308414 | mnicholson | 2011-02-21 09:00:22 -0600 (Mon, 21 Feb 2011) | 12 lines Merged revisions 308413 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r308413 | mnicholson | 2011-02-21 08:57:15 -0600 (Mon, 21 Feb 2011) | 5 lines Properly check the bounds of arrays when decoding UDPTL packets. Also, remove broken support for receiving UDPTL packets larger than 16k. That shouldn't ever happen anyway. AST-2011-002 FAX-281 ........ ................ 2011-02-21 14:24 +0000 [r308393] Andrew Latham * main/http.c: Add HTTP URI Debug logging and update notice enable reporting of the request URI / URL in debugging change funny debug note to a serious note. 2011-02-19 14:06 +0000 [r308330] Andrew Latham * main/http.c: Add CSS MIME Type Modern browsers are checking for the MIME Type of pages and in some cases will not load a file if the type is wrong. 2011-02-19 11:02 +0000 [r308288] Tilghman Lesher * utils: A few more (copies of) files to ignore in this directory. 2011-02-18 00:07 +0000 [r308242] Alexandr Anikin * addons/ooh323cDriver.c, addons/ooh323cDriver.h, addons/chan_ooh323.c: added g729onlyA option for announce only AnnexA g.729 codec in h.323 capabilities. Option can be global or per user/peer. 2011-02-16 20:21 +0000 [r308150] Paul Belanger * addons/ooh323c/src/ooSocket.c: Fix FreeBSD builds. 2011-02-16 07:57 +0000 [r308098] Alexandr Anikin * addons/ooh323c/src/ooSocket.c: ifdef __linux__ keepalive variables also 2011-02-15 23:34 +0000 [r308010] Jason Parker * apps/app_queue.c, /: Merged revisions 308007 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r308007 | qwell | 2011-02-15 17:33:24 -0600 (Tue, 15 Feb 2011) | 17 lines Merged revisions 308002 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r308002 | qwell | 2011-02-15 17:32:20 -0600 (Tue, 15 Feb 2011) | 10 lines Fix regression that changed behavior of queues when ringing a queue member. This reverts r298596, which was to fix a highly bizarre and contrived issue with a queue member that called into his own queue being transferred back into his own queue. I couldn't reproduce that issue in any way. I think one of the other recent transfer fixes actually fixed this. (closes issue #18747) Reported by: vrban ........ ................ 2011-02-15 23:08 +0000 [r307970] Alexandr Anikin * addons/ooh323c/src/ooSocket.c: include tcp keepalive socket calls only on linux, freebsd and others don't have these options on sockets. 2011-02-15 19:52 +0000 [r307879-307962] Richard Mudgett * apps/app_dial.c: Don't crash when forcing caller id. * channels/sig_pri.c, include/asterisk/ccss.h, channels/sig_pri.h, channels/chan_dahdi.c, channels/chan_sip.c, main/ccss.c: No response sent for SIP CC subscribe/resubscribe request. Asterisk does not send a response if we try to subscribe for call completion after we have received a 180 Ringing. You can only subscribe for call completion when the call has been cleared. When we receive the 180 Ringing, for this call, its call-completion state is 'CC_AVAILABLE'. If we then send a subscribe message to Asterisk, it trys to change the call-completion state to 'CC_CALLER_REQUESTED'. Because this is an invalid state change, it just ignores the message. The only state Asterisk will accept our subscribe message is in the 'CC_CALLER_OFFERED' state. Asterisk will go into the 'CC_CALLER_OFFERED' when the SIP client clears the call by sending a CANCEL. Asterisk should always send a response. Even if its a negative one. The fix is to allow for the CCSS core to notify a CC agent that a failure has occurred when CC is requested. The "ack" callback is replaced with a "respond" callback. The "respond" callback has a parameter indicating either a successful response or a specific type of failure that may need to be communicated to the requester. (closes issue #18336) Reported by: GeorgeKonopacki Tested by: mmichelson, rmudgett JIRA SWP-2633 (closes issue #18337) Reported by: GeorgeKonopacki Tested by: mmichelson JIRA SWP-2634 2011-02-15 07:02 +0000 [r307750-307837] Tilghman Lesher * /, funcs/func_odbc.c: Merged revisions 307836 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r307836 | tilghman | 2011-02-15 01:01:37 -0600 (Tue, 15 Feb 2011) | 8 lines Need to retrieve the rows affected before using the associated variable. (closes issue #18795) Reported by: irroot Patches: 20110211__issue18795.diff.txt uploaded by tilghman (license 14) Tested by: tilghman ........ * res/res_odbc.c, /: Merged revisions 307792 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r307792 | tilghman | 2011-02-14 14:10:28 -0600 (Mon, 14 Feb 2011) | 8 lines Increment usage count at first reference, to avoid a race condition with many threads creating connections all at once. (issue #18156) Reported by: asgaroth Patches: 20110214__issue18156.diff.txt uploaded by tilghman (license 14) Tested by: tilghman ........ * apps/app_queue.c, apps/app_dial.c: Calling a gosub routine defined in AEL from Dial/Queue ceased to work. A bug in AEL did not distinguish between the "s" extension generated by AEL and an "s" extension that was required to exist by the chan_dahdi (or another channel) that was not supplied with a starting extension. Therefore, AEL made incorrect assumptions about what commands were permissable in the context. This was fixed by making AEL generate a different extension name. However, Dial and Queue make additional assumptions about the name of the default gosub extension. Therefore, they needed to be brought into line with a "macro" rendered by AEL (as a gosub), without breaking traditional dialplans written without the aid of AEL. Related to (issue #18480) Reported by: nivek (closes issue #18729) Reported by: kkm Patches: 20110209__issue18729.diff.txt uploaded by tilghman (license 14) 018729-dial-queue-gosub-try3.patch uploaded by kkm (license 888) Tested by: kkm 2011-02-10 22:39 +0000 [r307536] Jason Parker * main/asterisk.c, contrib/init.d/rc.debian.asterisk, /: Merged revisions 307535 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r307535 | qwell | 2011-02-10 16:35:49 -0600 (Thu, 10 Feb 2011) | 15 lines Merged revisions 307534 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r307534 | qwell | 2011-02-10 16:33:09 -0600 (Thu, 10 Feb 2011) | 8 lines Remove color when executing commands via a remote console. Essentially this makes '-x' imply '-n' on rasterisk. This was done in a different and incomplete way previously, which I'm reverting here. (issue #18776) Reported by: alecdavis ........ ................ 2011-02-10 18:50 +0000 [r307509] Alexandr Anikin * addons/ooh323c/src/ooSocket.c, addons/ooh323c/src/oochannels.c, addons/ooh323c/src/ooStackCmds.c, addons/ooh323c/src/ooq931.c, addons/ooh323c/src/ooh323.c, addons/chan_ooh323.c, addons/ooh323c/src/ooh245.c, addons/ooh323c/src/ooCalls.h: Corrections for properly work with H.323v2 (older) endpoints and other small fixes. Interpret remote side H.225 version. Corrections for H.323v2 endpoints: don't start TCS and MSD before connect, don't start TCS and MSD by accepting H.245 connection, start TCS and MSD by StartH245 facility message. Other fixes: fix non zeroended remoteDisplayName issue, small fixes in call clearing by closing H.245 connection, tcp keepalive introduced on TCP connections (now is hardcoded, will be configurable in the future), don't force H.245tunneling if FastStart is active, don't send Alerting singal more than once per call. (issue 0018542) Reported by: vmikhelson Patches: issue18542-final-3.patch uploaded by may213 (license 454) Tested by: vmikhelson 2011-02-10 17:44 +0000 [r307467] Mark Michelson * configs/ccss.conf.sample: Fix a gaffe in the CCSS sample configuration. Discovered by Philippe Lindheimer and pointed out on #asterisk-dev 2011-02-09 21:44 +0000 [r307314] Andrew Latham * contrib/init.d/rc.debian.asterisk: Disable color during running test (closes issue #18776) Reported by: alecdavis Patches: ast_deb_init.diff uploaded by lathama (license 1028) Tested by: andrel, lathama 2011-02-09 21:06 +0000 [r307228-307273] Jeff Peeler * main/astobj2.c: Add missing debug info for ao2_link for use with REF_DEBUG in ao2 callback. (closes issue #18758) Reported by: rgagnon Patches: branch-1.8-r306540-astobj-fix.diff uploaded by rgagnon (license 1202) trunk-r306540-astobj-fix.diff uploaded by rgagnon (license 1202) * /, main/features.c: Merged revisions 307227 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r307227 | jpeeler | 2011-02-09 13:52:12 -0600 (Wed, 09 Feb 2011) | 11 lines Make sure to set parking dial context for non-default parking lots. Since parking_con_dial isn't settable, set all parking lots to "park-dial". (closes issue #17946) Reported by: bluecrow76 Patches: asterisk-1.8.0-beta4-multipark-fixes-2010SEP02.diff uploaded by bluecrow76 (license 270) modified by me ........ 2011-02-09 05:39 +0000 [r307142] Tilghman Lesher * main/lock.c: Initialize tracking variable in structure properly. Fixes a memory leak. (Reported by The_Boy_Wonder on IRC, fixed by me.) 2011-02-08 21:24 +0000 [r307092] Jason Parker * main/logger.c: Fix issue with verbose messages not showing on remote console. This code was reworked recently, and since the logchannel list hadn't been created yet at this point, and it was a verbose message, it was being dropped on the floor. Now it'll continue on to where it should be handled. (closes issue #18580) Reported by: pabelanger 2011-02-08 21:13 +0000 [r307065] Mark Michelson * main/ccss.c: Add a couple of useful channel variables for the CC recall macro. CC_EXTEN and CC_CONTEXT will allow you to determine the channel and context that will be called when the recall occurs. 2011-02-08 20:22 +0000 [r306999] Andrew Latham * doc/asterisk.sgml, doc/asterisk.8, configs/asterisk.conf.sample, configs/voicemail.conf.sample: Documentation Updates Note default polling setting in voicemail.conf Add missing config to asterisk.conf Update manpage (issue #16505) Reported by: tzafrir Patches: asterisk_sgml_fixes_demo.diff uploaded by tzafrir (license 46) Tested by: lathama, tzafrir 2011-02-08 20:18 +0000 [r306979] Terry Wilson * /, channels/chan_sip.c: Merged revisions 306973 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r306973 | twilson | 2011-02-08 12:14:09 -0800 (Tue, 08 Feb 2011) | 9 lines Merged revisions 306972 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r306972 | twilson | 2011-02-08 12:05:13 -0800 (Tue, 08 Feb 2011) | 2 lines Fix comparison for REFER Replaces tags with pedantic=yes ........ ................ 2011-02-08 19:41 +0000 [r306866-306967] Jeff Peeler * apps/app_voicemail.c, /: Merged revisions 306966 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r306966 | jpeeler | 2011-02-08 13:41:21 -0600 (Tue, 08 Feb 2011) | 9 lines Merged revisions 306965 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r306965 | jpeeler | 2011-02-08 13:40:58 -0600 (Tue, 08 Feb 2011) | 1 line fix this line again ........ ................ * apps/app_voicemail.c, /: Merged revisions 306961 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r306961 | jpeeler | 2011-02-08 13:25:10 -0600 (Tue, 08 Feb 2011) | 15 lines Merged revisions 306960 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r306960 | jpeeler | 2011-02-08 13:18:50 -0600 (Tue, 08 Feb 2011) | 9 lines Backup file storing message duration is not used with IMAP_STORAGE, remove code. The message duration is stored in the body of the email when using IMAP_STORAGE, so nothing needs to happen with the backup file. (closes issue #18718) Reported by: kerframil ........ ................ * apps/app_voicemail.c, /: Merged revisions 306865 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r306865 | jpeeler | 2011-02-08 10:21:25 -0600 (Tue, 08 Feb 2011) | 9 lines Merged revisions 306864 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r306864 | jpeeler | 2011-02-08 10:19:17 -0600 (Tue, 08 Feb 2011) | 1 line make this safer and fully correct, pointed out by Steve Davis ........ ................ 2011-02-08 01:45 +0000 [r306826] Andrew Latham * UPGRADE.txt, include/asterisk/manager.h, doc/asterisk.sgml, include/asterisk/doxygen/mantisworkflow.h: Documentation Updates. More updates to the removed doc folder and start updates to the man page. (issue #16505) Reported by: tzafrir Tested by: lathama 2011-02-07 22:43 +0000 [r306619-306674] Terry Wilson * /, main/features.c: Merged revisions 306673 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r306673 | twilson | 2011-02-07 14:40:20 -0800 (Mon, 07 Feb 2011) | 17 lines Merged revisions 306672 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r306672 | twilson | 2011-02-07 14:35:20 -0800 (Mon, 07 Feb 2011) | 10 lines Don't try to pickup a call in the middle of a masquerade If A calls B which doesn't answer and C & D both try to do a call pickup, it is possible for ast_pickup_call to answer the call, then fail to masquerade one of the calls because the other one is already in the process of masquerading. This patch checks to see if the channel is in the process of masquerading before call before selecting it for a pickup. Review: https://reviewboard.asterisk.org/r/1094/ ........ ................ * /, channels/chan_sip.c: Merged revisions 306618 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r306618 | twilson | 2011-02-07 13:59:54 -0800 (Mon, 07 Feb 2011) | 17 lines Merged revisions 306617 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r306617 | twilson | 2011-02-07 13:51:43 -0800 (Mon, 07 Feb 2011) | 10 lines Don't allow a REFER w/replaces to replace its own dialog Asterisk currently accepts a REFER with a Refer-To with an embedded Replaces header that matches the dialog of the REFER. This would be a situation like A calls B, A calls C, A transfers B to A, which is just silly. This patch makes the transfer fail instead of making Asterisk freak out and forget to hang other channels up. Review: https://reviewboard.asterisk.org/r/1093/ ........ ................ 2011-02-07 17:36 +0000 [r306575] Mark Michelson * main/ccss.c: Rearrange a bit of code in the generic CC recall operation. By waiting to call the callback macro after the CC_INTERFACES, extension, priority, and context have been set, this information can be accessed more easily within the callback macro. Reported by Philippe Lindheimer. 2011-02-04 19:24 +0000 [r306356] Jason Parker * apps/app_queue.c, /: Merged revisions 306346 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r306346 | qwell | 2011-02-04 13:21:43 -0600 (Fri, 04 Feb 2011) | 9 lines Don't fallthrough to 'unknown' in the 'ringing' case. This could cause improper exits from the queue. (closes issue #18499) Reported by: zaltar Patches: app_queue.patch uploaded by zaltar (license 1148) ........ 2011-02-04 18:53 +0000 [r306324] Richard Mudgett * apps/app_queue.c, apps/app_dial.c: Don't send redirecting updates to the caller if the dialplan forked the call. Each fork in the dial could be redirected and confuse the caller. For ISDN the DivLeg1 and DivLeg3 messages would get confused because ISDN redirects calls in sequence not in parallel. * Also fixed a formatting inconsistency in app_dial.c and make a warning message more useful about what frame type could not be written. 2011-02-03 23:49 +0000 [r306215] Jeff Peeler * channels/chan_sip.c: Fix SIP deadlock involving state changes. Once again a call to pbx_builtin_getvar_helper (and pbx_builtin_setvar_helper) has caused locking problems. Both of these functions lock the channel when the channel argument is passed in! In this case, the suspected problem (the backtrace makes it impossible to tell) was the private being locked in sip_set_rtp_peer and then: transmit_reinvite_with_sdp try_suggested_sip_codec pbx_builtin_getvar_helper (Traced to verify that the fix was only required in 1.8 and later.) (closes issue #18491) Reported by: cmaj Patches: chan_sip_fix_deadlocks_bug_18491.txt uploaded by cmaj (license 830) Tested by: cmaj 2011-02-03 21:03 +0000 [r306127] Terry Wilson * channels/chan_local.c, /: Merged revisions 306126 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r306126 | twilson | 2011-02-03 12:56:00 -0800 (Thu, 03 Feb 2011) | 16 lines Merged revisions 306119 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r306119 | twilson | 2011-02-03 12:36:34 -0800 (Thu, 03 Feb 2011) | 9 lines Set hangup cause in local_hangup When a call involves a local channel (like SIP -> Local -> SIP), the hangup cause was not being set. This resulted in SIP channels sometimes getting a 503 error instead of a 486 when the far side sent a busy. In Asterisk 1.8+ this also can cause issues with CCSS that involve a local channel. This patch sets the hangupcause for one side of the local channel to the other in local_hangup for outbound calls. ........ ................ 2011-02-03 20:50 +0000 [r306124] Jeff Peeler * /, main/features.c: Merged revisions 306123 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r306123 | jpeeler | 2011-02-03 14:49:48 -0600 (Thu, 03 Feb 2011) | 10 lines Set exception on channel in parking thread when POLLPRI event detected. This is done just to make the code be equivalent to the old select code. As noted in 303106 the same issue was already fixed in this branch, but the exception was not set on the channel in the case of POLLPRI. The reason that this did not cause a problem here is because in 122923 the check in __ast_read to check the exception flag was removed. (related to #18637) ........ 2011-02-03 15:50 +0000 [r305987] Andrew Latham * phoneprov/snom-mac.xml (added), configs/phoneprov.conf.sample, /: res_phoneprov add snom 300, 320, 360, 370, 820, 821, 870 support (issue #18713) Reported by: lathama Patches: snom_dir.diff uploaded by lathama (license 1028) Tested by: lathama 2011-02-03 00:24 +0000 [r305923] Richard Mudgett * main/channel.c, main/manager.c, /, channels/chan_sip.c, apps/app_sendtext.c: Merged revisions 305889 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r305889 | rmudgett | 2011-02-02 18:15:07 -0600 (Wed, 02 Feb 2011) | 17 lines Merged revisions 305888 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r305888 | rmudgett | 2011-02-02 18:02:43 -0600 (Wed, 02 Feb 2011) | 8 lines Minor AST_FRAME_TEXT related issues. * Include the null terminator in the buffer length. When the frame is queued it is copied. If the null terminator is not part of the frame buffer length, the receiver could see garbage appended onto it. * Add channel lock protection with ast_sendtext(). * Fixed AMI SendText action ast_sendtext() return value check. ........ ................ 2011-02-02 20:05 +0000 [r305844] Tilghman Lesher * funcs/func_env.c: Eliminate a file descriptor leak when using the FILE() dialplan function. (closes issue #18731) Reported by: marioabajo 2011-02-02 19:27 +0000 [r305753-305838] Andrew Latham * apps/app_externalivr.c, configs/sip.conf.sample, configs/skinny.conf.sample, configs/h323.conf.sample, configs/sla.conf.sample, apps/app_voicemail.c, configs/iax.conf.sample, funcs/func_enum.c, configs/dundi.conf.sample, funcs/func_callcompletion.c, configs/mgcp.conf.sample, configs/iaxprov.conf.sample, configs/unistim.conf.sample: Replacing doc/* and asterisk.pdf with wiki links Adding links to http(s)://wiki.asterisk.org * configs/ccss.conf.sample, configs/sip.conf.sample, configs/skinny.conf.sample, main/config.c, configs/h323.conf.sample, configs/sla.conf.sample, main/ast_expr2.fl, res/res_srtp.c, configs/chan_dahdi.conf.sample, configs/extconfig.conf.sample, configs/res_snmp.conf.sample, main/ast_expr2f.c, res/res_timing_dahdi.c: Replacing doc/* with wiki links Adding links to http(s)://wiki.asterisk.org * channels/chan_sip.c: Replace link to old doc with new wiki page. Link to https://wiki.asterisk.org/wiki/display/AST/SIP+Retransmissions 2011-02-01 22:48 +0000 [r305692] Jason Parker * channels/chan_iax2.c: Reverse sense of an error test when reading from astdb. (closes issue #18545) Reported by: jcovert Patches: chan_iax2.c.patch uploaded by jcovert (license 551) 2011-02-01 21:14 +0000 [r305649] Andrew Latham * configs/sip.conf.sample: SIP Configuration Documentation sip show settings reports qualifyfreq in milliseconds. sip.conf configures qualifyfreg in seconds. 2011-02-01 19:23 +0000 [r305603] Brett Bryant * cel/cel_pgsql.c: Add a possible solution to a customer problem with reloading cel_pgsql.so quickly. 2011-02-01 18:02 +0000 [r305560] Andrew Latham * CHANGES, Makefile, README, /: doc/tex dir removed, but corresponding entries still exists Update README, CHANGES, and Makefile. Direct users to http://wiki.asterisk.org for documentation or to the AST.txt and AST.pdf included in the tarball. (closes issue #18443) Reported by: bas Patches: changes.diff uploaded by lathama (license 1028) readme.diff uploaded by lathama (license 1028) Tested by: lathama bas 2011-02-01 17:04 +0000 [r305473] Jason Parker * res/res_musiconhold.c, /: Merged revisions 305472 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r305472 | qwell | 2011-02-01 11:02:09 -0600 (Tue, 01 Feb 2011) | 16 lines Merged revisions 305471 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r305471 | qwell | 2011-02-01 11:00:55 -0600 (Tue, 01 Feb 2011) | 9 lines Close file descriptor for timing source when a MOH class gets destroyed. (closes issue #18457) Reported by: mcallist Patches: 18457-closetimer.diff uploaded by qwell (license 4) 18457-closetimer_trunk.diff uploaded by qwell (license 4) Tested by: qwell, loloski ........ ................ 2011-02-01 00:01 +0000 [r305343] Richard Mudgett * channels/sig_pri.c, /: Merged revisions 305342 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r305342 | rmudgett | 2011-01-31 17:50:10 -0600 (Mon, 31 Jan 2011) | 14 lines Merged revisions 305341 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r305341 | rmudgett | 2011-01-31 17:45:58 -0600 (Mon, 31 Jan 2011) | 7 lines Obtain the pri lock for PRI queue counters. Need to obtain the pri lock when calling pri_dump_info_str() to avoid a reentrancy problem when calculating the Q.921 Q count statistic. JIRA AST-484 ........ ................ 2011-01-31 23:07 +0000 [r305131-305254] Jason Parker * apps/app_dial.c, /, channels/chan_sip.c: Merged revisions 305253 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r305253 | qwell | 2011-01-31 16:59:34 -0600 (Mon, 31 Jan 2011) | 17 lines Merged revisions 305252 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r305252 | qwell | 2011-01-31 16:56:54 -0600 (Mon, 31 Jan 2011) | 10 lines Prevent a crash when dialing a technology with no destination (ex: Dial(SIP/)) chan_iax2 and other channel drivers already had code to prevent this. The attempt that app_dial was making to prevent it was not correct, so I fixed that. (closes issue #18371) Reported by: gbour Patches: 18371.patch uploaded by gbour (license 1162) ........ ................ * configs/sip.conf.sample, main/tcptls.c: Add alternative name for config option. The SIP sample configuration had "tlscadir" as the option name, but chan_sip used the more correct "tlscapath". Now both are accepted. Discovered (sort of) by a user on IRC in #asterisk * res/res_musiconhold.c: Fix compile error. pseudofd no longer exists. * res/res_musiconhold.c, /: Merged revisions 305130 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r305130 | qwell | 2011-01-31 14:59:37 -0600 (Mon, 31 Jan 2011) | 9 lines Merged revisions 305129 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r305129 | qwell | 2011-01-31 14:56:25 -0600 (Mon, 31 Jan 2011) | 2 lines Set file descriptors to -1 on creation, so that we don't see weirdness later. ........ ................ 2011-01-31 13:56 +0000 [r305083] Andrew Latham * main/http.c: Asterisk HTTP response Content-type Address content type for BSD and other platforms (closes issue #18456) Reported by: alexo Patches: asterisk18_http.patch uploaded by alexo (license 1175) Tested by: alexo 2011-01-31 07:51 +0000 [r304950-305040] Tilghman Lesher * include/asterisk/lock.h: Use the non-specific API aliases, to avoid a problem with building the utils directory. * apps/app_voicemail.c, /: Merged revisions 304978 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r304978 | tilghman | 2011-01-31 01:25:14 -0600 (Mon, 31 Jan 2011) | 9 lines Merged revisions 304952 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r304952 | tilghman | 2011-01-31 00:54:45 -0600 (Mon, 31 Jan 2011) | 2 lines Fix compilation when ODBC_STORAGE is defined. ........ ................ * main/utils.c, include/asterisk/lock.h, .cleancount, main/lock.c, main/heap.c: Change mutex tracking so that it only consumes memory in the core mutex object when it's actually being used. This reduces the overall size of a mutex which was 3016 bytes before this back down to 216 bytes (this is on 64-bit Linux with a glibc-implemented mutex). The exactness of the numbers here may vary slightly based upon how mutexes are implemented on a platform, but the long and short of it is that prior to this commit, chan_iax2 held down 98MB of memory on a 64-bit system for nothing more than a table of 32767 locks. After this commit, the same table occupies a mere 7MB of memory. (closes issue #18194) Reported by: job Patches: 20110124__issue18194.diff.txt uploaded by tilghman (license 14) Tested by: tilghman Review: https://reviewboard.asterisk.org/r/1066 2011-01-30 00:11 +0000 [r304908] Andrew Latham * apps/app_externalivr.c, apps/app_queue.c, apps/app_voicemail.c, funcs/func_realtime.c, res/res_calendar.c, funcs/func_callcompletion.c: Add Function and Application Relationships to documentation Add and extend the see-also sections to the documentation for applications and functions in an effort to expand the online documentation of the wiki. Also check for and update any links to moved documentation in the doc folder. 2011-01-29 23:07 +0000 [r304638-304866] Sean Bright * res/res_config_ldap.c, /: Merged revisions 304865 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r304865 | seanbright | 2011-01-29 18:05:25 -0500 (Sat, 29 Jan 2011) | 7 lines Plug some memory leaks in the LDAP realtime driver. (closes issue #18435) Reported by: zaltar Patches: res_config_ldap.patch uploaded by zaltar (license 1148) ........ * /, apps/app_meetme.c: Merged revisions 304776 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r304776 | seanbright | 2011-01-29 13:08:14 -0500 (Sat, 29 Jan 2011) | 15 lines If we fail to allocate our announcement objects, make sure we don't leak objects. The majority of this patch was committed already in r304726 and r304729. (issue #18225) Reported by: kenji (issue #18444) Reported by: junky (closes issue #18343) Reported by: kobaz Patches: meetme-refs.diff uploaded by kobaz (license 834) ........ * /, apps/app_meetme.c: Merged revisions 304773 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r304773 | seanbright | 2011-01-29 12:51:28 -0500 (Sat, 29 Jan 2011) | 9 lines When we pass the S() or L() options to MeetMe, make sure that we honor C as well. Without this patch, if the user was kicked from the conference via the S() or L() mechanism, we would just hang up on them even if we also passed C (continue in dialplan when kicked). With this patch we honor the C flag in those cases. (closes issue #17317) Reported by: var ........ * /, apps/app_meetme.c: Merged revisions 304729 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r304729 | seanbright | 2011-01-29 12:01:51 -0500 (Sat, 29 Jan 2011) | 15 lines Make sure that we unref the correct object when ejecting the most recent caller. Currently, when we kick the last user to enter, we decrement our own reference count which results in a crash when we kick another user or when we exit the conference ourselves. This will fix #18225 in 1.8 and trunk, but that particular bug does not exist in 1.6.2. (closes issue #18225) Reported by: kenji Patches: issue18225.patch uploaded by seanbright (license 71) Tested by: seanbright ........ * /, apps/app_meetme.c: Merged revisions 304726 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r304726 | seanbright | 2011-01-29 11:26:57 -0500 (Sat, 29 Jan 2011) | 9 lines Fix user reference leak in MeetMe. We were unlinking the user from the conferences user container, but not decrementing the reference count of the user as well, resulting in a leak. (closes issue #18444) Reported by: junky Tested by: seanbright ........ * /, apps/app_meetme.c: Merged revisions 304659,304682 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r304659 | seanbright | 2011-01-28 16:22:09 -0500 (Fri, 28 Jan 2011) | 5 lines Don't leak references if we can't create a pseudo channel for mixing in MeetMe. If there was a problem allocating a pseudo channel when building our meetme, we weren't destroying our user container or destroying the mutexes that we created. ........ r304682 | seanbright | 2011-01-28 17:38:05 -0500 (Fri, 28 Jan 2011) | 2 lines Revert part of the previous commit that snuck in. ........ * main/acl.c: Restore some conditionals that we lost in r277814. There are some cases where ast_append_ha() is called with a NULL instead of a valid int pointer. So if we get a NULL, don't try to dereference it. (closes issue #18162) Reported by: imcdona Patches: issue0018162.patch uploaded by pabelanger (license 224) Tested by: enegaard 2011-01-27 19:08 +0000 [r304554] Richard Mudgett * main/ccss.c: Warning message if CALLCOMPLETION(cc_callback_macro or cc_agent_dialstring) are empty. Test if the value pointer is not NULL instead of not ast_strlen_zero(). 2011-01-27 17:03 +0000 [r304462-304466] Jason Parker * /, configure, configure.ac: Merged revisions 304465 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r304465 | qwell | 2011-01-27 11:01:24 -0600 (Thu, 27 Jan 2011) | 16 lines Merged revisions 304464 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r304464 | qwell | 2011-01-27 10:57:46 -0600 (Thu, 27 Jan 2011) | 9 lines Fix default prefix=/usr regression on non-Linux systems. This partially reverts a change made in branches/1.4/ r267759, which will cause issue #17013 to be reopened. This issue was pointed out by a user on #asterisk, who helpfully discovered that paths were being set incorrectly. To truly understand what was wrong, one should run: svn diff --force -c configure ........ ................ * /, configure: Merged revisions 304461 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r304461 | qwell | 2011-01-27 10:48:00 -0600 (Thu, 27 Jan 2011) | 9 lines Merged revisions 304460 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r304460 | qwell | 2011-01-27 10:47:03 -0600 (Thu, 27 Jan 2011) | 1 line Rerun bootstrap.sh with no changes, so that it is more obvious what my next commit changes. ........ ................ 2011-01-26 22:27 +0000 [r304339] Jeff Peeler * /, main/features.c: Merged revisions 304338 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r304338 | jpeeler | 2011-01-26 16:26:37 -0600 (Wed, 26 Jan 2011) | 2 lines Change delimiter used internally for GOTO_ON_BLINDXFR to commas to match 76703. ........ 2011-01-26 21:02 +0000 [r304251] Mark Michelson * main/udptl.c, /: Merged revisions 304250 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r304250 | mmichelson | 2011-01-26 15:02:10 -0600 (Wed, 26 Jan 2011) | 9 lines Merged revisions 304242 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r304242 | mmichelson | 2011-01-26 14:38:37 -0600 (Wed, 26 Jan 2011) | 3 lines Get rid of unused 'verbose' field in ast_udptl ........ ................ 2011-01-26 20:43 +0000 [r304245] Matthew Nicholson * channels/sip/include/sip.h, channels/sip/include/reqresp_parser.h, /, channels/chan_sip.c, channels/sip/reqresp_parser.c: Merged revisions 304244 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r304244 | mnicholson | 2011-01-26 14:42:16 -0600 (Wed, 26 Jan 2011) | 13 lines Merged revisions 304241 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r304241 | mnicholson | 2011-01-26 14:38:22 -0600 (Wed, 26 Jan 2011) | 6 lines This patch modifies chan_sip to route responses to the address the request came from. It also modifies chan_sip to respect the maddr parameter in the Via header. ABE-2664 Review: https://reviewboard.asterisk.org/r/1059/ ........ ................ 2011-01-26 20:23 +0000 [r304186] Sean Bright * /, configs/queues.conf.sample: Merged revisions 304181 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r304181 | seanbright | 2011-01-26 15:22:47 -0500 (Wed, 26 Jan 2011) | 9 lines Merged revisions 304159 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r304159 | seanbright | 2011-01-26 15:18:29 -0500 (Wed, 26 Jan 2011) | 1 line Make sure the sample queues.conf is properly commented. ........ ................ 2011-01-26 19:39 +0000 [r304150] Richard Mudgett * channels/chan_dahdi.c, /: Merged revisions 304149 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r304149 | rmudgett | 2011-01-26 13:38:38 -0600 (Wed, 26 Jan 2011) | 9 lines Merged revisions 304148 from https://origsvn.digium.com/svn/asterisk/be/branches/C.3-bier .......... r304148 | rmudgett | 2011-01-26 13:23:46 -0600 (Wed, 26 Jan 2011) | 2 lines Update documentation for DAHDISendCallreroutingFacility() application. .......... ................ 2011-01-26 01:26 +0000 [r304097] Sean Bright * /, main/file.c: Merged revisions 304096 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r304096 | seanbright | 2011-01-25 20:24:58 -0500 (Tue, 25 Jan 2011) | 12 lines Per the man page, setvbuf() must be called before any other operation on an open file. We use setvbuf() to associate a buffer with a stream, but we have already written to the open file. This works (by chance) on Linux, but fails on other platforms, such as OpenSolaris. (closes issue #16610) Reported by: bklang Patches: setvbuf.patch uploaded by crjw (license 963) Tested by: bklang, asgaroth, efutch ........ 2011-01-25 23:28 +0000 [r304007] Richard Mudgett * /, main/features.c: Merged revisions 304006 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r304006 | rmudgett | 2011-01-25 17:25:32 -0600 (Tue, 25 Jan 2011) | 15 lines Merged revisions 304005 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r304005 | rmudgett | 2011-01-25 17:21:09 -0600 (Tue, 25 Jan 2011) | 8 lines DTMF attended transfers sometimes fail for no apparent reason. The loop in feature_request_and_dial() can exit when Party C has answered without processing an AST_CONTROL_ANSWER. Also sometimes an AST_CONTROL_ANSWER never happens even though Party C has answered. Don't hangup Party C if he is up or we receive an AST_CONTROL_ANSWER. ........ ................ 2011-01-25 22:09 +0000 [r303962] Terry Wilson * /, channels/chan_sip.c: Merged revisions 303960 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r303960 | twilson | 2011-01-25 16:02:42 -0600 (Tue, 25 Jan 2011) | 23 lines Merged revisions 303906 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r303906 | twilson | 2011-01-25 14:50:59 -0600 (Tue, 25 Jan 2011) | 16 lines Guard against retransmitting BYEs indefinitely In the case of an attended transfer (A calls B, A atxfers to C) where A becomes unreachable before replying to Asterisk's BYE, Asterisk can sometimes retransmit the BYE indefinitely. This is because __sip_autodestruct tests p->refer && !ast_test_flag(&p->flags[0], SIP_ALREADYGONE and will then transmit a BYE. When this BYE times out, it will not ever be marked as ALREADYGONE, so when __sip_autodestruct is called again, we end up starting the cycle over. This patch adds a call to sip_alreadygone(pkt->owner) in retrans_pkt in the case of a BYE that has timed out. This should prevent Asterisk from trying to transmit new BYE messages in the future. Review: https://reviewboard.asterisk.org/r/1077/ ........ ................ 2011-01-25 20:56 +0000 [r303907] Matthew Nicholson * include/asterisk/res_fax.h, res/res_fax.c: Reimplemented fax session reservation to reverse the ABI breakage introduced in r297486. 2011-01-25 18:55 +0000 [r303860] Tilghman Lesher * /, channels/chan_sip.c: Merged revisions 303858 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r303858 | tilghman | 2011-01-25 12:41:26 -0600 (Tue, 25 Jan 2011) | 5 lines Fix "sip show user ", so that it actually shows results, instead of just completing the last entry. (closes issue #16675) Reported by: pj ........ 2011-01-25 17:49 +0000 [r303771] Richard Mudgett * channels/sig_pri.c, channels/sig_ss7.c, channels/sig_pri.h, channels/chan_dahdi.c, channels/sig_ss7.h, /: Merged revisions 303769 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r303769 | rmudgett | 2011-01-25 11:42:42 -0600 (Tue, 25 Jan 2011) | 47 lines Merged revisions 303765 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r303765 | rmudgett | 2011-01-25 11:36:50 -0600 (Tue, 25 Jan 2011) | 40 lines Sending out unnecessary PROCEEDING messages breaks overlap dialing. Issue #16789 was a good idea. Unfortunately, it breaks overlap dialing through Asterisk. There is not enough information available at this point to know if dialing is complete. The ast_exists_extension(), ast_matchmore_extension(), and ast_canmatch_extension() calls are not adequate to detect a dial through extension pattern of "_9!". Workaround is to use the dialplan Proceeding() application early in non-dial through extensions. * Effectively revert issue #16789. * Allow outgoing overlap dialing to hear dialtone and other early media. A PROGRESS "inband-information is now available" message is now sent after the SETUP_ACKNOWLEDGE message for non-digital calls. An AST_CONTROL_PROGRESS is now generated for incoming SETUP_ACKNOWLEDGE messages for non-digital calls. * Handling of the AST_CONTROL_CONGESTION in chan_dahdi/sig_pri was inconsistent with the cause codes. * Added better protection from sending out of sequence messages by combining several flags into a single enum value representing call progress level. * Added diagnostic messages for deferred overlap digits handling corner cases. (closes issue #17085) Reported by: shawkris (closes issue #18509) Reported by: wimpy Patches: issue18509_early_media_v1.8_v3.patch uploaded by rmudgett (license 664) Expanded upon issue18509_early_media_v1.8_v3.patch to include analog and SS7 because of backporting requirements. Tested by: wimpy, rmudgett ........ ................ 2011-01-25 17:02 +0000 [r303678] Jeff Peeler * apps/app_voicemail.c, /: Merged revisions 303677 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r303677 | jpeeler | 2011-01-25 10:59:28 -0600 (Tue, 25 Jan 2011) | 26 lines Merged revisions 303676 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r303676 | jpeeler | 2011-01-25 10:58:29 -0600 (Tue, 25 Jan 2011) | 20 lines Fix voicemail sequencing for file based storage. A previous change was made to account for when the number of voicemail messages exceeds the max limit to be handled properly, but it caused gaps in the messages to not be properly handled. This has now been resolved. In later non 1.4 branches, it appears that resequencing wasn't even occurring due from what appears and accidental code removal. (closes issue #18498) Reported by: JJCinAZ Patches: bug18498v2.patch uploaded by jpeeler (license 325) (closes issue #18486) Reported by: bluefox Patches: bug18486.patch uploaded by jpeeler (license 325) ........ ................ 2011-01-24 20:51 +0000 [r303549] Russell Bryant * include/asterisk/channel.h, main/channel.c, main/pbx.c, /, apps/app_meetme.c, main/features.c: Merged revisions 303548 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r303548 | russell | 2011-01-24 14:49:53 -0600 (Mon, 24 Jan 2011) | 38 lines Merged revisions 303546 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r303546 | russell | 2011-01-24 14:32:21 -0600 (Mon, 24 Jan 2011) | 31 lines Fix channel redirect out of MeetMe() and other issues with channel softhangup. Mantis issue #18585 reports that a channel redirect out of MeetMe() stopped working properly. This issue includes a patch that resolves the issue by removing a call to ast_check_hangup() from app_meetme.c. I left that in my patch, as it doesn't need to be there. However, the rest of the patch fixes this problem with or without the change to app_meetme. The key difference between what happens before and after this patch is the effect of the END_OF_Q control frame. After END_OF_Q is hit in ast_read(), ast_read() will return NULL. With the ast_check_hangup() removed, app_meetme sees this which causes it to exit as intended. Checking ast_check_hangup() caused app_meetme to exit earlier in the process, and the target of the redirect saw the condition where ast_read() returned NULL. Removing ast_check_hangup() works around the issue in app_meetme, but doesn't solve the issue if another application did the same thing. There are also other edge cases where if an application finishes at the same time that a redirect happens, the target of the redirect will think that the channel hung up. So, I made some changes in pbx.c to resolve it at a deeper level. There are already places that unset the SOFTHANGUP_ASYNCGOTO flag in an attempt to abort the hangup process. My patch extends this to remove the END_OF_Q frame from the channel's read queue, making the "abort hangup" more complete. This same technique was used in every place where a softhangup flag was cleared. (closes issue #18585) Reported by: oej Tested by: oej, wedhorn, russell Review: https://reviewboard.asterisk.org/r/1082/ ........ ................ 2011-01-24 17:20 +0000 [r303467] Jason Parker * channels/chan_dahdi.c, /: Merged revisions 303285 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r303285 | qwell | 2011-01-21 15:48:09 -0600 (Fri, 21 Jan 2011) | 15 lines Merged revisions 303284 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r303284 | qwell | 2011-01-21 15:45:34 -0600 (Fri, 21 Jan 2011) | 8 lines Reset configuration before parsing users.conf. Some values configured in chan_dahdi.conf were able to leak in to users.conf configuration. This was surprising users, and potentially setting non-sane "defaults". ASTNOW-125 ........ ................ 2011-01-21 23:11 +0000 [r303286-303375] Jason Parker * channels/chan_dahdi.c, /: Temporarily revert r303286 * channels/chan_dahdi.c, /: Merged revisions 303285 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r303285 | qwell | 2011-01-21 15:48:09 -0600 (Fri, 21 Jan 2011) | 15 lines Merged revisions 303284 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r303284 | qwell | 2011-01-21 15:45:34 -0600 (Fri, 21 Jan 2011) | 8 lines Reset configuration before parsing users.conf. Some values configured in chan_dahdi.conf were able to leak in to users.conf configuration. This was surprising users, and potentially setting non-sane "defaults". ASTNOW-125 ........ ................ 2011-01-20 20:31 +0000 [r303153] Richard Mudgett * main/ccss.c: Merged revision 303098 from https://origsvn.digium.com/svn/asterisk/be/branches/C.3-bier .......... r303098 | rmudgett | 2011-01-20 12:11:45 -0600 (Thu, 20 Jan 2011) | 15 lines CC_INTERFACES does not get built correctly with local channels. If local channels are used with CCSS, CC_INTERFACES gets garbage prepended to it so the CC recall fails. Also CC_INTERFACES gets "&(null)" appended to it. * Initialize the buffer to eliminate the prepended garbage. * Filter out the empty interface strings to eliminate the latter. * Added a diagnostic message if the CC_INTERFACES is ever empty. JIRA ABE-2740 JIRA SWP-2848 .......... 2011-01-20 19:57 +0000 [r303107] Shaun Ruffell * /, main/features.c: Merged revisions 303106 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r303106 | sruffell | 2011-01-20 13:56:34 -0600 (Thu, 20 Jan 2011) | 15 lines main/features: Use POLLPRI when waiting for events on parked channels. This change resolves a regression in the 1.6.2 when converting from select to poll. The DAHDI timers use POLLPRI to indicate that the timer fired, but features was not waiting for that flag. The result was no audio for MOH when a call was parked and res_timing_dahdi was in use. This patch is slightly modified from the one on the mantis issue. It does not set an exception on the channel if the POLLPRI flag is set. (closes issue #18262) Reported by: francesco_r Patches: patch_park_moh-trunk-2.txt uploaded by cjacobsen (license 1029) Tested by: francesco_r, rfrantik, one47 ........ 2011-01-20 17:10 +0000 [r303009] Jeff Peeler * apps/app_queue.c, /, configs/queues.conf.sample: Merged revisions 303008 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r303008 | jpeeler | 2011-01-20 11:07:44 -0600 (Thu, 20 Jan 2011) | 14 lines Merged revisions 303007 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r303007 | jpeeler | 2011-01-20 11:04:08 -0600 (Thu, 20 Jan 2011) | 8 lines Add new queue strategy to preserve behavior for when queue members moved to ao2. Add queue strategy called "rrordered" to mimic old behavior from when queue members were stored in a linked list. ABE-2707 ........ ................ 2011-01-20 16:12 +0000 [r302921] Russell Bryant * /, apps/app_privacy.c: Merged revisions 302920 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r302920 | russell | 2011-01-20 10:11:58 -0600 (Thu, 20 Jan 2011) | 2 lines Resolve a compiler warning. ........ 2011-01-20 15:45 +0000 [r302918] Leif Madsen * apps/app_dial.c, /: Merged revisions 302917 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r302917 | lmadsen | 2011-01-20 09:42:05 -0600 (Thu, 20 Jan 2011) | 8 lines Option L() is milliseconds, not seconds. > Change the verbose output of option L() to say milliseconds and not seconds > as the value is in milliseconds. > > (closes issue #18264) > Reported by: jacco > Patches: > app_dial_patch.txt uploaded by lmadsen (license 10) ........ 2011-01-19 23:56 +0000 [r302837] Russell Bryant * main/manager.c: Only check container count if it exists. 2011-01-19 23:49 +0000 [r302834] Sean Bright * apps/app_voicemail.c, /: Merged revisions 302833 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r302833 | seanbright | 2011-01-19 18:47:22 -0500 (Wed, 19 Jan 2011) | 7 lines Support greetingsfolder as documented in voicemail.conf.sample. (closes issue #17870) Reported by: edhorton Patches: __20100816-app_voicemail-greetingsfolder-support.txt uploaded by lmadsen (license 10) ........ 2011-01-19 23:29 +0000 [r302831] Paul Belanger * contrib/scripts/install_prereq: Add binutils-dev for BETTER_BACKTRACES 2011-01-19 23:06 +0000 [r302785-302789] Russell Bryant * main/manager.c, /: Merged revisions 302788 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r302788 | russell | 2011-01-19 17:06:14 -0600 (Wed, 19 Jan 2011) | 4 lines Turn a noisy verbose message into a debug message. This can drown your console if you're using the AMI over HTTP. ........ * main/manager.c: Resolve a memory leak with the manager interface is disabled. The intent of this check as it stands in previous versions of Asterisk was to check if there are any active sessions. If there were no sessions, then the function would return immediately and not bother with queueing up the manager event to be processed. Since the conversion of storing sessions in an astobj2 container, this check will always pass. I changed it to go back to checking what was intended. The side effect of this was that if the AMI is disabled, the manager event queue is populated anyway, but the code that runs to clear out the queue never runs. A producer with no consumer is a bad thing. Reported internally by kmorgan. 2011-01-19 21:29 +0000 [r302713] Richard Mudgett * /, main/features.c: Merged revisions 302693 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r302693 | rmudgett | 2011-01-19 15:25:41 -0600 (Wed, 19 Jan 2011) | 22 lines Merged revisions 302671 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r302671 | rmudgett | 2011-01-19 15:21:56 -0600 (Wed, 19 Jan 2011) | 15 lines DTMF transfer plays the wrong sounds for wrong number or other call failure. * Set the default for features.conf.sample xferfailsound option to "beeperr" as documented instead of "pbx-invalid" and corrected the use of it in DTMF blind transfer (#1). * Improved DTMF blind transfer handling of wrong numbers. Most of the concerns in this issue were taken care of by the patch for issue 17999: Issues with DTMF triggered attended transfers. (closes issue #18379) Reported by: gincantalupo Tested by: rmudgett ........ ................ 2011-01-19 21:23 +0000 [r302634-302680] Tilghman Lesher * include/asterisk/astdb.h, /: Merged revisions 302675 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r302675 | tilghman | 2011-01-19 15:22:45 -0600 (Wed, 19 Jan 2011) | 9 lines Merged revisions 302663 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r302663 | tilghman | 2011-01-19 15:20:28 -0600 (Wed, 19 Jan 2011) | 2 lines Add some API documentation ........ ................ * main/app.c, /: Merged revisions 302599 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r302599 | tilghman | 2011-01-19 14:13:24 -0600 (Wed, 19 Jan 2011) | 15 lines Kill zombies. When we ast_safe_fork() with a non-zero argument, we're expected to reap our own zombies. On a zero argument, however, the zombies are only reaped when there aren't any non-zero forked children alive. At other times, we accumulate zombies. This code is forward ported from res_agi in 1.4, so that forked children are always reaped, thus preventing an accumulation of zombie processes. (closes issue #18515) Reported by: ernied Patches: 20101221__issue18515.diff.txt uploaded by tilghman (license 14) Tested by: ernied ........ 2011-01-19 20:14 +0000 [r302600] Jason Parker * res/res_fax.c: Fix typo pointed out on asterisk-users list. 2011-01-19 19:03 +0000 [r302505-302555] Sean Bright * main/utils.c, /: Merged revisions 302554 via svnmerge from