[svn-commits] mvanbaak: branch group/multiparking r105114 - /team/group/multiparking/main/

SVN commits to the Digium repositories svn-commits at lists.digium.com
Thu Feb 28 16:15:27 CST 2008


Author: mvanbaak
Date: Thu Feb 28 16:15:27 2008
New Revision: 105114

URL: http://svn.digium.com/view/asterisk?view=rev&rev=105114
Log:
following putnopvut's tutorial on irc

Modified:
    team/group/multiparking/main/features.c

Modified: team/group/multiparking/main/features.c
URL: http://svn.digium.com/view/asterisk/team/group/multiparking/main/features.c?view=diff&rev=105114&r1=105113&r2=105114
==============================================================================
--- team/group/multiparking/main/features.c (original)
+++ team/group/multiparking/main/features.c Thu Feb 28 16:15:27 2008
@@ -2269,7 +2269,7 @@
 	ASTOBJ_WRLOCK(curlot);
 	/* Lock parking list */
 	AST_LIST_LOCK(&curlot->parkings);
-	AST_LIST_TRAVERSE(&curlot->parkings, pu, list) {
+	AST_LIST_TRAVERSE_SAFE_BEGIN(&curlot->parkings, pu, list) {
 
 //SKREP - needs AST LIST TRAVERSAL STUFF!
 //	pu = curlot->occupiedlots;
@@ -2279,8 +2279,8 @@
 		struct ast_context *con;
 
 		if (pu->notquiteyet) { /* Pretend this one isn't here yet */
-			pl = pu;
-			pu = pu->parkfindnext;
+			//pl = pu;
+			//pu = pu->parkfindnext;
 			continue;
 		}
 		tms = ast_tvdiff_ms(ast_tvnow(), pu->start);
@@ -2340,10 +2340,10 @@
 				ast_hangup(chan);
 			}
 			/* And take them out of the parking lot */
-			if (pl) 
-				pl->next = pu->next;
-			else
-				curlot->occupiedlots = pu->next;
+			//if (pl) 
+			//	pl->next = pu->next;
+			//else
+			//	curlot->occupiedlots = pu->next;
 			pt = pu;
 			pu = pu->next;
 			con = ast_context_find(pt->parkinglot->parking_con);
@@ -2381,21 +2381,22 @@
 					ast_verb(2, "%s got tired of being parked\n", chan->name);
 					ast_hangup(chan);
 					/* And take them out of the parking lot */
-					if (pl) 
-						pl->next = pu->next;
-					else
-						curlot->occupiedlots = pu->next;
-					pt = pu;
-					pu = pu->next;
+					//if (pl) 
+					//	pl->next = pu->next;
+					//else
+					//	curlot->occupiedlots = pu->next;
+					//pt = pu;
+					//pu = pu->next;
 					con = ast_context_find(curlot->parking_con);
 					if (con) {
-						if (ast_context_remove_extension2(con, pt->parkingexten, 1, NULL))
+						if (ast_context_remove_extension2(con, pu->parkingexten, 1, NULL))
 							ast_log(LOG_WARNING, "Whoa, failed to remove the extension!\n");
 						else
 							notify_metermaids(pu->parkingexten, curlot->parking_con, AST_DEVICE_NOT_INUSE);
 					} else
 						ast_log(LOG_WARNING, "Whoa, no parking context for parking lot %s?\n", curlot->name);
-					free(pt);
+					//free(pt);
+					AST_LIST_REMOVE_CURRENT(&curlot->parkings, list);
 					parkinglot_unref(curlot);
 					break;
 				} else {
@@ -2423,11 +2424,12 @@
 				/* Keep track of our shortest wait */
 				if (tms < ms || ms < 0)
 					ms = tms;
-				pl = pu;
-				pu = pu->next;
+				//pl = pu;
+				//pu = pu->next;
 			}
 		}
 	}
+	AST_LIST_TRAVERSE_SAFE_END();
 	AST_LIST_UNLOCK(&curlot->parkings);
 
 	ASTOBJ_UNLOCK(curlot);




More information about the svn-commits mailing list