diff --git a/src/modules/rtimer/rtimer_mod.c b/src/modules/rtimer/rtimer_mod.c index cde900845cf..554b243020e 100644 --- a/src/modules/rtimer/rtimer_mod.c +++ b/src/modules/rtimer/rtimer_mod.c @@ -44,9 +44,10 @@ MODULE_VERSION -#define RTIMER_ROUTE_NAME_SIZE 64 +#define RTIMER_ROUTE_NAME_SIZE 64 -typedef struct _stm_route { +typedef struct _stm_route +{ str timer; unsigned int route; char route_name_buf[RTIMER_ROUTE_NAME_SIZE]; @@ -54,7 +55,8 @@ typedef struct _stm_route { struct _stm_route *next; } stm_route_t; -typedef struct _stm_timer { +typedef struct _stm_timer +{ str name; unsigned int mode; unsigned int flags; @@ -63,7 +65,7 @@ typedef struct _stm_timer { struct _stm_timer *next; } stm_timer_t; -#define RTIMER_INTERVAL_USEC (1<<0) +#define RTIMER_INTERVAL_USEC (1 << 0) stm_timer_t *_stm_list = NULL; @@ -71,8 +73,8 @@ stm_timer_t *_stm_list = NULL; static int mod_init(void); static int child_init(int); -int stm_t_param(modparam_t type, void* val); -int stm_e_param(modparam_t type, void* val); +int stm_t_param(modparam_t type, void *val); +int stm_e_param(modparam_t type, void *val); void stm_timer_exec(unsigned int ticks, int worker, void *param); void stm_main_timer_exec(unsigned int ticks, void *param); int stm_get_worker(struct sip_msg *msg, pv_param_t *param, pv_value_t *res); @@ -80,31 +82,24 @@ int stm_get_worker(struct sip_msg *msg, pv_param_t *param, pv_value_t *res); static int default_interval = 120; static pv_export_t rtimer_pvs[] = { - {{"rtimer_worker", (sizeof("rtimer_worker")-1)}, PVT_OTHER, stm_get_worker, 0, 0, 0, 0, 0}, - { {0, 0}, 0, 0, 0, 0, 0, 0, 0 } -}; + {{"rtimer_worker", (sizeof("rtimer_worker") - 1)}, PVT_OTHER, + stm_get_worker, 0, 0, 0, 0, 0}, + {{0, 0}, 0, 0, 0, 0, 0, 0, 0}}; -static param_export_t params[]={ - {"default_interval", INT_PARAM, &default_interval}, - {"timer", PARAM_STRING|USE_FUNC_PARAM, (void*)stm_t_param}, - {"exec", PARAM_STRING|USE_FUNC_PARAM, (void*)stm_e_param}, - {0,0,0} -}; +static param_export_t params[] = { + {"default_interval", INT_PARAM, &default_interval}, + {"timer", PARAM_STRING | USE_FUNC_PARAM, (void *)stm_t_param}, + {"exec", PARAM_STRING | USE_FUNC_PARAM, (void *)stm_e_param}, + {0, 0, 0}}; /** module exports */ -struct module_exports exports= { - "rtimer", - DEFAULT_DLFLAGS, /* dlopen flags */ - 0, - params, - 0, /* exported RPC methods */ - rtimer_pvs, /* exported pseudo-variables */ - 0, - mod_init, /* module initialization function */ - child_init, /* per-child init function */ - 0 -}; +struct module_exports exports = {"rtimer", DEFAULT_DLFLAGS, /* dlopen flags */ + 0, params, 0, /* exported RPC methods */ + rtimer_pvs, /* exported pseudo-variables */ + 0, mod_init, /* module initialization function */ + child_init, /* per-child init function */ + 0}; /** @@ -113,24 +108,21 @@ struct module_exports exports= { static int mod_init(void) { stm_timer_t *it; - if(_stm_list==NULL) + if(_stm_list == NULL) return 0; /* init faked sip msg */ - if(faked_msg_init()<0) - { + if(faked_msg_init() < 0) { LM_ERR("failed to init timer local sip msg\n"); return -1; } /* register timers */ it = _stm_list; - while(it) - { - if(it->mode==0) - { - if(register_timer(stm_main_timer_exec, (void*)it, it->interval)<0) - { + while(it) { + if(it->mode == 0) { + if(register_timer(stm_main_timer_exec, (void *)it, it->interval) + < 0) { LM_ERR("failed to register timer function\n"); return -1; } @@ -149,31 +141,30 @@ static int child_init(int rank) int i; char si_desc[MAX_PT_DESC]; - if(_stm_list==NULL) + if(_stm_list == NULL) return 0; - if (rank!=PROC_MAIN) + if(rank != PROC_MAIN) return 0; it = _stm_list; - while(it) - { - for(i=0; imode; i++) - { - snprintf(si_desc, MAX_PT_DESC, "RTIMER EXEC child=%d timer=%.*s", - i, it->name.len, it->name.s); - if(it->flags & RTIMER_INTERVAL_USEC) - { + while(it) { + for(i = 0; i < it->mode; i++) { + snprintf(si_desc, MAX_PT_DESC, "RTIMER EXEC child=%d timer=%.*s", i, + it->name.len, it->name.s); + if(it->flags & RTIMER_INTERVAL_USEC) { if(fork_basic_utimer_w(PROC_TIMER, si_desc, 1 /*socks flag*/, - stm_timer_exec, i, (void*)it, it->interval - /*usec*/)<0) { + stm_timer_exec, i, (void *)it, it->interval + /*usec*/) + < 0) { LM_ERR("failed to start utimer routine as process\n"); return -1; /* error */ } } else { if(fork_basic_timer_w(PROC_TIMER, si_desc, 1 /*socks flag*/, - stm_timer_exec, i, (void*)it, it->interval - /*sec*/)<0) { + stm_timer_exec, i, (void *)it, it->interval + /*sec*/) + < 0) { LM_ERR("failed to start timer routine as process\n"); return -1; /* error */ } @@ -201,23 +192,23 @@ void stm_timer_exec(unsigned int ticks, int worker, void *param) str evname = str_init("rtimer"); rt_worker = worker; - if(param==NULL) + if(param == NULL) return; - it = (stm_timer_t*)param; - if(it->rt==NULL) + it = (stm_timer_t *)param; + if(it->rt == NULL) return; - for(rt=it->rt; rt; rt=rt->next) - { + for(rt = it->rt; rt; rt = rt->next) { fmsg = faked_msg_next(); - if (exec_pre_script_cb(fmsg, REQUEST_CB_TYPE)==0 ) + if(exec_pre_script_cb(fmsg, REQUEST_CB_TYPE) == 0) continue; /* drop the request */ set_route_type(REQUEST_ROUTE); keng = sr_kemi_eng_get(); - if(keng==NULL) { + if(keng == NULL) { run_top_route(main_rt.rlist[rt->route], fmsg, 0); } else { - if(sr_kemi_route(keng, fmsg, EVENT_ROUTE, &rt->route_name, &evname)<0) { + if(sr_kemi_route(keng, fmsg, EVENT_ROUTE, &rt->route_name, &evname) + < 0) { LM_ERR("error running event route kemi callback [%.*s]\n", rt->route_name.len, rt->route_name.s); } @@ -229,53 +220,50 @@ void stm_timer_exec(unsigned int ticks, int worker, void *param) int stm_t_param(modparam_t type, void *val) { - param_t* params_list = NULL; + param_t *params_list = NULL; param_hooks_t phooks; - param_t *pit=NULL; + param_t *pit = NULL; stm_timer_t tmp; stm_timer_t *nt; str s; - if(val==NULL) + if(val == NULL) return -1; - s.s = (char*)val; + s.s = (char *)val; s.len = strlen(s.s); - if(s.s[s.len-1]==';') + if(s.s[s.len - 1] == ';') s.len--; - if (parse_params(&s, CLASS_ANY, &phooks, ¶ms_list)<0) + if(parse_params(&s, CLASS_ANY, &phooks, ¶ms_list) < 0) return -1; memset(&tmp, 0, sizeof(stm_timer_t)); - for (pit = params_list; pit; pit=pit->next) - { - if (pit->name.len==4 - && strncasecmp(pit->name.s, "name", 4)==0) { + for(pit = params_list; pit; pit = pit->next) { + if(pit->name.len == 4 && strncasecmp(pit->name.s, "name", 4) == 0) { tmp.name = pit->body; - } else if(pit->name.len==4 - && strncasecmp(pit->name.s, "mode", 4)==0) { - if(tmp.mode==0) { - if (str2int(&pit->body, &tmp.mode) < 0) { + } else if(pit->name.len == 4 + && strncasecmp(pit->name.s, "mode", 4) == 0) { + if(tmp.mode == 0) { + if(str2int(&pit->body, &tmp.mode) < 0) { LM_ERR("invalid mode: %.*s\n", pit->body.len, pit->body.s); return -1; } } - } else if(pit->name.len==8 - && strncasecmp(pit->name.s, "interval", 8)==0) { - if(pit->body.s[pit->body.len-1]=='u' - || pit->body.s[pit->body.len-1]=='U') { + } else if(pit->name.len == 8 + && strncasecmp(pit->name.s, "interval", 8) == 0) { + if(pit->body.s[pit->body.len - 1] == 'u' + || pit->body.s[pit->body.len - 1] == 'U') { pit->body.len--; tmp.flags |= RTIMER_INTERVAL_USEC; - if (tmp.mode==0) { + if(tmp.mode == 0) { tmp.mode = 1; } } - if (str2int(&pit->body, &tmp.interval) < 0) { + if(str2int(&pit->body, &tmp.interval) < 0) { LM_ERR("invalid interval: %.*s\n", pit->body.len, pit->body.s); - return -1; + return -1; } } } - if(tmp.name.s==NULL) - { + if(tmp.name.s == NULL) { LM_ERR("invalid timer name\n"); free_params(params_list); return -1; @@ -283,24 +271,22 @@ int stm_t_param(modparam_t type, void *val) /* check for same timer */ nt = _stm_list; while(nt) { - if(nt->name.len==tmp.name.len - && strncasecmp(nt->name.s, tmp.name.s, tmp.name.len)==0) + if(nt->name.len == tmp.name.len + && strncasecmp(nt->name.s, tmp.name.s, tmp.name.len) == 0) break; nt = nt->next; } - if(nt!=NULL) - { - LM_ERR("duplicate timer with same name: %.*s\n", - tmp.name.len, tmp.name.s); + if(nt != NULL) { + LM_ERR("duplicate timer with same name: %.*s\n", tmp.name.len, + tmp.name.s); free_params(params_list); return -1; } - if(tmp.interval==0) + if(tmp.interval == 0) tmp.interval = default_interval; - nt = (stm_timer_t*)pkg_malloc(sizeof(stm_timer_t)); - if(nt==0) - { + nt = (stm_timer_t *)pkg_malloc(sizeof(stm_timer_t)); + if(nt == 0) { PKG_MEM_ERROR; free_params(params_list); return -1; @@ -309,42 +295,40 @@ int stm_t_param(modparam_t type, void *val) nt->next = _stm_list; _stm_list = nt; free_params(params_list); - LM_INFO("created rtimer name=%.*s interval=%d mode=%d\n", tmp.name.len, tmp.name.s, tmp.interval, tmp.mode); + LM_INFO("created rtimer name=%.*s interval=%d mode=%d\n", tmp.name.len, + tmp.name.s, tmp.interval, tmp.mode); return 0; } int stm_e_param(modparam_t type, void *val) { - param_t* params_list = NULL; + param_t *params_list = NULL; param_hooks_t phooks; - param_t *pit=NULL; + param_t *pit = NULL; stm_route_t tmp; stm_route_t *rt; stm_timer_t *nt; str s; char c; - if(val==NULL) + if(val == NULL) return -1; - s.s = (char*)val; + s.s = (char *)val; s.len = strlen(s.s); - if(s.s[s.len-1]==';') + if(s.s[s.len - 1] == ';') s.len--; - if (parse_params(&s, CLASS_ANY, &phooks, ¶ms_list)<0) + if(parse_params(&s, CLASS_ANY, &phooks, ¶ms_list) < 0) return -1; memset(&tmp, 0, sizeof(stm_route_t)); - for (pit = params_list; pit; pit=pit->next) - { - if (pit->name.len==5 - && strncasecmp(pit->name.s, "timer", 5)==0) { + for(pit = params_list; pit; pit = pit->next) { + if(pit->name.len == 5 && strncasecmp(pit->name.s, "timer", 5) == 0) { tmp.timer = pit->body; - } else if(pit->name.len==5 - && strncasecmp(pit->name.s, "route", 5)==0) { + } else if(pit->name.len == 5 + && strncasecmp(pit->name.s, "route", 5) == 0) { s = pit->body; } } - if(tmp.timer.s==NULL) - { + if(tmp.timer.s == NULL) { LM_ERR("invalid timer name\n"); free_params(params_list); return -1; @@ -352,21 +336,19 @@ int stm_e_param(modparam_t type, void *val) /* get the timer */ nt = _stm_list; while(nt) { - if(nt->name.len==tmp.timer.len - && strncasecmp(nt->name.s, tmp.timer.s, tmp.timer.len)==0) + if(nt->name.len == tmp.timer.len + && strncasecmp(nt->name.s, tmp.timer.s, tmp.timer.len) == 0) break; nt = nt->next; } - if(nt==NULL) - { - LM_ERR("timer not found - name: %.*s\n", - tmp.timer.len, tmp.timer.s); + if(nt == NULL) { + LM_ERR("timer not found - name: %.*s\n", tmp.timer.len, tmp.timer.s); free_params(params_list); return -1; } c = s.s[s.len]; s.s[s.len] = '\0'; - if(s.len>=RTIMER_ROUTE_NAME_SIZE-1) { + if(s.len >= RTIMER_ROUTE_NAME_SIZE - 1) { LM_ERR("route block name is too long [%.*s] (%d)\n", s.len, s.s, s.len); free_params(params_list); return -1; @@ -377,16 +359,14 @@ int stm_e_param(modparam_t type, void *val) tmp.route_name.s = tmp.route_name_buf; tmp.route_name.len = s.len; s.s[s.len] = c; - if(tmp.route == -1) - { + if(tmp.route == -1) { LM_ERR("invalid route: %.*s\n", s.len, s.s); free_params(params_list); return -1; } - rt = (stm_route_t*)pkg_malloc(sizeof(stm_route_t)); - if(rt==0) - { + rt = (stm_route_t *)pkg_malloc(sizeof(stm_route_t)); + if(rt == 0) { PKG_MEM_ERROR; free_params(params_list); return -1;