[svn-commits] russell: branch group/newcdr r202001 - /team/group/newcdr/main/cel.c

SVN commits to the Digium repositories svn-commits at lists.digium.com
Fri Jun 19 15:40:29 CDT 2009


Author: russell
Date: Fri Jun 19 15:40:26 2009
New Revision: 202001

URL: http://svn.asterisk.org/svn-view/asterisk?view=rev&rev=202001
Log:
be crash resistant, follow coding guidelines

Modified:
    team/group/newcdr/main/cel.c

Modified: team/group/newcdr/main/cel.c
URL: http://svn.asterisk.org/svn-view/asterisk/team/group/newcdr/main/cel.c?view=diff&rev=202001&r1=202000&r2=202001
==============================================================================
--- team/group/newcdr/main/cel.c (original)
+++ team/group/newcdr/main/cel.c Fri Jun 19 15:40:26 2009
@@ -431,16 +431,15 @@
 struct ast_channel* ast_cel_fabricate_channel_from_event(const struct ast_event *event)
 {
 	enum ast_cel_event_type event_type;
-	struct timeval eventtime = {0};
-	const char *userdefname = 0;
+	struct timeval eventtime;
+	const char *userdefname = NULL;
 	struct varshead *headp;
 	struct ast_var_t *newvariable;
 	char timebuf[30];
-
 	struct ast_channel *tchan;
-
 	const char *cid_ani, *cid_rdnis, *cid_name, *cid_num, *cid_dnid;
-	const char *exten, *context, *channame, *appname, *appdata, *accountcode, *peeraccount, *uniqueid, *linkedid, *peer, *userfield, *extra;
+	const char *exten, *context, *channame, *appname, *appdata, *accountcode,
+			*peeraccount, *uniqueid, *linkedid, *peer, *userfield, *extra;
 	unsigned int amaflag;
 
 	/* do not call ast_channel_alloc because this is not really a real channel */
@@ -482,7 +481,9 @@
 	} else {
 		newvariable = ast_var_assign("eventtype", ast_cel_get_type_name(event_type));
 	}
-	AST_LIST_INSERT_HEAD(headp, newvariable, entries);
+	if (newvariable) {
+		AST_LIST_INSERT_HEAD(headp, newvariable, entries);
+	}
 
 	if (ast_strlen_zero(cel_dateformat)) {
 		snprintf(timebuf, sizeof(timebuf), "%ld.%06ld", eventtime.tv_sec, eventtime.tv_usec);
@@ -491,11 +492,14 @@
 		ast_localtime(&eventtime, &tm, NULL);
 		ast_strftime(timebuf, sizeof(timebuf), cel_dateformat, &tm);
 	}
-	newvariable = ast_var_assign("eventtime", timebuf);
-	AST_LIST_INSERT_HEAD(headp, newvariable, entries);
-
-	newvariable = ast_var_assign("eventextra", extra);
-	AST_LIST_INSERT_HEAD(headp, newvariable, entries);
+
+	if ((newvariable = ast_var_assign("eventtime", timebuf))) {
+		AST_LIST_INSERT_HEAD(headp, newvariable, entries);
+	}
+
+	if ((newvariable = ast_var_assign("eventextra", extra))) {
+		AST_LIST_INSERT_HEAD(headp, newvariable, entries);
+	}
 
 	tchan->cid.cid_name = ast_strdup(cid_name);
 	tchan->cid.cid_num = ast_strdup(cid_num);
@@ -505,12 +509,12 @@
 
 	ast_copy_string(tchan->exten, exten, sizeof(tchan->exten));
 	ast_copy_string(tchan->context, context, sizeof(tchan->context));
-	ast_string_field_set(tchan,name,channame);
-	ast_string_field_set(tchan,uniqueid,uniqueid);
-	ast_string_field_set(tchan,linkedid,linkedid);
-	ast_string_field_set(tchan,accountcode,accountcode);
-	ast_string_field_set(tchan,peeraccount,peeraccount);
-	ast_string_field_set(tchan,userfield,userfield);
+	ast_string_field_set(tchan, name, S_OR(channame, ""));
+	ast_string_field_set(tchan, uniqueid, S_OR(uniqueid, ""));
+	ast_string_field_set(tchan, linkedid, S_OR(linkedid, ""));
+	ast_string_field_set(tchan, accountcode, S_OR(accountcode, ""));
+	ast_string_field_set(tchan, peeraccount, S_OR(peeraccount, ""));
+	ast_string_field_set(tchan, userfield, S_OR(userfield, ""));
 
 	pbx_builtin_setvar_helper(tchan, "BRIDGEPEER", peer);
 




More information about the svn-commits mailing list