[asterisk-commits] branch oej/astum r8981 - in /team/oej/astum: ./
apps/ channels/ configs/ func...
asterisk-commits at lists.digium.com
asterisk-commits at lists.digium.com
Tue Jan 31 08:14:42 MST 2006
Author: oej
Date: Tue Jan 31 09:14:27 2006
New Revision: 8981
URL: http://svn.digium.com/view/asterisk?rev=8981&view=rev
Log:
Merged revisions 8687,8697,8711-8712,8727-8728,8730-8731,8741-8742,8750,8757,8768,8778-8779,8786,8799,8809,8823,8825-8826,8834-8835,8850-8852,8877,8883,8896,8906,8919,8925-8926,8932,8938,8948-8949,8961,8976 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk
................
r8687 | russell | 2006-01-25 21:02:12 +0100 (Wed, 25 Jan 2006) | 2 lines
use arg parsing macros for WaitExten and Background (issue #6185)
................
r8697 | kpfleming | 2006-01-26 05:00:05 +0100 (Thu, 26 Jan 2006) | 4 lines
string field manager improvements:
use multiple memory blocks, instead of realloc(), ensuring that field pointers will never become invalid or change
don't run vs(n)printf twice when doing a field build unless required
................
r8711 | oej | 2006-01-26 15:44:23 +0100 (Thu, 26 Jan 2006) | 10 lines
Merged revisions 8710 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2
........
r8710 | oej | 2006-01-26 15:39:36 +0100 (Thu, 26 Jan 2006) | 2 lines
Issue 5898: Registrations does not get deleted if there's an active SIP dialog
........
................
r8712 | oej | 2006-01-26 15:59:33 +0100 (Thu, 26 Jan 2006) | 2 lines
Add some debugging output when reloading, to be able to follow progress at high debug levels
................
r8727 | russell | 2006-01-26 20:33:27 +0100 (Thu, 26 Jan 2006) | 2 lines
store conference list using linked list macros (issue #6327)
................
r8728 | oej | 2006-01-26 20:38:11 +0100 (Thu, 26 Jan 2006) | 4 lines
Code clean up, inspired by rizzo's comments in issue 5978.
- Don't check for ignore if ignore is always negative
- Add comments to explain what's going on
................
r8730 | russell | 2006-01-26 20:44:16 +0100 (Thu, 26 Jan 2006) | 10 lines
Merged revisions 8729 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2
........
r8729 | russell | 2006-01-26 14:42:35 -0500 (Thu, 26 Jan 2006) | 2 lines
fix problem with dtmf on e&m (issue #6364)
........
................
r8731 | oej | 2006-01-26 20:47:40 +0100 (Thu, 26 Jan 2006) | 2 lines
Issue #5954 revisited. Thanks rizzo.
................
r8741 | oej | 2006-01-26 21:08:53 +0100 (Thu, 26 Jan 2006) | 2 lines
Formatting fixes, speling eror fiksd ;-)
................
r8742 | russell | 2006-01-26 21:28:52 +0100 (Thu, 26 Jan 2006) | 2 lines
don't redefine the localuser struct for additional use specific to the module (issue #6216)
................
r8750 | oej | 2006-01-26 22:36:41 +0100 (Thu, 26 Jan 2006) | 9 lines
- Move two functions to static that wasn't for some reason
- Add doxygen comments
- Remove un-needed assignment at declaration of variable
- Formatting fixes (whitespace)
- Add optin_debug in front of complex debugging output
- Move forward declarations of functions to top of file
- Fix error message for bad allocation in sip registry
(Note: Review to line 6050 in this too large file)
................
r8757 | russell | 2006-01-27 01:31:05 +0100 (Fri, 27 Jan 2006) | 2 lines
don't re-define the localuser struct for custom use inside the module (issue #6216)
................
r8768 | tilghman | 2006-01-27 02:04:03 +0100 (Fri, 27 Jan 2006) | 11 lines
Merged revisions 8758 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2
........
r8758 | tilghman | 2006-01-26 18:52:12 -0600 (Thu, 26 Jan 2006) | 2 lines
Bug 6072 - Revisions to the source bison and flex files don't auto-regenerate these files
........
................
r8778 | russell | 2006-01-27 06:33:20 +0100 (Fri, 27 Jan 2006) | 2 lines
add /usr/local/lib to SOLINK (issue #6323)
................
r8779 | russell | 2006-01-27 06:39:20 +0100 (Fri, 27 Jan 2006) | 2 lines
remove some more redundant flags
................
r8786 | oej | 2006-01-27 09:07:43 +0100 (Fri, 27 Jan 2006) | 10 lines
Merged revisions 8785 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2
........
r8785 | oej | 2006-01-27 09:02:16 +0100 (Fri, 27 Jan 2006) | 2 lines
Issue 6362 - Register without Contact: and Expires: fails (reporter: op)
........
................
r8799 | mattf | 2006-01-28 00:55:37 +0100 (Sat, 28 Jan 2006) | 2 lines
Add rdnis rx/tx support to chan_iax2 (#6348)
................
r8809 | oej | 2006-01-28 14:54:25 +0100 (Sat, 28 Jan 2006) | 2 lines
Blocking revision 8808 from trunk. It's already fixed in trunk.
................
r8823 | oej | 2006-01-28 16:02:29 +0100 (Sat, 28 Jan 2006) | 2 lines
Simplify code for building Call ID's, create generic random string function
................
r8825 | oej | 2006-01-28 16:28:58 +0100 (Sat, 28 Jan 2006) | 7 lines
- Moving forward declarations to one block
- Moving global variables to one block
- Moving global networking variables to one block
- Small whitespace changes
- Renaming a few more global channel settings to global_ for clarity
(No functional changes)
................
r8826 | oej | 2006-01-28 16:34:27 +0100 (Sat, 28 Jan 2006) | 2 lines
Doxygen updates
................
r8834 | oej | 2006-01-28 18:00:05 +0100 (Sat, 28 Jan 2006) | 3 lines
Change booleans to TRUE/FALSE.
(At some point we should implement these as enums to simplify debugging)
................
r8835 | oej | 2006-01-28 18:17:37 +0100 (Sat, 28 Jan 2006) | 3 lines
- Remove unused "resetinvite" variable
- Use TRUE/FALSE for fastrestart
................
r8850 | kpfleming | 2006-01-29 06:07:04 +0100 (Sun, 29 Jan 2006) | 5 lines
make ast_read() able to handle channel read()/exception() methods that return a chain of frames
cleanup code in ast_read()
add AST_FRAME_DTMF_BEGIN and AST_FRAME_DTMF_END so that variable-length DTMF events can be supported
teach chan_zap to send DTMF_BEGIN and DTMF_END when appropriate
................
r8851 | kpfleming | 2006-01-29 06:15:24 +0100 (Sun, 29 Jan 2006) | 3 lines
add channel-driver callbacks for variable length DTMF
teach ast_write() to call those new callbacks
................
r8852 | kpfleming | 2006-01-29 06:29:29 +0100 (Sun, 29 Jan 2006) | 2 lines
don't use tone generation for DTMF if the channel driver only supports begin/end (will need more work to translate non-variable events into begin/end events)
................
r8877 | markster | 2006-01-30 04:13:33 +0100 (Mon, 30 Jan 2006) | 2 lines
Merge Rizzo's waitfor update (bug #4584)
................
r8883 | tilghman | 2006-01-30 07:07:05 +0100 (Mon, 30 Jan 2006) | 2 lines
Bug 6378 - deprecate CHECK_MD5 function
................
r8896 | oej | 2006-01-30 15:12:39 +0100 (Mon, 30 Jan 2006) | 2 lines
Document installation changes for BSD users.
................
r8906 | kpfleming | 2006-01-30 18:09:55 +0100 (Mon, 30 Jan 2006) | 10 lines
Merged revisions 8905 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2
........
r8905 | kpfleming | 2006-01-30 11:08:28 -0600 (Mon, 30 Jan 2006) | 2 lines
disable buggy PRI user-user code until it can be fixed
........
................
r8919 | oej | 2006-01-30 19:51:02 +0100 (Mon, 30 Jan 2006) | 6 lines
Issue #5793
- simplification of check_auth
- constifications
- whitespace changes
Rizzo's patch with some changes
................
r8925 | oej | 2006-01-30 20:09:08 +0100 (Mon, 30 Jan 2006) | 3 lines
Issue #6035 - Don't send 403 on bad auth (correcting one of my old mistakes...) Reported by maik.
Patch inspired by, but not the patch in the bug tracker.
................
r8926 | oej | 2006-01-30 20:50:39 +0100 (Mon, 30 Jan 2006) | 2 lines
Issue 5892: Set a minimum T1 timer for calls. Reporter: twisted
................
r8932 | oej | 2006-01-30 21:36:38 +0100 (Mon, 30 Jan 2006) | 8 lines
- Doxygen and comments updates
- Moving structure declarations to top of file with the rest
- Adding some forward declarations for RTP interface functions
(All these changes to position in file are in preparation for splitting chan_sip up
into several files at some point in the future)
................
r8938 | mogorman | 2006-01-30 22:16:43 +0100 (Mon, 30 Jan 2006) | 3 lines
reverting blocks 9 and 10 from revision 7547
fixes bug 6080
................
r8948 | kpfleming | 2006-01-31 01:17:43 +0100 (Tue, 31 Jan 2006) | 2 lines
increment for recent ast_channel change
................
r8949 | russell | 2006-01-31 01:24:34 +0100 (Tue, 31 Jan 2006) | 3 lines
add a note to hopefully decrease the chance that someone forgets to increment
.cleancount after changing the ast_channel structure
................
r8961 | kpfleming | 2006-01-31 04:45:09 +0100 (Tue, 31 Jan 2006) | 2 lines
Yes Virginia, Zaptel does support native ALAW
................
r8976 | oej | 2006-01-31 15:30:09 +0100 (Tue, 31 Jan 2006) | 3 lines
- Change "prefs" to "default_prefs" and move declaration to "default" group
- Add doxygen comments
................
Modified:
team/oej/astum/ (props changed)
team/oej/astum/.cleancount
team/oej/astum/Makefile
team/oej/astum/UPGRADE.txt
team/oej/astum/apps/app_dial.c
team/oej/astum/apps/app_externalivr.c
team/oej/astum/apps/app_meetme.c
team/oej/astum/ast_expr2.c
team/oej/astum/ast_expr2.h
team/oej/astum/ast_expr2f.c
team/oej/astum/channel.c
team/oej/astum/channels/chan_agent.c
team/oej/astum/channels/chan_features.c
team/oej/astum/channels/chan_iax2.c
team/oej/astum/channels/chan_sip.c
team/oej/astum/channels/chan_zap.c
team/oej/astum/configs/sip.conf.sample
team/oej/astum/funcs/func_md5.c
team/oej/astum/include/asterisk/channel.h
team/oej/astum/include/asterisk/frame.h
team/oej/astum/include/asterisk/stringfields.h
team/oej/astum/pbx.c
team/oej/astum/res/Makefile
team/oej/astum/utils.c
Propchange: team/oej/astum/
------------------------------------------------------------------------------
--- svnmerge-blocked (original)
+++ svnmerge-blocked Tue Jan 31 09:14:27 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,8124,8134,8394,8412,8414,8418,8429,8433,8445,8562,8573,8600,8619,8666
+/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,8808
Propchange: team/oej/astum/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Tue Jan 31 09:14:27 2006
@@ -1,1 +1,1 @@
-/trunk:1-8678
+/trunk:1-8980
Modified: team/oej/astum/.cleancount
URL: http://svn.digium.com/view/asterisk/team/oej/astum/.cleancount?rev=8981&r1=8980&r2=8981&view=diff
==============================================================================
--- team/oej/astum/.cleancount (original)
+++ team/oej/astum/.cleancount Tue Jan 31 09:14:27 2006
@@ -1,1 +1,1 @@
-8
+9
Modified: team/oej/astum/Makefile
URL: http://svn.digium.com/view/asterisk/team/oej/astum/Makefile?rev=8981&r1=8980&r2=8981&view=diff
==============================================================================
--- team/oej/astum/Makefile (original)
+++ team/oej/astum/Makefile Tue Jan 31 09:14:27 2006
@@ -381,6 +381,9 @@
#These are used for all but Darwin
ASTLINK=-Wl,-E
SOLINK=-shared -Xlinker -x
+ ifeq ($(findstring BSD,$(OSARCH)),BSD)
+ SOLINK+=-L$(CROSS_COMPILE_TARGET)/usr/local/lib
+ endif
endif
ifeq ($(OSARCH),FreeBSD)
Modified: team/oej/astum/UPGRADE.txt
URL: http://svn.digium.com/view/asterisk/team/oej/astum/UPGRADE.txt?rev=8981&r1=8980&r2=8981&view=diff
==============================================================================
--- team/oej/astum/UPGRADE.txt (original)
+++ team/oej/astum/UPGRADE.txt Tue Jan 31 09:14:27 2006
@@ -21,6 +21,7 @@
* app_read has been updated to use the newer options codes, using "skip" or
"noanswer" will not work. Use s or n. Also there is a new feature i, for
using indication tones, so typing in skip would give you unexpected results.
+
Variables:
* The builtin variables ${CALLERID}, ${CALLERIDNAME}, ${CALLERIDNUM},
@@ -29,6 +30,21 @@
functions. You are encouraged to move towards the associated dialplan
function, as these variables will be removed in a future release.
+Functions:
+
+* The function ${CHECK_MD5()} has been deprecated in favor of using an
+ expression: $[${MD5(<string>)} = ${saved_md5}].
+
The SIP channel:
* The "incominglimit" setting is replaced by the "call-limit" setting in sip.conf.
+
+Installation:
+
+* On BSD systems, the installation directories have changed to more "FreeBSDish" directories. On startup, Asterisk will look for the main configuration in /usr7local/etc/asterisk/asterisk.conf
+If you have an old installation, you might want to remove the binaries and move the configuration files to the new locations. The following directories are now default:
+ ASTLIBDIR /usr/local/lib/asterisk
+ ASTVARLIBDIR /usr/local/share/asterisk
+ ASTETCDIR /usr/local/etc/asterisk
+ ASTBINDIR /usr/local/bin/asterisk
+ ASTSBINDIR /usr/local/sbin/asterisk
Modified: team/oej/astum/apps/app_dial.c
URL: http://svn.digium.com/view/asterisk/team/oej/astum/apps/app_dial.c?rev=8981&r1=8980&r2=8981&view=diff
==============================================================================
--- team/oej/astum/apps/app_dial.c (original)
+++ team/oej/astum/apps/app_dial.c Tue Jan 31 09:14:27 2006
@@ -262,19 +262,20 @@
use it not only for keeping track of what is in use but
also for keeping track of who we're dialing. */
-struct localuser {
+struct dial_localuser {
struct ast_channel *chan;
unsigned int flags;
int forwards;
- struct localuser *next;
+ struct dial_localuser *next;
};
LOCAL_USER_DECL;
-
-static void hanguptree(struct localuser *outgoing, struct ast_channel *exception)
+STANDARD_LOCAL_USER;
+
+static void hanguptree(struct dial_localuser *outgoing, struct ast_channel *exception)
{
/* Hang up a tree of stuff */
- struct localuser *oo;
+ struct dial_localuser *oo;
while (outgoing) {
/* Hangup any existing lines we have open */
if (outgoing->chan && (outgoing->chan != exception))
@@ -366,9 +367,9 @@
dst->uniqueid);
}
-static struct ast_channel *wait_for_answer(struct ast_channel *in, struct localuser *outgoing, int *to, struct ast_flags *peerflags, int *sentringing, char *status, size_t statussize, int busystart, int nochanstart, int congestionstart, int priority_jump, int *result)
+static struct ast_channel *wait_for_answer(struct ast_channel *in, struct dial_localuser *outgoing, int *to, struct ast_flags *peerflags, int *sentringing, char *status, size_t statussize, int busystart, int nochanstart, int congestionstart, int priority_jump, int *result)
{
- struct localuser *o;
+ struct dial_localuser *o;
int found;
int numlines;
int numbusy = busystart;
@@ -736,7 +737,7 @@
char *tech, *number, *rest, *cur;
char privcid[256];
char privintro[1024];
- struct localuser *outgoing=NULL, *tmp;
+ struct dial_localuser *outgoing=NULL, *tmp;
struct ast_channel *peer;
int to;
int numbusy = 0;
Modified: team/oej/astum/apps/app_externalivr.c
URL: http://svn.digium.com/view/asterisk/team/oej/astum/apps/app_externalivr.c?rev=8981&r1=8980&r2=8981&view=diff
==============================================================================
--- team/oej/astum/apps/app_externalivr.c (original)
+++ team/oej/astum/apps/app_externalivr.c Tue Jan 31 09:14:27 2006
@@ -75,9 +75,8 @@
char filename[1];
};
-struct localuser {
+struct ivr_localuser {
struct ast_channel *chan;
- struct localuser *next;
AST_LIST_HEAD(playlist, playlist_entry) playlist;
AST_LIST_HEAD(finishlist, playlist_entry) finishlist;
int abort_current_sound;
@@ -86,9 +85,10 @@
};
LOCAL_USER_DECL;
+STANDARD_LOCAL_USER;
struct gen_state {
- struct localuser *u;
+ struct ivr_localuser *u;
struct ast_filestream *stream;
struct playlist_entry *current;
int sample_queue;
@@ -111,7 +111,7 @@
static void *gen_alloc(struct ast_channel *chan, void *params)
{
- struct localuser *u = params;
+ struct ivr_localuser *u = params;
struct gen_state *state;
if (!(state = ast_calloc(1, sizeof(*state))))
@@ -143,7 +143,7 @@
/* caller has the playlist locked */
static int gen_nextfile(struct gen_state *state)
{
- struct localuser *u = state->u;
+ struct ivr_localuser *u = state->u;
char *file_to_stream;
u->abort_current_sound = 0;
@@ -175,7 +175,7 @@
static struct ast_frame *gen_readframe(struct gen_state *state)
{
struct ast_frame *f = NULL;
- struct localuser *u = state->u;
+ struct ivr_localuser *u = state->u;
if (u->abort_current_sound ||
(u->playing_silence && AST_LIST_FIRST(&u->playlist))) {
@@ -234,7 +234,7 @@
{
struct playlist_entry *entry;
- if (!(entry = ast_calloc(1, sizeof(*entry) + strlen(filename) + 10)))
+ if (!(entry = ast_calloc(1, sizeof(*entry) + strlen(filename) + 10))) /* XXX why 10 ? */
return NULL;
strcpy(entry->filename, filename);
@@ -244,7 +244,7 @@
static int app_exec(struct ast_channel *chan, void *data)
{
- struct localuser *u = NULL;
+ struct localuser *lu = NULL;
struct playlist_entry *entry;
const char *args = data;
int child_stdin[2] = { 0,0 };
@@ -259,8 +259,11 @@
FILE *child_commands = NULL;
FILE *child_errors = NULL;
FILE *child_events = NULL;
-
- LOCAL_USER_ADD(u);
+ struct ivr_localuser foo, *u = &foo;
+
+ bzero(u, sizeof(*u));
+
+ LOCAL_USER_ADD(lu);
AST_LIST_HEAD_INIT(&u->playlist);
AST_LIST_HEAD_INIT(&u->finishlist);
@@ -268,11 +271,12 @@
if (ast_strlen_zero(args)) {
ast_log(LOG_WARNING, "ExternalIVR requires a command to execute\n");
- goto exit;
+ LOCAL_USER_REMOVE(lu);
+ return -1;
}
if (!(buf = ast_strdupa(data))) {
- LOCAL_USER_REMOVE(u);
+ LOCAL_USER_REMOVE(lu);
return -1;
}
@@ -542,7 +546,7 @@
while ((entry = AST_LIST_REMOVE_HEAD(&u->playlist, list)))
free(entry);
- LOCAL_USER_REMOVE(u);
+ LOCAL_USER_REMOVE(lu);
return res;
}
Modified: team/oej/astum/apps/app_meetme.c
URL: http://svn.digium.com/view/asterisk/team/oej/astum/apps/app_meetme.c?rev=8981&r1=8980&r2=8981&view=diff
==============================================================================
--- team/oej/astum/apps/app_meetme.c (original)
+++ team/oej/astum/apps/app_meetme.c Tue Jan 31 09:14:27 2006
@@ -136,7 +136,7 @@
LOCAL_USER_DECL;
-static struct ast_conference {
+struct ast_conference {
ast_mutex_t playlock; /* Conference specific lock (players) */
ast_mutex_t listenlock; /* Conference specific lock (listeners) */
char confno[AST_MAX_EXTENSION]; /* Conference */
@@ -161,8 +161,10 @@
struct ast_frame *transframe[32];
struct ast_frame *origframe;
struct ast_trans_pvt *transpath[32];
- struct ast_conference *next;
-} *confs;
+ AST_LIST_ENTRY(ast_conference) list;
+};
+
+static AST_LIST_HEAD_STATIC(confs, ast_conference);
struct volume {
int desired; /* Desired volume adjustment */
@@ -202,8 +204,6 @@
VOL_UP,
VOL_DOWN,
};
-
-AST_MUTEX_DEFINE_STATIC(conflock);
static int admin_exec(struct ast_channel *chan, void *data);
static struct ast_frame null_frame = { AST_FRAME_NULL, };
@@ -426,13 +426,11 @@
unsigned char *data;
int len;
int res = -1;
- short *data2;
- int x;
if (!chan->_softhangup)
res = ast_autoservice_start(chan);
- ast_mutex_lock(&conflock);
+ AST_LIST_LOCK(&confs);
switch(sound) {
case ENTER:
@@ -448,13 +446,10 @@
len = 0;
}
if (data) {
- data2 = alloca(len * 2);
- for (x=0;x<len;x++)
- data2[x] = AST_MULAW(data[x]);
- careful_write(conf->fd, (unsigned char *)data2, len << 1, 1);
- }
-
- ast_mutex_unlock(&conflock);
+ careful_write(conf->fd, data, len, 1);
+ }
+
+ AST_LIST_UNLOCK(&confs);
if (!res)
ast_autoservice_stop(chan);
@@ -465,9 +460,9 @@
struct ast_conference *cnf;
struct zt_confinfo ztc;
- ast_mutex_lock(&conflock);
-
- for (cnf = confs; cnf; cnf = cnf->next) {
+ AST_LIST_LOCK(&confs);
+
+ AST_LIST_TRAVERSE(&confs, cnf, list) {
if (!strcmp(confno, cnf->confno))
break;
}
@@ -532,12 +527,11 @@
cnf->locked = 0;
if (option_verbose > 2)
ast_verbose(VERBOSE_PREFIX_3 "Created MeetMe conference %d for conference '%s'\n", cnf->zapconf, cnf->confno);
- cnf->next = confs;
- confs = cnf;
+ AST_LIST_INSERT_HEAD(&confs, cnf, list);
}
}
cnfout:
- ast_mutex_unlock(&conflock);
+ AST_LIST_UNLOCK(&confs);
return cnf;
}
@@ -576,13 +570,12 @@
if (argc == 1) {
/* 'MeetMe': List all the conferences */
now = time(NULL);
- cnf = confs;
- if (!cnf) {
+ if (AST_LIST_EMPTY(&confs)) {
ast_cli(fd, "No active MeetMe conferences.\n");
return RESULT_SUCCESS;
}
ast_cli(fd, header_format, "Conf Num", "Parties", "Marked", "Activity", "Creation");
- while(cnf) {
+ AST_LIST_TRAVERSE(&confs, cnf, list) {
if (cnf->markedusers == 0)
strcpy(cmdline, "N/A ");
else
@@ -594,7 +587,6 @@
ast_cli(fd, data_format, cnf->confno, cnf->users, cmdline, hr, min, sec, cnf->isdynamic ? "Dynamic" : "Static");
total += cnf->users;
- cnf = cnf->next;
}
ast_cli(fd, "* Total number of MeetMe users: %d\n", total);
return RESULT_SUCCESS;
@@ -643,21 +635,18 @@
}
} else if(strcmp(argv[1], "list") == 0) {
/* List all the users in a conference */
- if (!confs) {
+ if (AST_LIST_EMPTY(&confs)) {
ast_cli(fd, "No active conferences.\n");
return RESULT_SUCCESS;
}
- cnf = confs;
/* Find the right conference */
- while(cnf) {
+ AST_LIST_TRAVERSE(&confs, cnf, list) {
if (strcmp(cnf->confno, argv[2]) == 0)
break;
- if (cnf->next) {
- cnf = cnf->next;
- } else {
- ast_cli(fd, "No such conference: %s.\n",argv[2]);
- return RESULT_SUCCESS;
- }
+ }
+ if (!cnf) {
+ ast_cli(fd, "No such conference: %s.\n",argv[2]);
+ return RESULT_SUCCESS;
}
/* Show all the users */
for (user = cnf->firstuser; user; user = user->nextuser){
@@ -709,16 +698,14 @@
}
} else if (pos == 2) {
/* Conference Number */
- ast_mutex_lock(&conflock);
- cnf = confs;
- while(cnf) {
+ AST_LIST_LOCK(&confs);
+ AST_LIST_TRAVERSE(&confs, cnf, list) {
if (!strncasecmp(word, cnf->confno, strlen(word))) {
if (++which > state)
break;
}
- cnf = cnf->next;
- }
- ast_mutex_unlock(&conflock);
+ }
+ AST_LIST_UNLOCK(&confs);
return cnf ? strdup(cnf->confno) : NULL;
} else if (pos == 3) {
/* User Number || Conf Command option*/
@@ -727,7 +714,7 @@
return strdup("all");
}
which++;
- ast_mutex_lock(&conflock);
+ AST_LIST_LOCK(&confs);
/* TODO: Find the conf number from the cmdline (ignore spaces) <- test this and make it fail-safe! */
myline = ast_strdupa(line);
@@ -736,7 +723,7 @@
;
}
- for (cnf = confs; cnf; cnf = cnf->next) {
+ AST_LIST_TRAVERSE(&confs, cnf, list) {
if (!strcmp(confno, cnf->confno))
break;
}
@@ -751,7 +738,7 @@
}
}
}
- ast_mutex_unlock(&conflock);
+ AST_LIST_UNLOCK(&confs);
return usr ? strdup(usrno) : NULL;
}
}
@@ -798,32 +785,18 @@
We assume that this was called while holding conflock. */
static int conf_free(struct ast_conference *conf)
{
- struct ast_conference *prev = NULL, *cur = confs;
int x;
- while (cur) {
- if (cur == conf) {
- if (prev)
- prev->next = conf->next;
- else
- confs = conf->next;
- break;
- }
- prev = cur;
- cur = cur->next;
- }
-
- if (!cur)
- ast_log(LOG_WARNING, "Conference not found\n");
+ AST_LIST_REMOVE(&confs, conf, list);
if (conf->recording == MEETME_RECORD_ACTIVE) {
conf->recording = MEETME_RECORD_TERMINATE;
- ast_mutex_unlock(&conflock);
+ AST_LIST_UNLOCK(&confs);
while (1) {
- ast_mutex_lock(&conflock);
+ AST_LIST_LOCK(&confs);
if (conf->recording == MEETME_RECORD_OFF)
break;
- ast_mutex_unlock(&conflock);
+ AST_LIST_UNLOCK(&confs);
}
}
@@ -1561,7 +1534,7 @@
if (ioctl(fd, ZT_SETCONF, &ztc)) {
ast_log(LOG_WARNING, "Error setting conference\n");
close(fd);
- ast_mutex_unlock(&conflock);
+ AST_LIST_UNLOCK(&confs);
goto outrun;
}
@@ -1643,7 +1616,7 @@
reset_volumes(user);
- ast_mutex_lock(&conflock);
+ AST_LIST_LOCK(&confs);
if (!(confflags & CONFFLAG_QUIET) && !(confflags & CONFFLAG_MONITOR) && !(confflags & CONFFLAG_ADMIN))
conf_play(chan, conf, LEAVE);
@@ -1658,10 +1631,10 @@
ast_filedelete(user->namerecloc, NULL);
}
}
- ast_mutex_unlock(&conflock);
+ AST_LIST_UNLOCK(&confs);
outrun:
- ast_mutex_lock(&conflock);
+ AST_LIST_LOCK(&confs);
if (dsp)
ast_dsp_free(dsp);
@@ -1727,7 +1700,7 @@
pbx_builtin_setvar_helper(chan, "MEETMESECS", meetmesecs);
}
free(user);
- ast_mutex_unlock(&conflock);
+ AST_LIST_UNLOCK(&confs);
return ret;
}
@@ -1745,12 +1718,12 @@
);
/* Check first in the conference list */
- ast_mutex_lock(&conflock);
- for (cnf = confs; cnf; cnf = cnf->next) {
+ AST_LIST_LOCK(&confs);
+ AST_LIST_TRAVERSE(&confs, cnf, list) {
if (!strcmp(confno, cnf->confno))
break;
}
- ast_mutex_unlock(&conflock);
+ AST_LIST_UNLOCK(&confs);
if (!cnf) {
if (dynamic) {
@@ -1928,15 +1901,15 @@
struct ast_variable *var;
int confno_int;
- ast_mutex_lock(&conflock);
- for (cnf = confs; cnf; cnf = cnf->next) {
+ AST_LIST_LOCK(&confs);
+ AST_LIST_TRAVERSE(&confs, cnf, list) {
if (sscanf(cnf->confno, "%d", &confno_int) == 1) {
/* Disqualify in use conference */
if (confno_int >= 0 && confno_int < 1024)
map[confno_int]++;
}
}
- ast_mutex_unlock(&conflock);
+ AST_LIST_UNLOCK(&confs);
/* We only need to load the config file for static and empty_no_pin (otherwise we don't care) */
if ((empty_no_pin) || (!dynamic)) {
@@ -1958,17 +1931,15 @@
}
if (!dynamic) {
/* For static: run through the list and see if this conference is empty */
- ast_mutex_lock(&conflock);
- cnf = confs;
- while (cnf) {
+ AST_LIST_LOCK(&confs);
+ AST_LIST_TRAVERSE(&confs, cnf, list) {
if (!strcmp(confno_tmp, cnf->confno)) {
/* The conference exists, therefore it's not empty */
found = 1;
break;
}
- cnf = cnf->next;
}
- ast_mutex_unlock(&conflock);
+ AST_LIST_UNLOCK(&confs);
if (!found) {
/* At this point, we have a confno_tmp (static conference) that is empty */
if ((empty_no_pin && ((!stringp) || (stringp && (stringp[0] == '\0')))) || (!empty_no_pin)) {
@@ -2084,11 +2055,11 @@
res = -1;
allowretry = 0;
/* see if we need to get rid of the conference */
- ast_mutex_lock(&conflock);
+ AST_LIST_LOCK(&confs);
if (!cnf->users) {
conf_free(cnf);
}
- ast_mutex_unlock(&conflock);
+ AST_LIST_UNLOCK(&confs);
break;
}
@@ -2145,7 +2116,7 @@
LOCAL_USER_ADD(u);
- ast_mutex_lock(&conflock);
+ AST_LIST_LOCK(&confs);
/* The param has the conference number the user and the command to execute */
if (!ast_strlen_zero(data)) {
params = ast_strdupa((char *) data);
@@ -2154,11 +2125,11 @@
if (!args.command) {
ast_log(LOG_WARNING, "MeetmeAdmin requires a command!\n");
- ast_mutex_unlock(&conflock);
+ AST_LIST_UNLOCK(&confs);
LOCAL_USER_REMOVE(u);
return -1;
}
- for (cnf = confs; cnf; cnf = cnf->next) {
+ AST_LIST_TRAVERSE(&confs, cnf, list) {
if (!strcmp(cnf->confno, args.confno))
break;
}
@@ -2244,7 +2215,7 @@
ast_log(LOG_NOTICE, "Conference Number not found\n");
}
}
- ast_mutex_unlock(&conflock);
+ AST_LIST_UNLOCK(&confs);
LOCAL_USER_REMOVE(u);
@@ -2272,8 +2243,8 @@
cnf->recording = MEETME_RECORD_ACTIVE;
while (ast_waitfor(cnf->lchan, -1) > -1) {
if (cnf->recording == MEETME_RECORD_TERMINATE) {
- ast_mutex_lock(&conflock);
- ast_mutex_unlock(&conflock);
+ AST_LIST_LOCK(&confs);
+ AST_LIST_UNLOCK(&confs);
break;
}
if (!s && cnf->recordingfilename && (cnf->recordingfilename != oldrecordingfilename)) {
Modified: team/oej/astum/ast_expr2.c
URL: http://svn.digium.com/view/asterisk/team/oej/astum/ast_expr2.c?rev=8981&r1=8980&r2=8981&view=diff
==============================================================================
--- team/oej/astum/ast_expr2.c (original)
+++ team/oej/astum/ast_expr2.c Tue Jan 31 09:14:27 2006
@@ -1,4 +1,4 @@
-/* A Bison parser, made by GNU Bison 1.875d. */
+/* A Bison parser, made by GNU Bison 2.0. */
/* Skeleton parser for Yacc-like parsing with Bison,
Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
@@ -45,8 +45,7 @@
/* Using locations. */
#define YYLSP_NEEDED 1
-/* If NAME_PREFIX is specified substitute the variables and functions
- names. */
+/* Substitute the variable and function names. */
#define yyparse ast_yyparse
#define yylex ast_yylex
#define yyerror ast_yyerror
@@ -238,7 +237,12 @@
some useful info about the error. Not as easy as it looks, but it
is possible. */
#define ast_yyerror(x) ast_yyerror(x,&yyloc,parseio)
-
+#define DESTROY(x) { \
+if ((x)->type == AST_EXPR_numeric_string || (x)->type == AST_EXPR_string) \
+ free((x)->u.s); \
+ (x)->u.s = 0; \
+ free(x); \
+}
/* Enabling traces. */
@@ -255,12 +259,12 @@
#endif
#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-#line 137 "ast_expr2.y"
+#line 142 "ast_expr2.y"
typedef union YYSTYPE {
struct val *val;
} YYSTYPE;
-/* Line 191 of yacc.c. */
-#line 264 "ast_expr2.c"
+/* Line 190 of yacc.c. */
+#line 268 "ast_expr2.c"
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
# define YYSTYPE_IS_TRIVIAL 1
@@ -281,13 +285,13 @@
/* Copy the second part of user declarations. */
-#line 141 "ast_expr2.y"
+#line 146 "ast_expr2.y"
extern int ast_yylex __P((YYSTYPE *, YYLTYPE *, yyscan_t));
-/* Line 214 of yacc.c. */
-#line 291 "ast_expr2.c"
+/* Line 213 of yacc.c. */
+#line 295 "ast_expr2.c"
#if ! defined (yyoverflow) || YYERROR_VERBOSE
@@ -302,14 +306,10 @@
# ifdef YYSTACK_USE_ALLOCA
# if YYSTACK_USE_ALLOCA
-# define YYSTACK_ALLOC alloca
-# endif
-# else
-# if defined (alloca) || defined (_ALLOCA_H)
-# define YYSTACK_ALLOC alloca
-# else
# ifdef __GNUC__
# define YYSTACK_ALLOC __builtin_alloca
+# else
+# define YYSTACK_ALLOC alloca
# endif
# endif
# endif
@@ -473,9 +473,9 @@
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const unsigned char yyrline[] =
{
- 0, 160, 160, 168, 169, 172, 175, 178, 181, 184,
- 187, 190, 193, 196, 199, 202, 205, 208, 211, 214,
- 217, 220, 223
+ 0, 165, 165, 175, 176, 180, 184, 188, 192, 196,
+ 200, 204, 208, 212, 216, 220, 224, 228, 232, 236,
+ 240, 244, 248
};
#endif
@@ -660,19 +660,52 @@
} \
while (0)
+
#define YYTERROR 1
#define YYERRCODE 256
-/* YYLLOC_DEFAULT -- Compute the default location (before the actions
- are run). */
-
+
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+ If N is 0, then set CURRENT to the empty location which ends
+ the previous symbol: RHS[0] (always defined). */
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
#ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N) \
- ((Current).first_line = (Rhs)[1].first_line, \
- (Current).first_column = (Rhs)[1].first_column, \
- (Current).last_line = (Rhs)[N].last_line, \
- (Current).last_column = (Rhs)[N].last_column)
-#endif
+# define YYLLOC_DEFAULT(Current, Rhs, N) \
+ do \
+ if (N) \
+ { \
+ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
+ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
+ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
+ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
+ } \
+ else \
+ { \
+ (Current).first_line = (Current).last_line = \
+ YYRHSLOC (Rhs, 0).last_line; \
+ (Current).first_column = (Current).last_column = \
+ YYRHSLOC (Rhs, 0).last_column; \
+ } \
+ while (0)
+#endif
+
+
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+ This macro was not mandated originally: define only if we know
+ we won't break user code: when these are the locations we know. */
+
+#ifndef YY_LOCATION_PRINT
+# if YYLTYPE_IS_TRIVIAL
+# define YY_LOCATION_PRINT(File, Loc) \
+ fprintf (File, "%d.%d-%d.%d", \
+ (Loc).first_line, (Loc).first_column, \
+ (Loc).last_line, (Loc).last_column)
+# else
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
+#endif
+
/* YYLEX -- calling `yylex' with the right arguments. */
@@ -696,19 +729,13 @@
YYFPRINTF Args; \
} while (0)
-# define YYDSYMPRINT(Args) \
-do { \
- if (yydebug) \
- yysymprint Args; \
-} while (0)
-
-# define YYDSYMPRINTF(Title, Token, Value, Location) \
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
do { \
if (yydebug) \
{ \
YYFPRINTF (stderr, "%s ", Title); \
yysymprint (stderr, \
- Token, Value, Location); \
+ Type, Value, Location); \
YYFPRINTF (stderr, "\n"); \
} \
} while (0)
@@ -775,8 +802,7 @@
int yydebug;
#else /* !YYDEBUG */
# define YYDPRINTF(Args)
-# define YYDSYMPRINT(Args)
-# define YYDSYMPRINTF(Title, Token, Value, Location)
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
# define YY_STACK_PRINT(Bottom, Top)
# define YY_REDUCE_PRINT(Rule)
#endif /* !YYDEBUG */
@@ -793,10 +819,6 @@
Do not make this value too large; the results are undefined if
SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
evaluated with infinite-precision integer arithmetic. */
-
-#if defined (YYMAXDEPTH) && YYMAXDEPTH == 0
-# undef YYMAXDEPTH
-#endif
#ifndef YYMAXDEPTH
# define YYMAXDEPTH 10000
@@ -881,15 +903,17 @@
(void) yylocationp;
if (yytype < YYNTOKENS)
- {
- YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-# ifdef YYPRINT
- YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-# endif
- }
+ YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
else
YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+ YY_LOCATION_PRINT (yyoutput, *yylocationp);
+ fprintf (yyoutput, ": ");
+
+# ifdef YYPRINT
+ if (yytype < YYNTOKENS)
+ YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# endif
switch (yytype)
{
default:
@@ -905,10 +929,11 @@
#if defined (__STDC__) || defined (__cplusplus)
static void
-yydestruct (int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp)
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp)
#else
static void
-yydestruct (yytype, yyvaluep, yylocationp)
+yydestruct (yymsg, yytype, yyvaluep, yylocationp)
+ const char *yymsg;
int yytype;
YYSTYPE *yyvaluep;
YYLTYPE *yylocationp;
@@ -917,6 +942,10 @@
/* Pacify ``unused variable'' warnings. */
(void) yyvaluep;
(void) yylocationp;
+
+ if (!yymsg)
+ yymsg = "Deleting";
+ YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
switch (yytype)
{
@@ -970,15 +999,15 @@
#endif
#endif
{
- /* The lookahead symbol. */
+ /* The look-ahead symbol. */
int yychar;
-/* The semantic value of the lookahead symbol. */
+/* The semantic value of the look-ahead symbol. */
YYSTYPE yylval;
/* Number of syntax errors so far. */
int yynerrs;
-/* Location data for the lookahead symbol. */
+/* Location data for the look-ahead symbol. */
YYLTYPE yylloc;
register int yystate;
@@ -986,7 +1015,7 @@
int yyresult;
/* Number of tokens to shift before error messages enabled. */
int yyerrstatus;
- /* Lookahead token as an internal (translated) token number. */
+ /* Look-ahead token as an internal (translated) token number. */
int yytoken = 0;
/* Three stacks and their tools:
@@ -1011,7 +1040,8 @@
YYLTYPE yylsa[YYINITDEPTH];
YYLTYPE *yyls = yylsa;
YYLTYPE *yylsp;
- YYLTYPE *yylerrsp;
+ /* The locations where the error started and ended. */
+ YYLTYPE yyerror_range[2];
#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
@@ -1041,6 +1071,15 @@
yyssp = yyss;
yyvsp = yyvs;
yylsp = yyls;
+#if YYLTYPE_IS_TRIVIAL
+ /* Initialize the default location before parsing starts. */
+ yylloc.first_line = yylloc.last_line = 1;
+ yylloc.first_column = yylloc.last_column = 0;
+#endif
+
+
+ yyvsp[0] = yylval;
+ yylsp[0] = yylloc;
goto yysetstate;
@@ -1131,18 +1170,18 @@
yybackup:
/* Do appropriate processing given the current state. */
-/* Read a lookahead token if we need one and don't already have one. */
+/* Read a look-ahead token if we need one and don't already have one. */
/* yyresume: */
- /* First try to decide what to do without reference to lookahead token. */
+ /* First try to decide what to do without reference to look-ahead token. */
yyn = yypact[yystate];
if (yyn == YYPACT_NINF)
goto yydefault;
- /* Not known => get a lookahead token if don't already have one. */
-
- /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
+ /* Not known => get a look-ahead token if don't already have one. */
+
+ /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */
if (yychar == YYEMPTY)
{
YYDPRINTF ((stderr, "Reading a token: "));
@@ -1157,7 +1196,7 @@
else
{
yytoken = YYTRANSLATE (yychar);
- YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
+ YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
}
/* If the proper action on seeing token YYTOKEN is to reduce or to
@@ -1177,8 +1216,8 @@
if (yyn == YYFINAL)
YYACCEPT;
- /* Shift the lookahead token. */
- YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
+ /* Shift the look-ahead token. */
+ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
/* Discard the token being shifted unless it is eof. */
if (yychar != YYEOF)
@@ -1229,158 +1268,180 @@
switch (yyn)
{
case 2:
-#line 160 "ast_expr2.y"
+#line 165 "ast_expr2.y"
{ ((struct parse_io *)parseio)->val = (struct val *)calloc(sizeof(struct val),1);
- ((struct parse_io *)parseio)->val->type = yyval.val->type;
- if( yyval.val->type == AST_EXPR_integer )
- ((struct parse_io *)parseio)->val->u.i = yyval.val->u.i;
+ ((struct parse_io *)parseio)->val->type = (yyvsp[0].val)->type;
+ if( (yyvsp[0].val)->type == AST_EXPR_integer )
+ ((struct parse_io *)parseio)->val->u.i = (yyvsp[0].val)->u.i;
else
- ((struct parse_io *)parseio)->val->u.s = yyval.val->u.s; ;}
+ ((struct parse_io *)parseio)->val->u.s = (yyvsp[0].val)->u.s;
+ free((yyvsp[0].val));
+ ;}
break;
case 3:
-#line 168 "ast_expr2.y"
- { yyval.val= yyvsp[0].val;;}
+#line 175 "ast_expr2.y"
+ { (yyval.val)= (yyvsp[0].val);;}
break;
case 4:
-#line 169 "ast_expr2.y"
- { yyval.val = yyvsp[-1].val;
- yyloc.first_column = yylsp[-2].first_column; yyloc.last_column = yylsp[0].last_column;
- yyloc.first_line=0; yyloc.last_line=0;;}
+#line 176 "ast_expr2.y"
+ { (yyval.val) = (yyvsp[-1].val);
+ (yyloc).first_column = (yylsp[-2]).first_column; (yyloc).last_column = (yylsp[0]).last_column;
+ (yyloc).first_line=0; (yyloc).last_line=0;
+ DESTROY((yyvsp[-2].val)); DESTROY((yyvsp[0].val)); ;}
break;
case 5:
-#line 172 "ast_expr2.y"
- { yyval.val = op_or (yyvsp[-2].val, yyvsp[0].val);
[... 6903 lines stripped ...]
More information about the asterisk-commits
mailing list