[svn-commits] twilson: branch twilson/calendaring r166952 - in /team/twilson/calendaring: i...

SVN commits to the Digium repositories svn-commits at lists.digium.com
Wed Dec 31 13:02:13 CST 2008


Author: twilson
Date: Wed Dec 31 13:02:13 2008
New Revision: 166952

URL: http://svn.digium.com/view/asterisk?view=rev&rev=166952
Log:
Baby steps towards reworking loading, start by making the config a global and getting rid of the load_data struct

Modified:
    team/twilson/calendaring/include/asterisk/calendar.h
    team/twilson/calendaring/main/calendar.c
    team/twilson/calendaring/res/res_caldav.c
    team/twilson/calendaring/res/res_exchangecal.c
    team/twilson/calendaring/res/res_icalendar.c

Modified: team/twilson/calendaring/include/asterisk/calendar.h
URL: http://svn.digium.com/view/asterisk/team/twilson/calendaring/include/asterisk/calendar.h?view=diff&rev=166952&r1=166951&r2=166952
==============================================================================
--- team/twilson/calendaring/include/asterisk/calendar.h (original)
+++ team/twilson/calendaring/include/asterisk/calendar.h Wed Dec 31 13:02:13 2008
@@ -60,14 +60,10 @@
  * to unregister that module's calendar type (usually done in module_unload())
  */
 
+struct ast_config *calendar_config;
+
 struct ast_calendar;
 struct ast_calendar_event;
-
-/*! \brief The structure to pass to the load_calendar callback */
-struct ast_calendar_load_data {
-	struct ast_config *cfg;
-	struct ast_calendar *cal;
-};
 
 /*! \brief Individual calendaring technology data */
 struct ast_calendar_tech {

Modified: team/twilson/calendaring/main/calendar.c
URL: http://svn.digium.com/view/asterisk/team/twilson/calendaring/main/calendar.c?view=diff&rev=166952&r1=166951&r2=166952
==============================================================================
--- team/twilson/calendaring/main/calendar.c (original)
+++ team/twilson/calendaring/main/calendar.c Wed Dec 31 13:02:13 2008
@@ -687,7 +687,6 @@
 
 static int load_config(void *data)
 {
-	struct ast_config *cfg;
 	const char *cat = NULL;
 	struct ast_flags config_flags = { 0 };
 	const char *val;
@@ -696,16 +695,16 @@
 		sleep(1);
 	}
 
-	if (!(cfg = ast_config_load2("calendar.conf", "calendar", config_flags))) {
+	if (!(calendar_config = ast_config_load2("calendar.conf", "calendar", config_flags))) {
 		ast_log(LOG_ERROR, "Unable to load config calendar.conf\n");
 		return -1;
 	}
 
-	while ((cat = ast_category_browse(cfg, cat))) {
+	while ((cat = ast_category_browse(calendar_config, cat))) {
 		if (!strcasecmp(cat, "general")) {
-			if (!(val = ast_variable_retrieve(cfg, cat, "enabled")) || !ast_true(val)) {
+			if (!(val = ast_variable_retrieve(calendar_config, cat, "enabled")) || !ast_true(val)) {
 				ast_debug(1, "Disabling calendar support\n");
-				ast_config_destroy(cfg);
+				ast_config_destroy(calendar_config);
 				return 0;
 			} else {
 				ast_debug(1, "Enabling calendar support\n");
@@ -713,10 +712,9 @@
 		} else {
 			struct ast_calendar *cal;
 			const struct ast_calendar_tech *tech;
-			struct ast_calendar_load_data *load_data;
 			const char *val;
 
-			if (!(val = ast_variable_retrieve(cfg, cat, "type"))) {
+			if (!(val = ast_variable_retrieve(calendar_config, cat, "type"))) {
 				ast_log(LOG_WARNING, "Calendar '%s' has no type, skipping!\n", cat);
 				continue;
 			}
@@ -726,30 +724,21 @@
 				continue;
 			}
 
-			if (!(cal = build_calendar(cfg, cat, tech))) {
-				ast_config_destroy(cfg);
+			if (!(cal = build_calendar(calendar_config, cat, tech))) {
+				ast_config_destroy(calendar_config);
 				return -1;
 			}
 
 			ao2_link(calendars, cal);
 
-			if (!(load_data = ast_malloc(sizeof(*load_data)))) {
-				ast_log(LOG_ERROR, "Could not allocate memory for two measly pointers? Right...\n");
-				cal = unref_calendar(cal);
-				ast_config_destroy(cfg);
-				return -1;
-			}
-			load_data->cfg = cfg;
-			load_data->cal = cal;
-
 			/* Respsonsible for freeing load_data */
-			ast_pthread_create(&cal->thread, NULL, cal->tech->load_calendar, load_data);
+			ast_pthread_create(&cal->thread, NULL, cal->tech->load_calendar, cal);
 
 			cal = unref_calendar(cal);
 		}
 	}
 
-	ast_config_destroy(cfg);
+	ast_config_destroy(calendar_config);
 
 	return 0;
 }

Modified: team/twilson/calendaring/res/res_caldav.c
URL: http://svn.digium.com/view/asterisk/team/twilson/calendaring/res/res_caldav.c?view=diff&rev=166952&r1=166951&r2=166952
==============================================================================
--- team/twilson/calendaring/res/res_caldav.c (original)
+++ team/twilson/calendaring/res/res_caldav.c Wed Dec 31 13:02:13 2008
@@ -517,12 +517,10 @@
 {
 	struct caldav_pvt *pvt;
 	struct ast_variable *v;
-	struct ast_calendar_load_data *data = void_data;
-	struct ast_config *cfg = data->cfg;
-	struct ast_calendar *cal = data->cal;
+	struct ast_calendar *cal = void_data;
 	ast_mutex_t refreshlock;
 
-	if (!(cal && cfg)) {
+	if (!(cal && calendar_config)) {
 		ast_log(LOG_ERROR, "Required parameters not provided\n");
 		return NULL;
 	}
@@ -550,7 +548,7 @@
 		return NULL;
 	}
 
-	for (v = ast_variable_browse(cfg, cal->name); v; v = v->next) {
+	for (v = ast_variable_browse(calendar_config, cal->name); v; v = v->next) {
 		if (!strcasecmp(v->name, "url")) {
 			ast_string_field_set(pvt, url, v->value);
 		} else if (!strcasecmp(v->name, "user")) {
@@ -597,10 +595,6 @@
 
 	ao2_unlock(cal);
 
-	cfg = NULL;
-	cal = NULL;
-	ast_free(data);
-
 	/* The only writing from another thread will be if unload is true */
 	for (;;) {
 		struct timeval tv = ast_tvnow();

Modified: team/twilson/calendaring/res/res_exchangecal.c
URL: http://svn.digium.com/view/asterisk/team/twilson/calendaring/res/res_exchangecal.c?view=diff&rev=166952&r1=166951&r2=166952
==============================================================================
--- team/twilson/calendaring/res/res_exchangecal.c (original)
+++ team/twilson/calendaring/res/res_exchangecal.c Wed Dec 31 13:02:13 2008
@@ -616,12 +616,10 @@
 {
 	struct exchangecal_pvt *pvt;
 	struct ast_variable *v;
-	struct ast_calendar_load_data *data = void_data;
-	struct ast_config *cfg = data->cfg;
-	struct ast_calendar *cal = data->cal;
+	struct ast_calendar *cal = void_data;
 	ast_mutex_t refreshlock;
 
-	if (!(cal && cfg)) {
+	if (!(cal && calendar_config)) {
 		ast_log(LOG_ERROR, "Required parameters not provided\n");
 		return NULL;
 	}
@@ -649,7 +647,7 @@
 		return NULL;
 	}
 
-	for (v = ast_variable_browse(cfg, cal->name); v; v = v->next) {
+	for (v = ast_variable_browse(calendar_config, cal->name); v; v = v->next) {
 		if (!strcasecmp(v->name, "url")) {
 			ast_string_field_set(pvt, url, v->value);
 		} else if (!strcasecmp(v->name, "user")) {
@@ -696,10 +694,6 @@
 
 	ao2_unlock(cal);
 
-	cfg = NULL;
-	cal = NULL;
-	ast_free(data);
-
 	/* The only writing from another thread will be if unload is true */
 	for (;;) {
 		struct timeval tv = ast_tvnow();

Modified: team/twilson/calendaring/res/res_icalendar.c
URL: http://svn.digium.com/view/asterisk/team/twilson/calendaring/res/res_icalendar.c?view=diff&rev=166952&r1=166951&r2=166952
==============================================================================
--- team/twilson/calendaring/res/res_icalendar.c (original)
+++ team/twilson/calendaring/res/res_icalendar.c Wed Dec 31 13:02:13 2008
@@ -312,12 +312,10 @@
 {
 	struct icalendar_pvt *pvt;
 	struct ast_variable *v;
-	struct ast_calendar_load_data *data = void_data;
-	struct ast_config *cfg = data->cfg;
-	struct ast_calendar *cal = data->cal;
+	struct ast_calendar *cal = void_data;
 	ast_mutex_t refreshlock;
 
-	if (!(cal && cfg)) {
+	if (!(cal && calendar_config)) {
 		ast_log(LOG_ERROR, "Required parameters not provided\n");
 		return NULL;
 	}
@@ -345,7 +343,7 @@
 		return NULL;
 	}
 
-	for (v = ast_variable_browse(cfg, cal->name); v; v = v->next) {
+	for (v = ast_variable_browse(calendar_config, cal->name); v; v = v->next) {
 		if (!strcasecmp(v->name, "url")) {
 			ast_string_field_set(pvt, url, v->value);
 		} else if (!strcasecmp(v->name, "user")) {
@@ -396,10 +394,6 @@
 
 	ao2_unlock(cal);
 
-	cfg = NULL;
-	cal = NULL;
-	ast_free(data);
-
 	/* The only writing from another thread will be if unload is true */
 	for(;;) {
 		struct timeval tv = ast_tvnow();




More information about the svn-commits mailing list