[asterisk-commits] branch murf/bug_6264-trunk r8696 - in
/team/murf/bug_6264-trunk: ./ apps/ cdr...
asterisk-commits at lists.digium.com
asterisk-commits at lists.digium.com
Wed Jan 25 15:54:56 MST 2006
Author: murf
Date: Wed Jan 25 16:54:01 2006
New Revision: 8696
URL: http://svn.digium.com/view/asterisk?rev=8696&view=rev
Log:
Merged revisions 8232,8242,8276,8281,8320,8347,8394,8412,8414,8418 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2
........
r8232 | russell | 2006-01-18 21:17:45 -0700 (Wed, 18 Jan 2006) | 3 lines
fix a seg fault due to assuming that space gets allocatted on the stack in the
same order that we declare the variables (issue #6290)
........
r8242 | russell | 2006-01-18 21:56:48 -0700 (Wed, 18 Jan 2006) | 3 lines
fix Message-Account header to use the ip address if the fromdomain
isn't set (issue #6278)
........
r8276 | tilghman | 2006-01-19 12:14:37 -0700 (Thu, 19 Jan 2006) | 2 lines
Bug 6072 - Memory leaks in the expression parser
........
r8281 | oej | 2006-01-19 12:40:28 -0700 (Thu, 19 Jan 2006) | 2 lines
Enable "musicclass" setting for sip peers as per the config sample.
........
r8320 | mogorman | 2006-01-19 18:00:46 -0700 (Thu, 19 Jan 2006) | 3 lines
solved problem with delayreject and iax trunking
bug 4291
........
r8347 | russell | 2006-01-20 11:34:42 -0700 (Fri, 20 Jan 2006) | 2 lines
fix invalid value of prev_q (issue #6302)
........
r8394 | tilghman | 2006-01-21 11:29:39 -0700 (Sat, 21 Jan 2006) | 2 lines
Bug 5936 - AddQueueMember fails on realtime queue, if queue not yet loaded
........
r8412 | russell | 2006-01-21 16:17:06 -0700 (Sat, 21 Jan 2006) | 2 lines
prevent the possibility of writing outside of the available workspace (issue #6271)
........
r8414 | russell | 2006-01-21 16:43:14 -0700 (Sat, 21 Jan 2006) | 2 lines
temporarily revert substring fix pending the result of the discussion in issue #6271
........
r8418 | russell | 2006-01-21 19:05:41 -0700 (Sat, 21 Jan 2006) | 3 lines
add a modified fix to prevent writing outside of the provided workspace when
calculating a substring (issue #6271)
........
Added:
team/murf/bug_6264-trunk/doc/README.callingpres
- copied unchanged from r8687, trunk/doc/README.callingpres
Removed:
team/murf/bug_6264-trunk/ChangeLog
Modified:
team/murf/bug_6264-trunk/ (props changed)
team/murf/bug_6264-trunk/Makefile
team/murf/bug_6264-trunk/apps/Makefile
team/murf/bug_6264-trunk/apps/app_authenticate.c
team/murf/bug_6264-trunk/apps/app_chanspy.c
team/murf/bug_6264-trunk/apps/app_curl.c
team/murf/bug_6264-trunk/apps/app_db.c
team/murf/bug_6264-trunk/apps/app_dial.c
team/murf/bug_6264-trunk/apps/app_dictate.c
team/murf/bug_6264-trunk/apps/app_directory.c
team/murf/bug_6264-trunk/apps/app_disa.c
team/murf/bug_6264-trunk/apps/app_exec.c
team/murf/bug_6264-trunk/apps/app_externalivr.c
team/murf/bug_6264-trunk/apps/app_festival.c
team/murf/bug_6264-trunk/apps/app_hasnewvoicemail.c
team/murf/bug_6264-trunk/apps/app_image.c
team/murf/bug_6264-trunk/apps/app_macro.c
team/murf/bug_6264-trunk/apps/app_meetme.c
team/murf/bug_6264-trunk/apps/app_milliwatt.c
team/murf/bug_6264-trunk/apps/app_mixmonitor.c
team/murf/bug_6264-trunk/apps/app_osplookup.c
team/murf/bug_6264-trunk/apps/app_page.c
team/murf/bug_6264-trunk/apps/app_parkandannounce.c
team/murf/bug_6264-trunk/apps/app_playback.c
team/murf/bug_6264-trunk/apps/app_privacy.c
team/murf/bug_6264-trunk/apps/app_queue.c
team/murf/bug_6264-trunk/apps/app_random.c
team/murf/bug_6264-trunk/apps/app_read.c
team/murf/bug_6264-trunk/apps/app_readfile.c
team/murf/bug_6264-trunk/apps/app_record.c
team/murf/bug_6264-trunk/apps/app_sayunixtime.c
team/murf/bug_6264-trunk/apps/app_senddtmf.c
team/murf/bug_6264-trunk/apps/app_sendtext.c
team/murf/bug_6264-trunk/apps/app_setcallerid.c
team/murf/bug_6264-trunk/apps/app_skel.c
team/murf/bug_6264-trunk/apps/app_sms.c
team/murf/bug_6264-trunk/apps/app_sql_postgres.c
team/murf/bug_6264-trunk/apps/app_stack.c
team/murf/bug_6264-trunk/apps/app_talkdetect.c
team/murf/bug_6264-trunk/apps/app_transfer.c
team/murf/bug_6264-trunk/apps/app_url.c
team/murf/bug_6264-trunk/apps/app_userevent.c
team/murf/bug_6264-trunk/apps/app_verbose.c
team/murf/bug_6264-trunk/apps/app_voicemail.c
team/murf/bug_6264-trunk/apps/app_while.c
team/murf/bug_6264-trunk/apps/app_zapras.c
team/murf/bug_6264-trunk/ast_expr2.fl
team/murf/bug_6264-trunk/ast_expr2.y
team/murf/bug_6264-trunk/asterisk.c
team/murf/bug_6264-trunk/callerid.c
team/murf/bug_6264-trunk/cdr/cdr_pgsql.c
team/murf/bug_6264-trunk/channel.c
team/murf/bug_6264-trunk/channels/chan_agent.c
team/murf/bug_6264-trunk/channels/chan_alsa.c
team/murf/bug_6264-trunk/channels/chan_features.c
team/murf/bug_6264-trunk/channels/chan_iax2.c
team/murf/bug_6264-trunk/channels/chan_local.c
team/murf/bug_6264-trunk/channels/chan_mgcp.c
team/murf/bug_6264-trunk/channels/chan_sip.c
team/murf/bug_6264-trunk/channels/chan_zap.c
team/murf/bug_6264-trunk/codecs/codec_a_mu.c
team/murf/bug_6264-trunk/codecs/codec_adpcm.c
team/murf/bug_6264-trunk/codecs/codec_alaw.c
team/murf/bug_6264-trunk/codecs/codec_g723_1.c
team/murf/bug_6264-trunk/codecs/codec_g726.c
team/murf/bug_6264-trunk/codecs/codec_gsm.c
team/murf/bug_6264-trunk/codecs/codec_ilbc.c
team/murf/bug_6264-trunk/codecs/codec_lpc10.c
team/murf/bug_6264-trunk/codecs/codec_speex.c
team/murf/bug_6264-trunk/codecs/codec_ulaw.c
team/murf/bug_6264-trunk/codecs/gsm/Makefile
team/murf/bug_6264-trunk/config.c
team/murf/bug_6264-trunk/configs/alsa.conf.sample
team/murf/bug_6264-trunk/configs/queues.conf.sample
team/murf/bug_6264-trunk/configs/sip.conf.sample
team/murf/bug_6264-trunk/configs/zapata.conf.sample
team/murf/bug_6264-trunk/contrib/scripts/safe_asterisk
team/murf/bug_6264-trunk/devicestate.c
team/murf/bug_6264-trunk/doc/README.variables
team/murf/bug_6264-trunk/enum.c
team/murf/bug_6264-trunk/formats/format_pcm.c
team/murf/bug_6264-trunk/formats/format_pcm_alaw.c
team/murf/bug_6264-trunk/funcs/func_cdr.c
team/murf/bug_6264-trunk/funcs/func_cut.c
team/murf/bug_6264-trunk/funcs/func_db.c
team/murf/bug_6264-trunk/funcs/func_logic.c
team/murf/bug_6264-trunk/funcs/func_math.c
team/murf/bug_6264-trunk/funcs/func_md5.c
team/murf/bug_6264-trunk/funcs/func_odbc.c
team/murf/bug_6264-trunk/funcs/func_rand.c
team/murf/bug_6264-trunk/funcs/func_strings.c
team/murf/bug_6264-trunk/include/asterisk/astosp.h
team/murf/bug_6264-trunk/include/asterisk/channel.h
team/murf/bug_6264-trunk/include/asterisk/utils.h
team/murf/bug_6264-trunk/logger.c
team/murf/bug_6264-trunk/manager.c
team/murf/bug_6264-trunk/pbx.c
team/murf/bug_6264-trunk/res/res_agi.c
team/murf/bug_6264-trunk/res/res_crypto.c
team/murf/bug_6264-trunk/res/res_features.c
team/murf/bug_6264-trunk/res/res_indications.c
team/murf/bug_6264-trunk/res/res_monitor.c
team/murf/bug_6264-trunk/res/res_musiconhold.c
team/murf/bug_6264-trunk/res/res_osp.c
team/murf/bug_6264-trunk/rtp.c
team/murf/bug_6264-trunk/udptl.c
team/murf/bug_6264-trunk/utils/astman.c
Propchange: team/murf/bug_6264-trunk/
------------------------------------------------------------------------------
automerge = 1
Propchange: team/murf/bug_6264-trunk/
------------------------------------------------------------------------------
--- svnmerge-blocked (original)
+++ svnmerge-blocked Wed Jan 25 16:54:01 2006
@@ -1,1 +1,1 @@
-/branches/1.2:7490,7497,7517,7529,7546,7550,7552,7557,7580,7586,7595,7605,7641,7663,7706,7738,7771,7792,7812,7870-7871,7898-7900,7915,7960,7965,7970,7976,8047,8112
+/branches/1.2:7490,7497,7517,7529,7546,7550,7552,7557,7580,7586,7595,7605,7641,7663,7706,7738,7771,7792,7812,7870-7871,7898-7900,7915,7960,7965,7970,7976,8047,8112,8124,8134,8394,8412,8414,8418,8429,8433,8445,8562,8573,8600,8619,8666
Propchange: team/murf/bug_6264-trunk/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Wed Jan 25 16:54:01 2006
@@ -1,1 +1,1 @@
-/trunk:1-8227
+/trunk:1-8694
Modified: team/murf/bug_6264-trunk/Makefile
URL: http://svn.digium.com/view/asterisk/team/murf/bug_6264-trunk/Makefile?rev=8696&r1=8695&r2=8696&view=diff
==============================================================================
--- team/murf/bug_6264-trunk/Makefile (original)
+++ team/murf/bug_6264-trunk/Makefile Wed Jan 25 16:54:01 2006
@@ -106,7 +106,7 @@
# Detect the busy signal looking only at tone lengths
# For example if you have 3 beeps 100ms tone, 100ms silence separated by 500 ms of silence
BUSYDETECT+= #-DBUSYDETECT_TONEONLY
-# Enforce the detection of busy singal (get rid of false hangups)
+# Enforce the detection of busy signal (get rid of false hangups)
# Don't use together with -DBUSYDETECT_TONEONLY
BUSYDETECT+= #-DBUSYDETECT_COMPARE_TONE_AND_SILENCE
Modified: team/murf/bug_6264-trunk/apps/Makefile
URL: http://svn.digium.com/view/asterisk/team/murf/bug_6264-trunk/apps/Makefile?rev=8696&r1=8695&r2=8696&view=diff
==============================================================================
--- team/murf/bug_6264-trunk/apps/Makefile (original)
+++ team/murf/bug_6264-trunk/apps/Makefile Wed Jan 25 16:54:01 2006
@@ -96,7 +96,7 @@
$(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB} $(CURLLIBS)
app_sql_postgres.o: app_sql_postgres.c
- $(CC) -pipe -I/usr/local/pgsql/include $(CFLAGS) -c -o app_sql_postgres.o app_sql_postgres.c
+ $(CC) -pipe -I$(CROSS_COMPILE_TARGET)/usr/local/pgsql/include -I$(CROSS_COMPILE_TARGET)/usr/include/postgresql $(CFLAGS) -c -o app_sql_postgres.o app_sql_postgres.c
app_sql_postgres.so: app_sql_postgres.o
$(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB} -L/usr/local/pgsql/lib -lpq
Modified: team/murf/bug_6264-trunk/apps/app_authenticate.c
URL: http://svn.digium.com/view/asterisk/team/murf/bug_6264-trunk/apps/app_authenticate.c?rev=8696&r1=8695&r2=8696&view=diff
==============================================================================
--- team/murf/bug_6264-trunk/apps/app_authenticate.c (original)
+++ team/murf/bug_6264-trunk/apps/app_authenticate.c Wed Jan 25 16:54:01 2006
@@ -128,9 +128,7 @@
}
}
- argcopy = ast_strdupa(data);
- if (!argcopy) {
- ast_log(LOG_ERROR, "Out of memory!\n");
+ if (!(argcopy = ast_strdupa(data))) {
LOCAL_USER_REMOVE(u);
return -1;
}
Modified: team/murf/bug_6264-trunk/apps/app_chanspy.c
URL: http://svn.digium.com/view/asterisk/team/murf/bug_6264-trunk/apps/app_chanspy.c?rev=8696&r1=8695&r2=8696&view=diff
==============================================================================
--- team/murf/bug_6264-trunk/apps/app_chanspy.c (original)
+++ team/murf/bug_6264-trunk/apps/app_chanspy.c Wed Jan 25 16:54:01 2006
@@ -383,10 +383,8 @@
struct ast_flags flags;
signed char zero_volume = 0;
- if (!(args = ast_strdupa((char *)data))) {
- ast_log(LOG_ERROR, "Out of memory!\n");
+ if (!(args = ast_strdupa(data)))
return -1;
- }
LOCAL_USER_ADD(u);
Modified: team/murf/bug_6264-trunk/apps/app_curl.c
URL: http://svn.digium.com/view/asterisk/team/murf/bug_6264-trunk/apps/app_curl.c?rev=8696&r1=8695&r2=8696&view=diff
==============================================================================
--- team/murf/bug_6264-trunk/apps/app_curl.c (original)
+++ team/murf/bug_6264-trunk/apps/app_curl.c Wed Jan 25 16:54:01 2006
@@ -128,9 +128,7 @@
LOCAL_USER_ACF_ADD(u);
- info = ast_strdupa(data);
- if (!info) {
- ast_log(LOG_ERROR, "Out of memory\n");
+ if (!(info = ast_strdupa(data))) {
LOCAL_USER_REMOVE(u);
return buf;
}
Modified: team/murf/bug_6264-trunk/apps/app_db.c
URL: http://svn.digium.com/view/asterisk/team/murf/bug_6264-trunk/apps/app_db.c?rev=8696&r1=8695&r2=8696&view=diff
==============================================================================
--- team/murf/bug_6264-trunk/apps/app_db.c (original)
+++ team/murf/bug_6264-trunk/apps/app_db.c Wed Jan 25 16:54:01 2006
@@ -75,9 +75,7 @@
LOCAL_USER_ADD(u);
- argv = ast_strdupa(data);
- if (!argv) {
- ast_log(LOG_ERROR, "Memory allocation failed\n");
+ if (!(argv = ast_strdupa(data))) {
LOCAL_USER_REMOVE(u);
return 0;
}
@@ -121,9 +119,7 @@
LOCAL_USER_ADD(u);
- argv = ast_strdupa(data);
- if (!argv) {
- ast_log (LOG_ERROR, "Memory allocation failed\n");
+ if (!(argv = ast_strdupa(data))) {
LOCAL_USER_REMOVE(u);
return 0;
}
Modified: team/murf/bug_6264-trunk/apps/app_dial.c
URL: http://svn.digium.com/view/asterisk/team/murf/bug_6264-trunk/apps/app_dial.c?rev=8696&r1=8695&r2=8696&view=diff
==============================================================================
--- team/murf/bug_6264-trunk/apps/app_dial.c (original)
+++ team/murf/bug_6264-trunk/apps/app_dial.c Wed Jan 25 16:54:01 2006
@@ -657,6 +657,7 @@
ast_hangup(o->chan);
o->chan = NULL;
ast_clear_flag(o, DIAL_STILLGOING);
+ HANDLE_CAUSE(in->hangupcause, in);
}
}
o = o->next;
@@ -787,7 +788,6 @@
LOCAL_USER_ADD(u);
if (!(parse = ast_strdupa(data))) {
- ast_log(LOG_WARNING, "Memory allocation failure\n");
LOCAL_USER_REMOVE(u);
return -1;
}
@@ -1638,9 +1638,7 @@
LOCAL_USER_ADD(u);
- announce = ast_strdupa(data);
- if (!announce) {
- ast_log(LOG_ERROR, "Out of memory!\n");
+ if (!(announce = ast_strdupa(data))) {
LOCAL_USER_REMOVE(u);
return -1;
}
Modified: team/murf/bug_6264-trunk/apps/app_dictate.c
URL: http://svn.digium.com/view/asterisk/team/murf/bug_6264-trunk/apps/app_dictate.c?rev=8696&r1=8695&r2=8696&view=diff
==============================================================================
--- team/murf/bug_6264-trunk/apps/app_dictate.c (original)
+++ team/murf/bug_6264-trunk/apps/app_dictate.c Wed Jan 25 16:54:01 2006
@@ -110,11 +110,8 @@
snprintf(dftbase, sizeof(dftbase), "%s/dictate", ast_config_AST_SPOOL_DIR);
if (!ast_strlen_zero(data)) {
- parse = ast_strdupa(data);
- if (!parse) {
- ast_log(LOG_ERROR, "Out of memory!\n");
+ if (!(parse = ast_strdupa(data)))
return -1;
- }
AST_STANDARD_APP_ARGS(args, parse);
} else
args.argc = 0;
Modified: team/murf/bug_6264-trunk/apps/app_directory.c
URL: http://svn.digium.com/view/asterisk/team/murf/bug_6264-trunk/apps/app_directory.c?rev=8696&r1=8695&r2=8696&view=diff
==============================================================================
--- team/murf/bug_6264-trunk/apps/app_directory.c (original)
+++ team/murf/bug_6264-trunk/apps/app_directory.c Wed Jan 25 16:54:01 2006
@@ -431,10 +431,7 @@
LOCAL_USER_ADD(u);
- parse = ast_strdupa(data);
-
- if (!parse) {
- ast_log(LOG_ERROR, "Out of memory!\n");
+ if (!(parse = ast_strdupa(data))) {
LOCAL_USER_REMOVE(u);
return -1;
}
Modified: team/murf/bug_6264-trunk/apps/app_disa.c
URL: http://svn.digium.com/view/asterisk/team/murf/bug_6264-trunk/apps/app_disa.c?rev=8696&r1=8695&r2=8696&view=diff
==============================================================================
--- team/murf/bug_6264-trunk/apps/app_disa.c (original)
+++ team/murf/bug_6264-trunk/apps/app_disa.c Wed Jan 25 16:54:01 2006
@@ -161,9 +161,7 @@
ast_log(LOG_DEBUG, "Digittimeout: %d\n", digittimeout);
ast_log(LOG_DEBUG, "Responsetimeout: %d\n", firstdigittimeout);
- tmp = ast_strdupa(data);
- if (!tmp) {
- ast_log(LOG_ERROR, "Out of memory\n");
+ if (!(tmp = ast_strdupa(data))) {
LOCAL_USER_REMOVE(u);
return -1;
}
Modified: team/murf/bug_6264-trunk/apps/app_exec.c
URL: http://svn.digium.com/view/asterisk/team/murf/bug_6264-trunk/apps/app_exec.c?rev=8696&r1=8695&r2=8696&view=diff
==============================================================================
--- team/murf/bug_6264-trunk/apps/app_exec.c (original)
+++ team/murf/bug_6264-trunk/apps/app_exec.c Wed Jan 25 16:54:01 2006
@@ -73,8 +73,7 @@
/* Check and parse arguments */
if (data) {
- s = ast_strdupa((char *)data);
- if (s) {
+ if ((s = ast_strdupa(data))) {
appname = strsep(&s, "(");
if (s) {
endargs = strrchr(s, ')');
@@ -91,10 +90,8 @@
res = -1;
}
}
- } else {
- ast_log(LOG_ERROR, "Out of memory\n");
+ } else
res = -1;
- }
}
LOCAL_USER_REMOVE(u);
Modified: team/murf/bug_6264-trunk/apps/app_externalivr.c
URL: http://svn.digium.com/view/asterisk/team/murf/bug_6264-trunk/apps/app_externalivr.c?rev=8696&r1=8695&r2=8696&view=diff
==============================================================================
--- team/murf/bug_6264-trunk/apps/app_externalivr.c (original)
+++ team/murf/bug_6264-trunk/apps/app_externalivr.c Wed Jan 25 16:54:01 2006
@@ -271,9 +271,7 @@
goto exit;
}
- buf = ast_strdupa(data);
- if (!buf) {
- ast_log(LOG_ERROR, "Out of memory!\n");
+ if (!(buf = ast_strdupa(data))) {
LOCAL_USER_REMOVE(u);
return -1;
}
Modified: team/murf/bug_6264-trunk/apps/app_festival.c
URL: http://svn.digium.com/view/asterisk/team/murf/bug_6264-trunk/apps/app_festival.c?rev=8696&r1=8695&r2=8696&view=diff
==============================================================================
--- team/murf/bug_6264-trunk/apps/app_festival.c (original)
+++ team/murf/bug_6264-trunk/apps/app_festival.c Wed Jan 25 16:54:01 2006
@@ -339,9 +339,7 @@
festivalcommand = "(tts_textasterisk \"%s\" 'file)(quit)\n";
}
- data = ast_strdupa(vdata);
- if (!data) {
- ast_log(LOG_ERROR, "Out of memery\n");
+ if (!(data = ast_strdupa(vdata))) {
ast_config_destroy(cfg);
LOCAL_USER_REMOVE(u);
return -1;
Modified: team/murf/bug_6264-trunk/apps/app_hasnewvoicemail.c
URL: http://svn.digium.com/view/asterisk/team/murf/bug_6264-trunk/apps/app_hasnewvoicemail.c?rev=8696&r1=8695&r2=8696&view=diff
==============================================================================
--- team/murf/bug_6264-trunk/apps/app_hasnewvoicemail.c (original)
+++ team/murf/bug_6264-trunk/apps/app_hasnewvoicemail.c Wed Jan 25 16:54:01 2006
@@ -129,9 +129,7 @@
LOCAL_USER_ADD(u);
- input = ast_strdupa((char *)data);
- if (! input) {
- ast_log(LOG_ERROR, "Out of memory error\n");
+ if (!(input = ast_strdupa(data))) {
LOCAL_USER_REMOVE(u);
return -1;
}
@@ -193,9 +191,7 @@
buf[0] = '\0';
- argsstr = ast_strdupa(data);
- if (!argsstr) {
- ast_log(LOG_ERROR, "Out of memory");
+ if (!(argsstr = ast_strdupa(data))) {
LOCAL_USER_REMOVE(u);
return buf;
}
Modified: team/murf/bug_6264-trunk/apps/app_image.c
URL: http://svn.digium.com/view/asterisk/team/murf/bug_6264-trunk/apps/app_image.c?rev=8696&r1=8695&r2=8696&view=diff
==============================================================================
--- team/murf/bug_6264-trunk/apps/app_image.c (original)
+++ team/murf/bug_6264-trunk/apps/app_image.c Wed Jan 25 16:54:01 2006
@@ -79,7 +79,6 @@
LOCAL_USER_ADD(u);
if (!(parse = ast_strdupa(data))) {
- ast_log(LOG_WARNING, "Memory Error!\n");
LOCAL_USER_REMOVE(u);
return -1;
}
Modified: team/murf/bug_6264-trunk/apps/app_macro.c
URL: http://svn.digium.com/view/asterisk/team/murf/bug_6264-trunk/apps/app_macro.c?rev=8696&r1=8695&r2=8696&view=diff
==============================================================================
--- team/murf/bug_6264-trunk/apps/app_macro.c (original)
+++ team/murf/bug_6264-trunk/apps/app_macro.c Wed Jan 25 16:54:01 2006
@@ -307,9 +307,7 @@
LOCAL_USER_ADD(u);
- expr = ast_strdupa(data);
- if (!expr) {
- ast_log(LOG_ERROR, "Out of Memory!\n");
+ if (!(expr = ast_strdupa(data))) {
LOCAL_USER_REMOVE(u);
return -1;
}
Modified: team/murf/bug_6264-trunk/apps/app_meetme.c
URL: http://svn.digium.com/view/asterisk/team/murf/bug_6264-trunk/apps/app_meetme.c?rev=8696&r1=8695&r2=8696&view=diff
==============================================================================
--- team/murf/bug_6264-trunk/apps/app_meetme.c (original)
+++ team/murf/bug_6264-trunk/apps/app_meetme.c Wed Jan 25 16:54:01 2006
@@ -1778,11 +1778,8 @@
if (strcasecmp(var->name, "conf"))
continue;
- parse = ast_strdupa(var->value);
- if (!parse) {
- ast_log(LOG_ERROR, "Out of Memory!\n");
+ if (!(parse = ast_strdupa(var->value)))
return NULL;
- }
AST_STANDARD_APP_ARGS(args, parse);
if (!strcasecmp(args.confno, confno)) {
@@ -1817,7 +1814,7 @@
return cnf;
}
-/*--- count_exec: The MeetmeCount application */
+/*! \brief The MeetmeCount application */
static int count_exec(struct ast_channel *chan, void *data)
{
struct localuser *u;
@@ -1838,9 +1835,7 @@
LOCAL_USER_ADD(u);
- localdata = ast_strdupa(data);
- if (!localdata) {
- ast_log(LOG_ERROR, "Out of memory!\n");
+ if (!(localdata = ast_strdupa(data))) {
LOCAL_USER_REMOVE(u);
return -1;
}
@@ -1867,7 +1862,7 @@
return res;
}
-/*--- conf_exec: The meetme() application */
+/*! \brief The meetme() application */
static int conf_exec(struct ast_channel *chan, void *data)
{
int res=-1;
@@ -1987,8 +1982,6 @@
}
}
}
- } else {
- ast_log(LOG_ERROR, "Out of memory\n");
}
}
var = var->next;
@@ -2137,7 +2130,7 @@
return NULL;
}
-/*--- admin_exec: The MeetMeadmin application */
+/*! \brief The MeetMeadmin application */
/* MeetMeAdmin(confno, command, caller) */
static int admin_exec(struct ast_channel *chan, void *data) {
char *params;
Modified: team/murf/bug_6264-trunk/apps/app_milliwatt.c
URL: http://svn.digium.com/view/asterisk/team/murf/bug_6264-trunk/apps/app_milliwatt.c?rev=8696&r1=8695&r2=8696&view=diff
==============================================================================
--- team/murf/bug_6264-trunk/apps/app_milliwatt.c (original)
+++ team/murf/bug_6264-trunk/apps/app_milliwatt.c Wed Jan 25 16:54:01 2006
@@ -72,30 +72,29 @@
static int milliwatt_generate(struct ast_channel *chan, void *data, int len, int samples)
{
struct ast_frame wf;
- unsigned char waste[AST_FRIENDLY_OFFSET];
- unsigned char buf[640];
+ unsigned char buf[AST_FRIENDLY_OFFSET + 640];
int i,*indexp = (int *) data;
- if (len > sizeof(buf))
+ if (len + AST_FRIENDLY_OFFSET > sizeof(buf))
{
- ast_log(LOG_WARNING,"Only doing %d bytes (%d bytes requested)\n",(int)sizeof(buf),len);
- len = sizeof(buf);
+ ast_log(LOG_WARNING,"Only doing %d bytes (%d bytes requested)\n",(int)(sizeof(buf) - AST_FRIENDLY_OFFSET),len);
+ len = sizeof(buf) - AST_FRIENDLY_OFFSET;
}
- waste[0] = 0; /* make compiler happy */
wf.frametype = AST_FRAME_VOICE;
wf.subclass = AST_FORMAT_ULAW;
wf.offset = AST_FRIENDLY_OFFSET;
wf.mallocd = 0;
- wf.data = buf;
+ wf.data = buf + AST_FRIENDLY_OFFSET;
wf.datalen = len;
wf.samples = wf.datalen;
wf.src = "app_milliwatt";
wf.delivery.tv_sec = 0;
wf.delivery.tv_usec = 0;
+ wf.prev = wf.next = NULL;
/* create a buffer containing the digital milliwatt pattern */
for(i = 0; i < len; i++)
{
- buf[i] = digital_milliwatt[(*indexp)++];
+ buf[AST_FRIENDLY_OFFSET + i] = digital_milliwatt[(*indexp)++];
*indexp &= 7;
}
if (ast_write(chan,&wf) < 0)
Modified: team/murf/bug_6264-trunk/apps/app_mixmonitor.c
URL: http://svn.digium.com/view/asterisk/team/murf/bug_6264-trunk/apps/app_mixmonitor.c?rev=8696&r1=8695&r2=8696&view=diff
==============================================================================
--- team/murf/bug_6264-trunk/apps/app_mixmonitor.c (original)
+++ team/murf/bug_6264-trunk/apps/app_mixmonitor.c Wed Jan 25 16:54:01 2006
@@ -334,7 +334,6 @@
LOCAL_USER_ADD(u);
if (!(parse = ast_strdupa(data))) {
- ast_log(LOG_WARNING, "Memory Error!\n");
LOCAL_USER_REMOVE(u);
return -1;
}
Modified: team/murf/bug_6264-trunk/apps/app_osplookup.c
URL: http://svn.digium.com/view/asterisk/team/murf/bug_6264-trunk/apps/app_osplookup.c?rev=8696&r1=8695&r2=8696&view=diff
==============================================================================
--- team/murf/bug_6264-trunk/apps/app_osplookup.c (original)
+++ team/murf/bug_6264-trunk/apps/app_osplookup.c Wed Jan 25 16:54:01 2006
@@ -138,9 +138,7 @@
LOCAL_USER_ADD(u);
- temp = ast_strdupa(data);
- if (!temp) {
- ast_log(LOG_ERROR, "Out of memory!\n");
+ if (!(temp = ast_strdupa(data))) {
LOCAL_USER_REMOVE(u);
return -1;
}
@@ -201,9 +199,7 @@
LOCAL_USER_ADD(u);
- temp = ast_strdupa(data);
- if (!temp) {
- ast_log(LOG_ERROR, "Out of memory!\n");
+ if (!(temp = ast_strdupa(data))) {
LOCAL_USER_REMOVE(u);
return -1;
}
@@ -275,9 +271,7 @@
LOCAL_USER_ADD(u);
- temp = ast_strdupa(data);
- if (!temp) {
- ast_log(LOG_ERROR, "Out of memory!\n");
+ if (!(temp = ast_strdupa(data))) {
LOCAL_USER_REMOVE(u);
return -1;
}
Modified: team/murf/bug_6264-trunk/apps/app_page.c
URL: http://svn.digium.com/view/asterisk/team/murf/bug_6264-trunk/apps/app_page.c?rev=8696&r1=8695&r2=8696&view=diff
==============================================================================
--- team/murf/bug_6264-trunk/apps/app_page.c (original)
+++ team/murf/bug_6264-trunk/apps/app_page.c Wed Jan 25 16:54:01 2006
@@ -163,9 +163,7 @@
return -1;
};
- options = ast_strdupa(data);
- if (!options) {
- ast_log(LOG_ERROR, "Out of memory\n");
+ if (!(options = ast_strdupa(data))) {
LOCAL_USER_REMOVE(u);
return -1;
}
Modified: team/murf/bug_6264-trunk/apps/app_parkandannounce.c
URL: http://svn.digium.com/view/asterisk/team/murf/bug_6264-trunk/apps/app_parkandannounce.c?rev=8696&r1=8695&r2=8696&view=diff
==============================================================================
--- team/murf/bug_6264-trunk/apps/app_parkandannounce.c (original)
+++ team/murf/bug_6264-trunk/apps/app_parkandannounce.c Wed Jan 25 16:54:01 2006
@@ -59,12 +59,21 @@
static char *descrip =
" ParkAndAnnounce(announce:template|timeout|dial|[return_context]):\n"
-"Park a call into the parkinglot and announce the call over the console.\n"
-"announce template: colon separated list of files to announce, the word PARKED\n"
-" will be replaced by a say_digits of the ext the call is parked in\n"
-"timeout: time in seconds before the call returns into the return context.\n"
-"dial: The app_dial style resource to call to make the announcement. Console/dsp calls the console.\n"
-"return_context: the goto style label to jump the call back into after timeout. default=prio+1\n";
+"Park a call into the parkinglot and announce the call to another channel.\n"
+"\n"
+"announce template: Colon-separated list of files to announce. The word PARKED\n"
+" will be replaced by a say_digits of the extension in which\n"
+" the call is parked.\n"
+"timeout: Time in seconds before the call returns into the return\n"
+" context.\n"
+"dial: The app_dial style resource to call to make the\n"
+" announcement. Console/dsp calls the console.\n"
+"return_context: The goto-style label to jump the call back into after\n"
+" timeout. Default <priority+1>.\n"
+"\n"
+"The variable ${PARKEDAT} will contain the parking extension into which the\n"
+"call was placed. Use with the Local channel to allow the dialplan to make\n"
+"use of this information.\n";
STANDARD_LOCAL_USER;
@@ -79,6 +88,7 @@
char *working, *context, *exten, *priority, *dial, *dialtech, *dialstr;
char *template, *tpl_working, *tpl_current;
char *tmp[100];
+ char buf[13];
int looptemp=0,i=0;
char *s,*orig_s;
@@ -183,8 +193,10 @@
/* Now place the call to the extention */
+ snprintf(buf, sizeof(buf), "%d", lot);
memset(&oh, 0, sizeof(oh));
oh.parent_channel = chan;
+ oh.vars = ast_variable_new("_PARKEDAT", buf);
dchan = __ast_request_and_dial(dialtech, AST_FORMAT_SLINEAR, dialstr,30000, &outstate, chan->cid.cid_num, chan->cid.cid_name, &oh);
if(dchan) {
Modified: team/murf/bug_6264-trunk/apps/app_playback.c
URL: http://svn.digium.com/view/asterisk/team/murf/bug_6264-trunk/apps/app_playback.c?rev=8696&r1=8695&r2=8696&view=diff
==============================================================================
--- team/murf/bug_6264-trunk/apps/app_playback.c (original)
+++ team/murf/bug_6264-trunk/apps/app_playback.c Wed Jan 25 16:54:01 2006
@@ -89,11 +89,8 @@
return -1;
}
- tmp = ast_strdupa(data);
- if (!tmp) {
- ast_log(LOG_ERROR, "Out of memory!\n");
+ if (!(tmp = ast_strdupa(data)))
return -1;
- }
LOCAL_USER_ADD(u);
AST_STANDARD_APP_ARGS(args, tmp);
Modified: team/murf/bug_6264-trunk/apps/app_privacy.c
URL: http://svn.digium.com/view/asterisk/team/murf/bug_6264-trunk/apps/app_privacy.c?rev=8696&r1=8695&r2=8696&view=diff
==============================================================================
--- team/murf/bug_6264-trunk/apps/app_privacy.c (original)
+++ team/murf/bug_6264-trunk/apps/app_privacy.c Wed Jan 25 16:54:01 2006
@@ -117,9 +117,7 @@
if (!ast_strlen_zero((char *)data))
{
- parse = ast_strdupa(data);
- if (!parse) {
- ast_log(LOG_ERROR, "Out of memory!\n");
+ if (!(parse = ast_strdupa(data))) {
LOCAL_USER_REMOVE(u);
return -1;
}
Modified: team/murf/bug_6264-trunk/apps/app_queue.c
URL: http://svn.digium.com/view/asterisk/team/murf/bug_6264-trunk/apps/app_queue.c?rev=8696&r1=8695&r2=8696&view=diff
==============================================================================
--- team/murf/bug_6264-trunk/apps/app_queue.c (original)
+++ team/murf/bug_6264-trunk/apps/app_queue.c Wed Jan 25 16:54:01 2006
@@ -367,11 +367,10 @@
struct member *members; /*!< Head of the list of members */
struct queue_ent *head; /*!< Head of the list of callers */
- struct ast_call_queue *next; /*!< Next call queue */
+ AST_LIST_ENTRY(ast_call_queue) list; /*!< Next call queue */
};
-static struct ast_call_queue *queues = NULL;
-AST_MUTEX_DEFINE_STATIC(qlock);
+static AST_LIST_HEAD_STATIC(queues, ast_call_queue);
static int set_member_paused(char *queuename, char *interface, int paused);
@@ -481,8 +480,8 @@
}
if (option_debug)
ast_log(LOG_DEBUG, "Device '%s/%s' changed to state '%d' (%s)\n", technology, loc, sc->state, devstate2str(sc->state));
- ast_mutex_lock(&qlock);
- for (q = queues; q; q = q->next) {
+ AST_LIST_LOCK(&queues);
+ AST_LIST_TRAVERSE(&queues, q, list) {
ast_mutex_lock(&q->lock);
cur = q->members;
while(cur) {
@@ -508,7 +507,7 @@
}
ast_mutex_unlock(&q->lock);
}
- ast_mutex_unlock(&qlock);
+ AST_LIST_UNLOCK(&queues);
free(sc);
return NULL;
}
@@ -788,29 +787,48 @@
}
}
+static void free_members(struct ast_call_queue *q, int all)
+{
+ /* Free non-dynamic members */
+ struct member *curm, *next, *prev = NULL;
+
+ for (curm = q->members; curm; curm = next) {
+ next = curm->next;
+ if (all || !curm->dynamic) {
+ if (prev)
+ prev->next = next;
+ else
+ q->members = next;
+ free(curm);
+ } else
+ prev = curm;
+ }
+}
+
+static void destroy_queue(struct ast_call_queue *q)
+{
+ free_members(q, 1);
+ ast_mutex_destroy(&q->lock);
+ free(q);
+}
/*!\brief Reload a single queue via realtime.
\return Return the queue, or NULL if it doesn't exist.
- \note Should be called with the global qlock locked.
- When found, the queue is returned with q->lock locked. */
+ \note Should be called with the global qlock locked. */
static struct ast_call_queue *find_queue_by_name_rt(const char *queuename, struct ast_variable *queue_vars, struct ast_config *member_config)
{
struct ast_variable *v;
- struct ast_call_queue *q, *prev_q;
+ struct ast_call_queue *q;
struct member *m, *prev_m, *next_m;
char *interface;
char *tmp, *tmp_name;
char tmpbuf[64]; /* Must be longer than the longest queue param name. */
/* Find the queue in the in-core list (we will create a new one if not found). */
- q = queues;
- prev_q = NULL;
- while (q) {
+ AST_LIST_TRAVERSE(&queues, q, list) {
if (!strcasecmp(q->name, queuename)) {
break;
}
- q = q->next;
- prev_q = q;
}
/* Static queues override realtime. */
@@ -821,6 +839,7 @@
ast_mutex_unlock(&q->lock);
return NULL;
} else {
+ ast_mutex_unlock(&q->lock);
return q;
}
}
@@ -841,13 +860,9 @@
/* Delete if unused (else will be deleted when last caller leaves). */
if (!q->count) {
/* Delete. */
- if (!prev_q) {
- queues = q->next;
- } else {
- prev_q->next = q->next;
- }
+ AST_LIST_REMOVE(&queues, q, list);
ast_mutex_unlock(&q->lock);
- free(q);
+ destroy_queue(q);
} else
ast_mutex_unlock(&q->lock);
}
@@ -861,8 +876,7 @@
ast_mutex_lock(&q->lock);
clear_queue(q);
q->realtime = 1;
- q->next = queues;
- queues = q;
+ AST_LIST_INSERT_HEAD(&queues, q, list);
}
init_queue(q); /* Ensure defaults for all parameters not set explicitly. */
@@ -914,13 +928,60 @@
m = next_m;
}
+ ast_mutex_unlock(&q->lock);
+
return q;
}
-static int join_queue(char *queuename, struct queue_ent *qe, enum queue_result *reason)
+static struct ast_call_queue *load_realtime_queue(char *queuename)
{
struct ast_variable *queue_vars = NULL;
struct ast_config *member_config = NULL;
+ struct ast_call_queue *q;
+
+ /* Find the queue in the in-core list first. */
+ AST_LIST_LOCK(&queues);
+ AST_LIST_TRAVERSE(&queues, q, list) {
+ if (!strcasecmp(q->name, queuename)) {
+ break;
+ }
+ }
+ AST_LIST_UNLOCK(&queues);
+
+ if (!q) {
+ /*! \note Load from realtime before taking the global qlock, to avoid blocking all
+ queue operations while waiting for the DB.
+
+ This will be two separate database transactions, so we might
+ see queue parameters as they were before another process
+ changed the queue and member list as it was after the change.
+ Thus we might see an empty member list when a queue is
+ deleted. In practise, this is unlikely to cause a problem. */
+
+ queue_vars = ast_load_realtime("queues", "name", queuename, NULL);
+ if (queue_vars) {
+ member_config = ast_load_realtime_multientry("queue_members", "interface LIKE", "%", "queue_name", queuename, NULL);
+ if (!member_config) {
+ ast_log(LOG_ERROR, "no queue_members defined in your config (extconfig.conf).\n");
+ return NULL;
+ }
+ }
+
+ AST_LIST_LOCK(&queues);
+
+ q = find_queue_by_name_rt(queuename, queue_vars, member_config);
+ if (member_config)
+ ast_config_destroy(member_config);
+ if (queue_vars)
+ ast_variables_destroy(queue_vars);
+
+ AST_LIST_UNLOCK(&queues);
+ }
+ return q;
+}
+
+static int join_queue(char *queuename, struct queue_ent *qe, enum queue_result *reason)
+{
struct ast_call_queue *q;
struct queue_ent *cur, *prev = NULL;
int res = -1;
@@ -928,35 +989,12 @@
int inserted = 0;
enum queue_member_status stat;
- /*! \note Load from realtime before taking the global qlock, to avoid blocking all
- queue operations while waiting for the DB.
-
- This will be two separate database transactions, so we might
- see queue parameters as they were before another process
- changed the queue and member list as it was after the change.
- Thus we might see an empty member list when a queue is
- deleted. In practise, this is unlikely to cause a problem. */
- queue_vars = ast_load_realtime("queues", "name", queuename, NULL);
- if (queue_vars) {
- member_config = ast_load_realtime_multientry("queue_members", "interface LIKE", "%", "queue_name", queuename, NULL);
- if (!member_config) {
- ast_log(LOG_ERROR, "no queue_members defined in your config (extconfig.conf).\n");
- return res;
- }
- }
-
- ast_mutex_lock(&qlock);
- q = find_queue_by_name_rt(queuename, queue_vars, member_config);
- /* Note: If found, find_queue_by_name_rt() returns with q->lock locked. */
- if(member_config)
- ast_config_destroy(member_config);
- if(queue_vars)
- ast_variables_destroy(queue_vars);
-
- if (!q) {
- ast_mutex_unlock(&qlock);
+ q = load_realtime_queue(queuename);
+ if (!q)
return res;
- }
+
+ AST_LIST_LOCK(&queues);
+ ast_mutex_lock(&q->lock);
/* This is our one */
stat = get_member_status(q, qe->max_penalty);
@@ -1004,50 +1042,8 @@
#endif
}
ast_mutex_unlock(&q->lock);
- ast_mutex_unlock(&qlock);
+ AST_LIST_UNLOCK(&queues);
return res;
-}
-
-static void free_members(struct ast_call_queue *q, int all)
-{
- /* Free non-dynamic members */
- struct member *curm, *next, *prev;
-
- curm = q->members;
- prev = NULL;
- while(curm) {
- next = curm->next;
- if (all || !curm->dynamic) {
- if (prev)
- prev->next = next;
- else
- q->members = next;
- free(curm);
- } else
- prev = curm;
- curm = next;
- }
-}
-
-static void destroy_queue(struct ast_call_queue *q)
-{
- struct ast_call_queue *cur, *prev = NULL;
-
- ast_mutex_lock(&qlock);
- for (cur = queues; cur; cur = cur->next) {
- if (cur == q) {
- if (prev)
- prev->next = cur->next;
- else
- queues = cur->next;
- } else {
- prev = cur;
- }
- }
- ast_mutex_unlock(&qlock);
- free_members(q, 1);
- ast_mutex_destroy(&q->lock);
- free(q);
}
static int play_file(struct ast_channel *chan, char *filename)
@@ -1257,6 +1253,9 @@
ast_mutex_unlock(&q->lock);
if (q->dead && !q->count) {
/* It's dead and nobody is in it, so kill it */
+ AST_LIST_LOCK(&queues);
+ AST_LIST_REMOVE(&queues, q, list);
+ AST_LIST_UNLOCK(&queues);
destroy_queue(q);
}
}
@@ -1331,7 +1330,7 @@
/* &qlock and &rq->lock already set by try_calling()
* to solve deadlock */
- for (q = queues; q; q = q->next) {
+ AST_LIST_TRAVERSE(&queues, q, list) {
if (q == rq) /* don't check myself, could deadlock */
continue;
ast_mutex_lock(&q->lock);
@@ -2092,7 +2091,7 @@
/* Hold the lock while we setup the outgoing calls */
if (use_weight)
- ast_mutex_lock(&qlock);
+ AST_LIST_LOCK(&queues);
ast_mutex_lock(&qe->parent->lock);
if (option_debug)
ast_log(LOG_DEBUG, "%s is trying to call a queue member.\n",
@@ -2108,7 +2107,7 @@
if (!(tmp = ast_calloc(1, sizeof(*tmp)))) {
ast_mutex_unlock(&qe->parent->lock);
if (use_weight)
- ast_mutex_unlock(&qlock);
+ AST_LIST_UNLOCK(&queues);
goto out;
}
tmp->stillgoing = -1;
@@ -2155,7 +2154,7 @@
ring_one(qe, outgoing, &numbusies);
ast_mutex_unlock(&qe->parent->lock);
if (use_weight)
- ast_mutex_unlock(&qlock);
+ AST_LIST_UNLOCK(&queues);
lpeer = wait_for_answer(qe, outgoing, &to, &digit, numbusies, ast_test_flag(&(bridge_config.features_caller), AST_FEATURE_DISCONNECT));
ast_mutex_lock(&qe->parent->lock);
if (qe->parent->strategy == QUEUE_STRATEGY_RRMEMORY) {
@@ -2410,8 +2409,8 @@
struct member *last_member, *look;
int res = RES_NOSUCHQUEUE;
- ast_mutex_lock(&qlock);
- for (q = queues ; q ; q = q->next) {
+ AST_LIST_LOCK(&queues);
+ AST_LIST_TRAVERSE(&queues, q, list) {
ast_mutex_lock(&q->lock);
if (!strcmp(q->name, queuename)) {
if ((last_member = interface_exists(q, interface))) {
@@ -2445,7 +2444,7 @@
}
ast_mutex_unlock(&q->lock);
}
- ast_mutex_unlock(&qlock);
+ AST_LIST_UNLOCK(&queues);
return res;
}
@@ -2455,45 +2454,46 @@
struct member *new_member;
int res = RES_NOSUCHQUEUE;
- ast_mutex_lock(&qlock);
- for (q = queues ; q ; q = q->next) {
+ /* \note Ensure the appropriate realtime queue is loaded. Note that this
+ * short-circuits if the queue is already in memory. */
+ q = load_realtime_queue(queuename);
+
+ AST_LIST_LOCK(&queues);
+
+ if (q) {
ast_mutex_lock(&q->lock);
- if (!strcmp(q->name, queuename)) {
- if (interface_exists(q, interface) == NULL) {
- new_member = create_queue_member(interface, penalty, paused);
-
- if (new_member != NULL) {
- new_member->dynamic = 1;
- new_member->next = q->members;
- q->members = new_member;
- manager_event(EVENT_FLAG_AGENT, "QueueMemberAdded",
- "Queue: %s\r\n"
- "Location: %s\r\n"
- "Membership: %s\r\n"
- "Penalty: %d\r\n"
- "CallsTaken: %d\r\n"
- "LastCall: %d\r\n"
- "Status: %d\r\n"
- "Paused: %d\r\n",
- q->name, new_member->interface, new_member->dynamic ? "dynamic" : "static",
- new_member->penalty, new_member->calls, (int)new_member->lastcall, new_member->status, new_member->paused);
[... 12483 lines stripped ...]
More information about the asterisk-commits
mailing list