*** app_managerevent.c 2004-05-11 22:59:05.000000000 +0200 --- myapp_managerevent.c 2004-05-11 22:43:38.000000000 +0200 *************** *** 44,110 **** static int managerevent_exec(struct ast_channel *chan, void *data) { ! struct localuser *u; ! char info[512]; char *eventname; ! char *eventbody; ! if (!data) { ! ast_log(LOG_WARNING, "ManagerEvent requires an argument (eventname|optional event body)\n"); ! return -1; ! } ! ! strncpy(info, (char *)data, strlen((char *)data) + AST_MAX_EXTENSION-1); ! eventname = info; ! if (eventname) { ! eventbody = strchr(eventname, '|'); ! if (eventbody) { ! *eventbody = '\0'; ! eventbody++; ! } ! } ! ! LOCAL_USER_ADD(u); ! ! if(eventbody) { ! ast_log(LOG_DEBUG, "Sending manager event: %s, %s\n", eventname, eventbody); ! manager_event(EVENT_FLAG_CALL, eventname, ! "Channel: %s\r\nUniqueid: %s\r\n%s\r\n", ! chan->name, chan->uniqueid, eventbody); ! } else { ! ast_log(LOG_DEBUG, "Sending manager event: %s\n", eventname); ! manager_event(EVENT_FLAG_CALL, eventname, ! "Channel: %s\r\nUniqueid: %s\r\n", chan->name, chan->uniqueid); ! } ! ! LOCAL_USER_REMOVE(u); ! return 0; } int unload_module(void) { ! STANDARD_HANGUP_LOCALUSERS; ! return ast_unregister_application(app); } int load_module(void) { ! return ast_register_application(app, managerevent_exec, synopsis, descrip); } char *description(void) { ! return tdesc; } int usecount(void) { ! int res; ! STANDARD_USECOUNT(res); ! return res; } char *key() { ! return ASTERISK_GPL_KEY; } --- 44,119 ---- static int managerevent_exec(struct ast_channel *chan, void *data) { ! struct localuser *u; ! char *info; char *eventname; ! char *eventbody; ! if (!data) { ! ast_log(LOG_WARNING, "ManagerEvent requires an argument (eventname|optional event body)\n"); ! return -1; ! } ! ! info = malloc(strln((char *)data); ! ! if(!info) { ! ast_log(LOG_ERROR, "Out of memory\n"); ! return -1; ! } ! ! strncpy(info, (char *)data); ! ! eventname = info; ! if (eventname) { ! eventbody = strchr(eventname, '|'); ! if (eventbody) { ! *eventbody = '\0'; ! eventbody++; ! } ! } ! ! LOCAL_USER_ADD(u); ! ! if(eventbody) { ! ast_log(LOG_DEBUG, "Sending manager event: %s, %s\n", eventname, eventbody); ! manager_event(EVENT_FLAG_CALL, eventname, ! "Channel: %s\r\nUniqueid: %s\r\n%s\r\n", ! chan->name, chan->uniqueid, eventbody); ! } else { ! ast_log(LOG_DEBUG, "Sending manager event: %s\n", eventname); ! manager_event(EVENT_FLAG_CALL, eventname, ! "Channel: %s\r\nUniqueid: %s\r\n", chan->name, chan->uniqueid); ! } ! ! LOCAL_USER_REMOVE(u); ! free(info); ! return 0; } int unload_module(void) { ! STANDARD_HANGUP_LOCALUSERS; ! return ast_unregister_application(app); } int load_module(void) { ! return ast_register_application(app, managerevent_exec, synopsis, descrip); } char *description(void) { ! return tdesc; } int usecount(void) { ! int res; ! STANDARD_USECOUNT(res); ! return res; } char *key() { ! return ASTERISK_GPL_KEY; }