diff --git a/src/modules/app_mono/app_mono_api.c b/src/modules/app_mono/app_mono_api.c index 2343b1d922d..6ce42f18933 100644 --- a/src/modules/app_mono/app_mono_api.c +++ b/src/modules/app_mono/app_mono_api.c @@ -75,14 +75,12 @@ int sr_mono_load_script(char *script) { sr_mono_load_t *mi; - if(_sr_mono_load_list != NULL) - { + if(_sr_mono_load_list != NULL) { LM_ERR("only one assembly can be loaded\n"); return -1; } - mi = (sr_mono_load_t*)pkg_malloc(sizeof(sr_mono_load_t)); - if(mi==NULL) - { + mi = (sr_mono_load_t *)pkg_malloc(sizeof(sr_mono_load_t)); + if(mi == NULL) { PKG_MEM_ERROR; return -1; } @@ -108,8 +106,8 @@ int sr_mono_assembly_loaded(void) */ int sr_mono_register_module(char *mname) { -// if(mono_sr_exp_register_mod(mname)==0) -// return 0; + // if(mono_sr_exp_register_mod(mname)==0) + // return 0; return -1; } @@ -119,8 +117,8 @@ int sr_mono_register_module(char *mname) int mono_sr_init_mod(void) { memset(&_sr_M_env, 0, sizeof(sr_mono_env_t)); -// if(mono_sr_exp_init_mod()<0) -// return -1; + // if(mono_sr_exp_init_mod()<0) + // return -1; return 0; } @@ -134,17 +132,15 @@ int mono_sr_init_load(void) LM_DBG("no assembly to load\n"); return 0; } - mono_config_parse (NULL); + mono_config_parse(NULL); mi = _sr_mono_load_list; - if(mi && mi->domain != NULL) - { + if(mi && mi->domain != NULL) { LM_ERR("worker mono environment already initialized\n"); return 0; } - while(mi!=NULL) - { - mi->domain = mono_jit_init (mi->script); - if (mi->domain==NULL) { + while(mi != NULL) { + mi->domain = mono_jit_init(mi->script); + if(mi->domain == NULL) { LM_ERR("failed to init domain for: %s\n", mi->script); return -1; } @@ -153,7 +149,7 @@ int mono_sr_init_load(void) sr_mono_load_class_hdr(); mi->assembly = mono_domain_assembly_open(mi->domain, mi->script); - if (mi->assembly==NULL) { + if(mi->assembly == NULL) { LM_ERR("failed to open assembly: %s\n", mi->script); return -1; } @@ -185,7 +181,7 @@ int mono_sr_init_child(void) * if you are planning on using the dllmaps defined on the * system configuration */ - mono_config_parse (NULL); + mono_config_parse(NULL); return 0; } @@ -203,7 +199,7 @@ void mono_sr_destroy(void) */ int mono_sr_initialized(void) { - if(_sr_M_env.domain==NULL) + if(_sr_M_env.domain == NULL) return 1; return 1; @@ -220,19 +216,19 @@ int app_mono_exec(struct sip_msg *msg, char *script, char *param) argc = 1; argv[0] = script; - if(param!=NULL) { + if(param != NULL) { argc++; argv[1] = param; } LM_DBG("executing Mono assembly: [[%s]]\n", argv[0]); _sr_M_env.msg = msg; - mono_config_parse (NULL); + mono_config_parse(NULL); /* * mono_jit_init() creates a domain: each assembly is * loaded and run in a MonoDomain. */ - _sr_M_env.domain = mono_jit_init (argv[0]); + _sr_M_env.domain = mono_jit_init(argv[0]); /* * We add our special internal functions, so that C# code * can call us back. @@ -242,7 +238,7 @@ int app_mono_exec(struct sip_msg *msg, char *script, char *param) sr_mono_load_class_hdr(); _sr_M_env.assembly = mono_domain_assembly_open(_sr_M_env.domain, argv[0]); - if (_sr_M_env.assembly==NULL) { + if(_sr_M_env.assembly == NULL) { ret = -1; goto done; } @@ -259,7 +255,7 @@ int app_mono_exec(struct sip_msg *msg, char *script, char *param) mono_jit_cleanup(_sr_M_env.domain); memset(&_sr_M_env, 0, sizeof(sr_mono_env_t)); - return (ret==0)?1:-1; + return (ret == 0) ? 1 : -1; } /** @@ -281,7 +277,7 @@ int app_mono_run(struct sip_msg *msg, char *arg) _sr_M_env.domain = mi->domain; _sr_M_env.assembly = mi->assembly; - if (_sr_M_env.assembly==NULL) { + if(_sr_M_env.assembly == NULL) { LM_DBG("empty assembly\n"); memset(&_sr_M_env, 0, sizeof(sr_mono_env_t)); return -1; @@ -289,7 +285,7 @@ int app_mono_run(struct sip_msg *msg, char *arg) mono_domain_set(_sr_M_env.domain, 0); argc = 1; argv[0] = mi->script; - if(arg!=NULL) { + if(arg != NULL) { argc++; argv[1] = arg; } @@ -298,32 +294,36 @@ int app_mono_run(struct sip_msg *msg, char *arg) LM_DBG("returned code from mono environment: %d\n", ret); memset(&_sr_M_env, 0, sizeof(sr_mono_env_t)); - return (ret==0)?1:-1; + return (ret == 0) ? 1 : -1; } /** * */ -static MonoString* sr_mono_api_version() { - return mono_string_new (mono_domain_get(), SRVERSION); +static MonoString *sr_mono_api_version() +{ + return mono_string_new(mono_domain_get(), SRVERSION); } -static void sr_mono_log(int level, MonoString *text) { +static void sr_mono_log(int level, MonoString *text) +{ char *logmsg; logmsg = mono_string_to_utf8(text); LOG(level, "%s", logmsg); mono_free(logmsg); } -static void sr_mono_err(MonoString *text) { +static void sr_mono_err(MonoString *text) +{ char *logmsg; logmsg = mono_string_to_utf8(text); LOG(L_ERR, "%s", logmsg); mono_free(logmsg); } -static void sr_mono_dbg(MonoString *text) { +static void sr_mono_dbg(MonoString *text) +{ char *logmsg; logmsg = mono_string_to_utf8(text); LOG(L_DBG, "%s", logmsg); @@ -339,49 +339,48 @@ static int sr_mono_modf(MonoString *nfunc) int mod_type; struct run_act_ctx ra_ctx; struct action *act = NULL; - ksr_cmd_export_t* expf; + ksr_cmd_export_t *expf; sr_mono_env_t *env_M; char *func = NULL; env_M = sr_mono_env_get(); - if(env_M->msg==NULL) + if(env_M->msg == NULL) goto error; func = mono_string_to_utf8(nfunc); expf = find_export_record(func, 0, 0); - if (expf==NULL) { + if(expf == NULL) { LM_ERR("function '%s' is not available\n", func); goto error; } /* check fixups */ - if (expf->fixup!=NULL && expf->free_fixup==NULL) { + if(expf->fixup != NULL && expf->free_fixup == NULL) { LM_ERR("function '%s' has fixup - cannot be used\n", func); goto error; } mod_type = MODULE0_T; - act = mk_action(mod_type, 1 /* number of (type, value) pairs */, - MODEXP_ST, expf, /* function */ - NUMBER_ST, 0, /* parameter number */ - STRING_ST, NULL, /* param. 1 */ - STRING_ST, NULL, /* param. 2 */ - STRING_ST, NULL, /* param. 3 */ - STRING_ST, NULL, /* param. 4 */ - STRING_ST, NULL, /* param. 5 */ - STRING_ST, NULL /* param. 6 */ - ); - - if (act==NULL) { + act = mk_action(mod_type, 1 /* number of (type, value) pairs */, MODEXP_ST, + expf, /* function */ + NUMBER_ST, 0, /* parameter number */ + STRING_ST, NULL, /* param. 1 */ + STRING_ST, NULL, /* param. 2 */ + STRING_ST, NULL, /* param. 3 */ + STRING_ST, NULL, /* param. 4 */ + STRING_ST, NULL, /* param. 5 */ + STRING_ST, NULL /* param. 6 */ + ); + + if(act == NULL) { LM_ERR("action structure could not be created for '%s'\n", func); goto error; } /* handle fixups */ - if (expf->fixup) { + if(expf->fixup) { /* no parameters */ - if(expf->fixup(0, 0)<0) - { + if(expf->fixup(0, 0) < 0) { LM_ERR("Error in fixup (0) for '%s'\n", func); goto error; } @@ -393,78 +392,72 @@ static int sr_mono_modf(MonoString *nfunc) return ret; error: - if(func!=NULL) + if(func != NULL) mono_free(func); - if(act!=NULL) + if(act != NULL) pkg_free(act); return -127; } static const sr_M_export_t _sr_M_export_core[] = { - {"SR.Core::APIVersion", sr_mono_api_version}, - {"SR.Core::Log", sr_mono_log}, - {"SR.Core::Err", sr_mono_err}, - {"SR.Core::Dbg", sr_mono_dbg}, - {"SR.Core::ModF", sr_mono_modf}, - {NULL, NULL} -}; + {"SR.Core::APIVersion", sr_mono_api_version}, + {"SR.Core::Log", sr_mono_log}, {"SR.Core::Err", sr_mono_err}, + {"SR.Core::Dbg", sr_mono_dbg}, {"SR.Core::ModF", sr_mono_modf}, + {NULL, NULL}}; int sr_mono_load_class_core() { int i; - for(i=0; _sr_M_export_core[i].name!=NULL; i++) - mono_add_internal_call(_sr_M_export_core[i].name, _sr_M_export_core[i].method); + for(i = 0; _sr_M_export_core[i].name != NULL; i++) + mono_add_internal_call( + _sr_M_export_core[i].name, _sr_M_export_core[i].method); return 0; } /** * */ -static MonoString *sr_mono_pv_gets (MonoString *pv) +static MonoString *sr_mono_pv_gets(MonoString *pv) { str pvn = {0}; pv_spec_t *pvs; - pv_value_t val; + pv_value_t val; sr_mono_env_t *env_M; int pl; env_M = sr_mono_env_get(); pvn.s = mono_string_to_utf8(pv); - if(pvn.s==NULL || env_M->msg==NULL) + if(pvn.s == NULL || env_M->msg == NULL) goto error; pvn.len = strlen(pvn.s); LM_DBG("pv get: %s\n", pvn.s); pl = pv_locate_name(&pvn); - if(pl != pvn.len) - { + if(pl != pvn.len) { LM_ERR("invalid pv [%s] (%d/%d)\n", pvn.s, pl, pvn.len); goto error; } pvs = pv_cache_get(&pvn); - if(pvs==NULL) - { + if(pvs == NULL) { LM_ERR("cannot get pv spec for [%s]\n", pvn.s); goto error; } memset(&val, 0, sizeof(pv_value_t)); - if(pv_get_spec_value(env_M->msg, pvs, &val) != 0) - { + if(pv_get_spec_value(env_M->msg, pvs, &val) != 0) { LM_ERR("unable to get pv value for [%s]\n", pvn.s); goto error; } - if((val.flags&PV_VAL_NULL) || !(val.flags&PV_VAL_STR)) - { + if((val.flags & PV_VAL_NULL) || !(val.flags & PV_VAL_STR)) { mono_free(pvn.s); return NULL; } mono_free(pvn.s); - return mono_string_new_len (mono_domain_get(), val.rs.s, val.rs.len); + return mono_string_new_len(mono_domain_get(), val.rs.s, val.rs.len); error: - if(pvn.s!=NULL) + if(pvn.s != NULL) mono_free(pvn.s); return NULL; } @@ -472,42 +465,38 @@ static MonoString *sr_mono_pv_gets (MonoString *pv) /** * */ -static int sr_mono_pv_geti (MonoString *pv) +static int sr_mono_pv_geti(MonoString *pv) { str pvn = {0}; pv_spec_t *pvs; - pv_value_t val; + pv_value_t val; int pl; sr_mono_env_t *env_M; env_M = sr_mono_env_get(); pvn.s = mono_string_to_utf8(pv); - if(pvn.s==NULL || env_M->msg==NULL) + if(pvn.s == NULL || env_M->msg == NULL) goto error; pvn.len = strlen(pvn.s); LM_DBG("pv get: %s\n", pvn.s); pl = pv_locate_name(&pvn); - if(pl != pvn.len) - { + if(pl != pvn.len) { LM_ERR("invalid pv [%s] (%d/%d)\n", pvn.s, pl, pvn.len); goto error; } pvs = pv_cache_get(&pvn); - if(pvs==NULL) - { + if(pvs == NULL) { LM_ERR("cannot get pv spec for [%s]\n", pvn.s); goto error; } memset(&val, 0, sizeof(pv_value_t)); - if(pv_get_spec_value(env_M->msg, pvs, &val) != 0) - { + if(pv_get_spec_value(env_M->msg, pvs, &val) != 0) { LM_ERR("unable to get pv value for [%s]\n", pvn.s); goto error; } - if((val.flags&PV_VAL_NULL) || !(val.flags&PV_TYPE_INT)) - { + if((val.flags & PV_VAL_NULL) || !(val.flags & PV_TYPE_INT)) { mono_free(pvn.s); return 0; } @@ -515,7 +504,7 @@ static int sr_mono_pv_geti (MonoString *pv) return val.ri; error: - if(pvn.s!=NULL) + if(pvn.s != NULL) mono_free(pvn.s); return 0; } @@ -524,40 +513,37 @@ static int sr_mono_pv_geti (MonoString *pv) /** * */ -static int sr_mono_pv_seti (MonoString *pv, int iv) +static int sr_mono_pv_seti(MonoString *pv, int iv) { str pvn = {0}; pv_spec_t *pvs; - pv_value_t val; + pv_value_t val; int pl; sr_mono_env_t *env_M; env_M = sr_mono_env_get(); pvn.s = mono_string_to_utf8(pv); - if(pvn.s==NULL || env_M->msg==NULL) + if(pvn.s == NULL || env_M->msg == NULL) goto error; memset(&val, 0, sizeof(pv_value_t)); val.ri = iv; - val.flags |= PV_TYPE_INT|PV_VAL_INT; - + val.flags |= PV_TYPE_INT | PV_VAL_INT; + pvn.len = strlen(pvn.s); LM_DBG("pv set: %s\n", pvn.s); pl = pv_locate_name(&pvn); - if(pl != pvn.len) - { + if(pl != pvn.len) { LM_ERR("invalid pv [%s] (%d/%d)\n", pvn.s, pl, pvn.len); goto error; } pvs = pv_cache_get(&pvn); - if(pvs==NULL) - { + if(pvs == NULL) { LM_ERR("cannot get pv spec for [%s]\n", pvn.s); goto error; } - if(pv_set_spec_value(env_M->msg, pvs, 0, &val)<0) - { + if(pv_set_spec_value(env_M->msg, pvs, 0, &val) < 0) { LM_ERR("unable to set pv [%s]\n", pvn.s); goto error; } @@ -565,7 +551,7 @@ static int sr_mono_pv_seti (MonoString *pv, int iv) mono_free(pvn.s); return 0; error: - if(pvn.s!=NULL) + if(pvn.s != NULL) mono_free(pvn.s); return -1; } @@ -573,18 +559,18 @@ static int sr_mono_pv_seti (MonoString *pv, int iv) /** * */ -static int sr_mono_pv_sets (MonoString *pv, MonoString *sv) +static int sr_mono_pv_sets(MonoString *pv, MonoString *sv) { str pvn = {0}; pv_spec_t *pvs; - pv_value_t val; + pv_value_t val; int pl; sr_mono_env_t *env_M; env_M = sr_mono_env_get(); pvn.s = mono_string_to_utf8(pv); - if(pvn.s==NULL || env_M->msg==NULL) + if(pvn.s == NULL || env_M->msg == NULL) goto error; memset(&val, 0, sizeof(pv_value_t)); @@ -594,23 +580,20 @@ static int sr_mono_pv_sets (MonoString *pv, MonoString *sv) val.rs.len = strlen(val.rs.s); val.flags |= PV_VAL_STR; - + pvn.len = strlen(pvn.s); LM_DBG("pv set: %s\n", pvn.s); pl = pv_locate_name(&pvn); - if(pl != pvn.len) - { + if(pl != pvn.len) { LM_ERR("invalid pv [%s] (%d/%d)\n", pvn.s, pl, pvn.len); goto error; } pvs = pv_cache_get(&pvn); - if(pvs==NULL) - { + if(pvs == NULL) { LM_ERR("cannot get pv spec for [%s]\n", pvn.s); goto error; } - if(pv_set_spec_value(env_M->msg, pvs, 0, &val)<0) - { + if(pv_set_spec_value(env_M->msg, pvs, 0, &val) < 0) { LM_ERR("unable to set pv [%s]\n", pvn.s); return -1; } @@ -618,7 +601,7 @@ static int sr_mono_pv_sets (MonoString *pv, MonoString *sv) mono_free(pvn.s); return 0; error: - if(pvn.s!=NULL) + if(pvn.s != NULL) mono_free(pvn.s); return -1; } @@ -626,38 +609,35 @@ static int sr_mono_pv_sets (MonoString *pv, MonoString *sv) /** * */ -static int sr_mono_pv_unset (MonoString *pv) +static int sr_mono_pv_unset(MonoString *pv) { str pvn = {0}; pv_spec_t *pvs; - pv_value_t val; + pv_value_t val; int pl; sr_mono_env_t *env_M; env_M = sr_mono_env_get(); pvn.s = mono_string_to_utf8(pv); - if(pvn.s==NULL || env_M->msg==NULL) + if(pvn.s == NULL || env_M->msg == NULL) goto error; pvn.len = strlen(pvn.s); LM_DBG("pv unset: %s\n", pvn.s); pl = pv_locate_name(&pvn); - if(pl != pvn.len) - { + if(pl != pvn.len) { LM_ERR("invalid pv [%s] (%d/%d)\n", pvn.s, pl, pvn.len); goto error; } pvs = pv_cache_get(&pvn); - if(pvs==NULL) - { + if(pvs == NULL) { LM_ERR("cannot get pv spec for [%s]\n", pvn.s); goto error; } memset(&val, 0, sizeof(pv_value_t)); val.flags |= PV_VAL_NULL; - if(pv_set_spec_value(env_M->msg, pvs, 0, &val)<0) - { + if(pv_set_spec_value(env_M->msg, pvs, 0, &val) < 0) { LM_ERR("unable to unset pv [%s]\n", pvn.s); goto error; } @@ -665,7 +645,7 @@ static int sr_mono_pv_unset (MonoString *pv) mono_free(pvn.s); return 0; error: - if(pvn.s!=NULL) + if(pvn.s != NULL) mono_free(pvn.s); return -1; } @@ -673,48 +653,44 @@ static int sr_mono_pv_unset (MonoString *pv) /** * */ -static int sr_mono_pv_is_null (MonoString *pv) +static int sr_mono_pv_is_null(MonoString *pv) { str pvn = {0}; pv_spec_t *pvs; - pv_value_t val; + pv_value_t val; int pl; sr_mono_env_t *env_M; env_M = sr_mono_env_get(); pvn.s = mono_string_to_utf8(pv); - if(pvn.s==NULL || env_M->msg==NULL) + if(pvn.s == NULL || env_M->msg == NULL) goto error; pvn.len = strlen(pvn.s); LM_DBG("pv is null test: %s\n", pvn.s); pl = pv_locate_name(&pvn); - if(pl != pvn.len) - { + if(pl != pvn.len) { LM_ERR("invalid pv [%s] (%d/%d)\n", pvn.s, pl, pvn.len); goto error; } pvs = pv_cache_get(&pvn); - if(pvs==NULL) - { + if(pvs == NULL) { LM_ERR("cannot get pv spec for [%s]\n", pvn.s); goto error; } memset(&val, 0, sizeof(pv_value_t)); - if(pv_get_spec_value(env_M->msg, pvs, &val) != 0) - { + if(pv_get_spec_value(env_M->msg, pvs, &val) != 0) { LM_INFO("unable to get pv value for [%s]\n", pvn.s); goto error; } mono_free(pvn.s); - if(val.flags&PV_VAL_NULL) - { + if(val.flags & PV_VAL_NULL) { return 1; } return 0; error: - if(pvn.s!=NULL) + if(pvn.s != NULL) mono_free(pvn.s); return -1; } @@ -723,20 +699,17 @@ static int sr_mono_pv_is_null (MonoString *pv) * */ static const sr_M_export_t _sr_M_export_pv[] = { - {"SR.PV::GetS", sr_mono_pv_gets}, - {"SR.PV::GetI", sr_mono_pv_geti}, - {"SR.PV::SetI", sr_mono_pv_seti}, - {"SR.PV::SetS", sr_mono_pv_sets}, - {"SR.PV::Unset", sr_mono_pv_unset}, - {"SR.PV::IsNull", sr_mono_pv_is_null}, - {NULL, NULL} -}; + {"SR.PV::GetS", sr_mono_pv_gets}, {"SR.PV::GetI", sr_mono_pv_geti}, + {"SR.PV::SetI", sr_mono_pv_seti}, {"SR.PV::SetS", sr_mono_pv_sets}, + {"SR.PV::Unset", sr_mono_pv_unset}, + {"SR.PV::IsNull", sr_mono_pv_is_null}, {NULL, NULL}}; int sr_mono_load_class_pv() { int i; - for(i=0; _sr_M_export_pv[i].name!=NULL; i++) - mono_add_internal_call(_sr_M_export_pv[i].name, _sr_M_export_pv[i].method); + for(i = 0; _sr_M_export_pv[i].name != NULL; i++) + mono_add_internal_call( + _sr_M_export_pv[i].name, _sr_M_export_pv[i].method); return 0; } @@ -744,9 +717,9 @@ int sr_mono_load_class_pv() /** * */ -static int sr_mono_hdr_append (MonoString *hv) +static int sr_mono_hdr_append(MonoString *hv) { - struct lump* anchor; + struct lump *anchor; struct hdr_field *hf; char *hdr; str txt = {0}; @@ -755,31 +728,29 @@ static int sr_mono_hdr_append (MonoString *hv) env_M = sr_mono_env_get(); txt.s = mono_string_to_utf8(hv); - if(txt.s==NULL || env_M->msg==NULL) + if(txt.s == NULL || env_M->msg == NULL) goto error; txt.len = strlen(txt.s); LM_DBG("append hf: %s\n", txt.s); - if (parse_headers(env_M->msg, HDR_EOH_F, 0) == -1) - { + if(parse_headers(env_M->msg, HDR_EOH_F, 0) == -1) { LM_ERR("error while parsing message\n"); goto error; } hf = env_M->msg->last_header; - hdr = (char*)pkg_malloc(txt.len+1); - if(hdr==NULL) - { + hdr = (char *)pkg_malloc(txt.len + 1); + if(hdr == NULL) { PKG_MEM_ERROR; goto error; } memcpy(hdr, txt.s, txt.len); hdr[txt.len] = '\0'; - anchor = anchor_lump(env_M->msg, - hf->name.s + hf->len - env_M->msg->buf, 0, 0); - if((anchor==NULL) || (insert_new_lump_before(anchor, hdr, txt.len, 0) == 0)) - { + anchor = anchor_lump( + env_M->msg, hf->name.s + hf->len - env_M->msg->buf, 0, 0); + if((anchor == NULL) + || (insert_new_lump_before(anchor, hdr, txt.len, 0) == 0)) { LM_ERR("can't insert lump\n"); pkg_free(hdr); goto error; @@ -788,7 +759,7 @@ static int sr_mono_hdr_append (MonoString *hv) return 0; error: - if(txt.s!=NULL) + if(txt.s != NULL) mono_free(txt.s); return -1; } @@ -796,9 +767,9 @@ static int sr_mono_hdr_append (MonoString *hv) /** * */ -static int sr_mono_hdr_remove (MonoString *hv) +static int sr_mono_hdr_remove(MonoString *hv) { - struct lump* anchor; + struct lump *anchor; struct hdr_field *hf; str hname; str txt = {0}; @@ -807,27 +778,24 @@ static int sr_mono_hdr_remove (MonoString *hv) env_M = sr_mono_env_get(); txt.s = mono_string_to_utf8(hv); - if(txt.s==NULL || env_M->msg==NULL) + if(txt.s == NULL || env_M->msg == NULL) goto error; txt.len = strlen(txt.s); LM_DBG("remove hf: %s\n", txt.s); - if (parse_headers(env_M->msg, HDR_EOH_F, 0) == -1) { + if(parse_headers(env_M->msg, HDR_EOH_F, 0) == -1) { LM_ERR("error while parsing message\n"); goto error; } hname.s = txt.s; hname.len = txt.len; - for (hf=env_M->msg->headers; hf; hf=hf->next) - { - if (cmp_hdrname_str(&hf->name, &hname)==0) - { - anchor=del_lump(env_M->msg, - hf->name.s - env_M->msg->buf, hf->len, 0); - if (anchor==0) - { + for(hf = env_M->msg->headers; hf; hf = hf->next) { + if(cmp_hdrname_str(&hf->name, &hname) == 0) { + anchor = del_lump( + env_M->msg, hf->name.s - env_M->msg->buf, hf->len, 0); + if(anchor == 0) { LM_ERR("cannot remove hdr %s\n", txt.s); goto error; } @@ -837,7 +805,7 @@ static int sr_mono_hdr_remove (MonoString *hv) return 0; error: - if(txt.s!=NULL) + if(txt.s != NULL) mono_free(txt.s); return -1; } @@ -845,9 +813,9 @@ static int sr_mono_hdr_remove (MonoString *hv) /** * */ -static int sr_mono_hdr_insert (MonoString *hv) +static int sr_mono_hdr_insert(MonoString *hv) { - struct lump* anchor; + struct lump *anchor; struct hdr_field *hf; char *hdr; str txt = {0}; @@ -856,25 +824,24 @@ static int sr_mono_hdr_insert (MonoString *hv) env_M = sr_mono_env_get(); txt.s = mono_string_to_utf8(hv); - if(txt.s==NULL || env_M->msg==NULL) + if(txt.s == NULL || env_M->msg == NULL) goto error; txt.len = strlen(txt.s); LM_DBG("insert hf: %s\n", txt.s); hf = env_M->msg->headers; - hdr = (char*)pkg_malloc(txt.len+1); - if(hdr==NULL) - { + hdr = (char *)pkg_malloc(txt.len + 1); + if(hdr == NULL) { PKG_MEM_ERROR; goto error; } memcpy(hdr, txt.s, txt.len); hdr[txt.len] = '\0'; - anchor = anchor_lump(env_M->msg, - hf->name.s + hf->len - env_M->msg->buf, 0, 0); - if((anchor==NULL) || (insert_new_lump_before(anchor, hdr, txt.len, 0) == 0)) - { + anchor = anchor_lump( + env_M->msg, hf->name.s + hf->len - env_M->msg->buf, 0, 0); + if((anchor == NULL) + || (insert_new_lump_before(anchor, hdr, txt.len, 0) == 0)) { LM_ERR("can't insert lump\n"); pkg_free(hdr); goto error; @@ -883,7 +850,7 @@ static int sr_mono_hdr_insert (MonoString *hv) return 0; error: - if(txt.s!=NULL) + if(txt.s != NULL) mono_free(txt.s); return -1; } @@ -891,7 +858,7 @@ static int sr_mono_hdr_insert (MonoString *hv) /** * */ -static int sr_mono_hdr_append_to_reply (MonoString *hv) +static int sr_mono_hdr_append_to_reply(MonoString *hv) { str txt = {0}; sr_mono_env_t *env_M; @@ -899,15 +866,14 @@ static int sr_mono_hdr_append_to_reply (MonoString *hv) env_M = sr_mono_env_get(); txt.s = mono_string_to_utf8(hv); - if(txt.s==NULL || env_M->msg==NULL) + if(txt.s == NULL || env_M->msg == NULL) goto error; txt.len = strlen(txt.s); LM_DBG("append to reply: %s\n", txt.s); - if(add_lump_rpl(env_M->msg, txt.s, txt.len, LUMP_RPL_HDR)==0) - { + if(add_lump_rpl(env_M->msg, txt.s, txt.len, LUMP_RPL_HDR) == 0) { LM_ERR("unable to add reply lump\n"); goto error; } @@ -916,7 +882,7 @@ static int sr_mono_hdr_append_to_reply (MonoString *hv) return 0; error: - if(txt.s!=NULL) + if(txt.s != NULL) mono_free(txt.s); return -1; } @@ -926,19 +892,16 @@ static int sr_mono_hdr_append_to_reply (MonoString *hv) * */ static const sr_M_export_t _sr_M_export_hdr[] = { - {"SR.HDR::Append", sr_mono_hdr_append}, - {"SR.HDR::Remove", sr_mono_hdr_remove}, - {"SR.HDR::Insert", sr_mono_hdr_insert}, - {"SR.HDR::AppendToReply", sr_mono_hdr_append_to_reply}, - {NULL, NULL} -}; + {"SR.HDR::Append", sr_mono_hdr_append}, + {"SR.HDR::Remove", sr_mono_hdr_remove}, + {"SR.HDR::Insert", sr_mono_hdr_insert}, + {"SR.HDR::AppendToReply", sr_mono_hdr_append_to_reply}, {NULL, NULL}}; int sr_mono_load_class_hdr() { int i; - for(i=0; _sr_M_export_hdr[i].name!=NULL; i++) - mono_add_internal_call(_sr_M_export_hdr[i].name, _sr_M_export_hdr[i].method); + for(i = 0; _sr_M_export_hdr[i].name != NULL; i++) + mono_add_internal_call( + _sr_M_export_hdr[i].name, _sr_M_export_hdr[i].method); return 0; } - - diff --git a/src/modules/app_mono/app_mono_api.h b/src/modules/app_mono/app_mono_api.h index 77670be97c9..acc3a526198 100644 --- a/src/modules/app_mono/app_mono_api.h +++ b/src/modules/app_mono/app_mono_api.h @@ -54,10 +54,10 @@ int sr_mono_register_module(char *mname); int app_mono_exec(struct sip_msg *msg, char *script, char *param); int app_mono_run(sip_msg_t *msg, char *arg); -typedef struct sr_M_export { +typedef struct sr_M_export +{ char *name; - void* method; + void *method; } sr_M_export_t; #endif - diff --git a/src/modules/app_mono/app_mono_mod.c b/src/modules/app_mono/app_mono_mod.c index 7ab23fcfd76..1bc1979a0f8 100644 --- a/src/modules/app_mono/app_mono_mod.c +++ b/src/modules/app_mono/app_mono_mod.c @@ -37,51 +37,46 @@ MODULE_VERSION /** parameters */ /* List of allowed chars for a prefix*/ -static int mod_init(void); +static int mod_init(void); static void mod_destroy(void); -static int child_init(int rank); +static int child_init(int rank); static int w_app_mono_exec(struct sip_msg *msg, char *script, char *mparam); static int w_app_mono_run(struct sip_msg *msg, char *mparam, char *extra); -static int fixup_mono_exec(void** param, int param_no); +static int fixup_mono_exec(void **param, int param_no); int app_mono_load_param(modparam_t type, void *val); int app_mono_register_param(modparam_t type, void *val); -static param_export_t params[]={ - {"load", PARAM_STRING|USE_FUNC_PARAM, (void*)app_mono_load_param}, - {"register", PARAM_STRING|USE_FUNC_PARAM, (void*)app_mono_register_param}, - {0, 0, 0} -}; - -static cmd_export_t cmds[]={ - {"mono_exec", (cmd_function)w_app_mono_exec, 1, fixup_mono_exec, - 0, ANY_ROUTE}, - {"mono_exec", (cmd_function)w_app_mono_exec, 2, fixup_mono_exec, - 0, ANY_ROUTE}, - {"mono_run", (cmd_function)w_app_mono_run, 0, 0, - 0, ANY_ROUTE}, - {"mono_run", (cmd_function)w_app_mono_run, 1, fixup_spve_null, - 0, ANY_ROUTE}, - {0, 0, 0, 0, 0, 0} -}; +static param_export_t params[] = { + {"load", PARAM_STRING | USE_FUNC_PARAM, (void *)app_mono_load_param}, + {"register", PARAM_STRING | USE_FUNC_PARAM, + (void *)app_mono_register_param}, + {0, 0, 0}}; + +static cmd_export_t cmds[] = {{"mono_exec", (cmd_function)w_app_mono_exec, 1, + fixup_mono_exec, 0, ANY_ROUTE}, + {"mono_exec", (cmd_function)w_app_mono_exec, 2, fixup_mono_exec, 0, + ANY_ROUTE}, + {"mono_run", (cmd_function)w_app_mono_run, 0, 0, 0, ANY_ROUTE}, + {"mono_run", (cmd_function)w_app_mono_run, 1, fixup_spve_null, 0, + ANY_ROUTE}, + {0, 0, 0, 0, 0, 0}}; struct module_exports exports = { - "app_mono", - RTLD_NOW | RTLD_GLOBAL, /* dlopen flags */ - cmds, /*·exported·functions·*/ - params, /*·exported·params·*/ - 0, /*·exported·RPC·methods·*/ - 0, /* exported pseudo-variables */ - 0, /*·response·function·*/ - mod_init, /* module initialization function */ - child_init, /* per child init function */ - mod_destroy, /* destroy function */ + "app_mono", RTLD_NOW | RTLD_GLOBAL, /* dlopen flags */ + cmds, /*·exported·functions·*/ + params, /*·exported·params·*/ + 0, /*·exported·RPC·methods·*/ + 0, /* exported pseudo-variables */ + 0, /*·response·function·*/ + mod_init, /* module initialization function */ + child_init, /* per child init function */ + mod_destroy, /* destroy function */ }; - /** * init module function */ @@ -95,19 +90,18 @@ static int mod_init(void) /* each child get a new connection to the database */ static int child_init(int rank) { - if(rank==PROC_MAIN || rank==PROC_TCP_MAIN) + if(rank == PROC_MAIN || rank == PROC_TCP_MAIN) return 0; /* do nothing for the main process */ - if (rank==PROC_INIT) - { + if(rank == PROC_INIT) { /* do a probe before forking */ - if(mono_sr_init_probe()!=0) + if(mono_sr_init_probe() != 0) return -1; return 0; } - if(mono_sr_init_child()<0) + if(mono_sr_init_child() < 0) return -1; - if(mono_sr_init_load()<0) + if(mono_sr_init_load() < 0) return -1; return 0; } @@ -128,30 +122,24 @@ static int w_app_mono_exec(struct sip_msg *msg, char *script, char *mparam) str s; str p; - if(!mono_sr_initialized()) - { + if(!mono_sr_initialized()) { LM_ERR("Lua env not initialized"); return -1; } - if(fixup_get_svalue(msg, (gparam_p)script, &s)<0) - { + if(fixup_get_svalue(msg, (gparam_p)script, &s) < 0) { LM_ERR("cannot get the script\n"); return -1; } - if(s.len>=511) - { + if(s.len >= 511) { LM_ERR("script too long %d\n", s.len); return -1; } - if(mparam!=NULL) - { - if(fixup_get_svalue(msg, (gparam_p)mparam, &p)<0) - { + if(mparam != NULL) { + if(fixup_get_svalue(msg, (gparam_p)mparam, &p) < 0) { LM_ERR("cannot get the parameter\n"); return -1; } - if(p.len>=511) - { + if(p.len >= 511) { LM_ERR("parameter value too long %d\n", p.len); return -1; } @@ -160,8 +148,8 @@ static int w_app_mono_exec(struct sip_msg *msg, char *script, char *mparam) } memcpy(_mono_buf_stack[0], s.s, s.len); _mono_buf_stack[0][s.len] = '\0'; - return app_mono_exec(msg, _mono_buf_stack[0], - (mparam)?_mono_buf_stack[1]:NULL); + return app_mono_exec( + msg, _mono_buf_stack[0], (mparam) ? _mono_buf_stack[1] : NULL); } /** @@ -171,51 +159,45 @@ static int w_app_mono_run(struct sip_msg *msg, char *mparam, char *extra) { str p; - if(!mono_sr_initialized()) - { + if(!mono_sr_initialized()) { LM_ERR("Lua env not initialized"); return -1; } - if(mparam!=NULL) - { - if(fixup_get_svalue(msg, (gparam_p)mparam, &p)<0) - { + if(mparam != NULL) { + if(fixup_get_svalue(msg, (gparam_p)mparam, &p) < 0) { LM_ERR("cannot get the parameter\n"); return -1; } - if(p.len>=511) - { + if(p.len >= 511) { LM_ERR("parameter value too long %d\n", p.len); return -1; } memcpy(_mono_buf_stack[0], p.s, p.len); _mono_buf_stack[0][p.len] = '\0'; } - return app_mono_run(msg, (mparam)?_mono_buf_stack[0]:NULL); + return app_mono_run(msg, (mparam) ? _mono_buf_stack[0] : NULL); } int app_mono_load_param(modparam_t type, void *val) { - if(val==NULL) + if(val == NULL) return -1; - return sr_mono_load_script((char*)val); + return sr_mono_load_script((char *)val); } int app_mono_register_param(modparam_t type, void *val) { - if(val==NULL) + if(val == NULL) return -1; - return sr_mono_register_module((char*)val); + return sr_mono_register_module((char *)val); } -static int fixup_mono_exec(void** param, int param_no) +static int fixup_mono_exec(void **param, int param_no) { - if(sr_mono_assembly_loaded()) - { + if(sr_mono_assembly_loaded()) { LM_ERR("cannot use lua_exec(...) when an assembly is loaded\n"); return -1; } return fixup_spve_null(param, 1); } -