[asterisk-commits] jpeeler: branch group/multiparking r114130 - /team/group/multiparking/main/
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Mon Apr 14 15:25:14 CDT 2008
Author: jpeeler
Date: Mon Apr 14 15:25:14 2008
New Revision: 114130
URL: http://svn.digium.com/view/asterisk?view=rev&rev=114130
Log:
checkpoint, fixes producing multiple parkinglots on reload, but modifying pbx.c should not be required
Modified:
team/group/multiparking/main/features.c
team/group/multiparking/main/pbx.c
Modified: team/group/multiparking/main/features.c
URL: http://svn.digium.com/view/asterisk/team/group/multiparking/main/features.c?view=diff&rev=114130&r1=114129&r2=114130
==============================================================================
--- team/group/multiparking/main/features.c (original)
+++ team/group/multiparking/main/features.c Mon Apr 14 15:25:14 2008
@@ -2708,15 +2708,12 @@
struct ast_variable *confvar = var;
int error = 0;
int start = 0, end = 0;
+ int oldparkinglot = 0;
parkinglot = find_parkinglot(name);
- /* TODO: confirm astobj2 doesn't have marking
if (parkinglot)
- ASTOBJ_UNMARK(parkinglot);
+ oldparkinglot = 1;
else
- parkinglot = create_parkinglot(name);
- */
- if (!parkinglot)
parkinglot = create_parkinglot(name);
if (!parkinglot)
@@ -2788,8 +2785,10 @@
ast_log(LOG_DEBUG, "Parking %s now open for business. (start exten %d end %d)\n", name, start, end);
- /* Move it into the list */
- ao2_link(parkinglots, parkinglot);
+ /* Move it into the list, if it wasn't already there */
+ if (!oldparkinglot) {
+ ao2_link(parkinglots, parkinglot);
+ }
parkinglot_unref(parkinglot);
return parkinglot;
@@ -3201,15 +3200,9 @@
int ast_features_reload(void)
{
int res;
- struct ast_parkinglot *curlot;
- struct ao2_iterator iter;
/* Release parking lot list */
//ASTOBJ_CONTAINER_MARKALL(&parkinglots);
- iter = ao2_iterator_init(parkinglots, 0);
- while ((curlot = ao2_iterator_next(&iter))) {
- parkinglot_unref(curlot);
- //ao2_unlink(parkinglots, curlot);
- }
+ // TODO: I don't think any marking is necessary
/* Reload configuration */
res = load_config();
@@ -3411,28 +3404,6 @@
ast_cli(a->fd, "%4s %25s (%-15s %-12s %-4s) %-6s \n", "Num", "Channel"
, "Context", "Extension", "Pri", "Timeout");
- /*
- ASTOBJ_CONTAINER_TRAVERSE(&parkinglots, 1, do {
- int lotparked = 0;
- ASTOBJ_RDLOCK(iterator);
- ast_cli(a->fd, "*** Parking lot: %s\n", iterator->name);
-
- AST_LIST_LOCK(&iterator->parkings);
- AST_LIST_TRAVERSE(&iterator->parkings, cur, list) {
- ast_cli(a->fd, "%-10.10s %25s (%-15s %-12s %-4d) %6lds\n"
- ,cur->parkingexten, cur->chan->name, cur->context, cur->exten
- ,cur->priority, cur->start.tv_sec + (cur->parkingtime/1000) - time(NULL));
- numparked++;
- numparked += lotparked;
- }
- AST_LIST_UNLOCK(&iterator->parkings);
- if (lotparked)
- ast_cli(a->fd, " %d parked call%s in parking lot %s\n", lotparked, ESS(lotparked), iterator->name);
-
- ASTOBJ_UNLOCK(iterator);
- } while (0) );
- */
-
iter = ao2_iterator_init(parkinglots, 0);
while ((curlot = ao2_iterator_next(&iter))) {
int lotparked = 0;
@@ -3495,9 +3466,6 @@
astman_send_ack(s, m, "Parked calls will follow");
- //ASTOBJ_CONTAINER_TRAVERSE(&parkinglots, 1, do {
- // ASTOBJ_RDLOCK(iterator);
- //
iter = ao2_iterator_init(parkinglots, 0);
while ((curlot = ao2_iterator_next(&iter))) {
@@ -3519,10 +3487,8 @@
idText);
}
AST_LIST_UNLOCK(&curlot->parkings);
-
- //ASTOBJ_UNLOCK(iterator);
ao2_ref(curlot, -1);
- } //while (0) );
+ }
astman_append(s,
"Event: ParkedCallsComplete\r\n"
@@ -3797,8 +3763,6 @@
ast_register_application2(app_bridge, bridge_exec, bridge_synopsis, bridge_descrip, NULL);
-
- //ASTOBJ_CONTAINER_INIT(&parkinglots);
parkinglots = ao2_container_alloc(7, parkinglot_hash_cb, parkinglot_cmp_cb);
if ((res = load_config()))
Modified: team/group/multiparking/main/pbx.c
URL: http://svn.digium.com/view/asterisk/team/group/multiparking/main/pbx.c?view=diff&rev=114130&r1=114129&r2=114130
==============================================================================
--- team/group/multiparking/main/pbx.c (original)
+++ team/group/multiparking/main/pbx.c Mon Apr 14 15:25:14 2008
@@ -6425,7 +6425,7 @@
/* The pattern trie points to this exten; replace the pointer,
and all will be well */
- if (x->exten) { /* this test for safety purposes */
+ if (x && x->exten) { /* this test for safety purposes */
x->exten = tmp; /* replace what would become a bad pointer */
} else {
ast_log(LOG_ERROR,"Trying to delete an exten from a context, but the pattern tree node returned isn't an extension\n");
@@ -6447,7 +6447,7 @@
con->root = tmp;
/* The pattern trie points to this exten; replace the pointer,
and all will be well */
- if (x->exten) { /* this test for safety purposes */
+ if (x && x->exten) { /* this test for safety purposes */
x->exten = tmp; /* replace what would become a bad pointer */
} else {
ast_log(LOG_ERROR,"Trying to delete an exten from a context, but the pattern tree node returned isn't an extension\n");
More information about the asterisk-commits
mailing list