MCPcopy Create free account
hub / github.com/OpenSIPS/opensips / mq_param

Function mq_param

modules/mqueue/mqueue_mod.c:237–294  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

235}
236
237int mq_param(modparam_t type, void *val)
238{
239 str mqs;
240 param_t *params_list = NULL;
241 param_hooks_t phooks;
242 param_t *pit = NULL;
243 str qname = {0, 0};
244 int msize = 0;
245 int dbmode = 0;
246 int addmode = 0;
247
248 if(val == NULL)
249 return -1;
250
251 mqs.s = (char *)val;
252 mqs.len = strlen(mqs.s);
253 if(mqs.s[mqs.len - 1] == ';')
254 mqs.len--;
255 if(parse_params(&mqs, CLASS_ANY, &phooks, &params_list) < 0)
256 return -1;
257 for(pit = params_list; pit; pit = pit->next) {
258 if(pit->name.len == 4 && strncasecmp(pit->name.s, "name", 4) == 0) {
259 qname = pit->body;
260 } else if(pit->name.len == 4
261 && strncasecmp(pit->name.s, "size", 4) == 0) {
262 if (str2sint(&pit->body, &msize) < 0)
263 goto out_error;
264 } else if(pit->name.len == 6
265 && strncasecmp(pit->name.s, "dbmode", 6) == 0) {
266 if (str2sint(&pit->body, &dbmode) < 0)
267 goto out_error;
268 } else if(pit->name.len == 7
269 && strncasecmp(pit->name.s, "addmode", 7) == 0) {
270 if (str2sint(&pit->body, &addmode) < 0)
271 goto out_error;
272 } else {
273 LM_ERR("unknown param: %.*s\n", pit->name.len, pit->name.s);
274 goto out_error;
275 }
276 }
277 if(qname.len <= 0) {
278 LM_ERR("mqueue name not defined: %.*s\n", mqs.len, mqs.s);
279 goto out_error;
280 }
281 if(mq_head_add(&qname, msize, addmode) < 0) {
282 LM_ERR("cannot add mqueue: %.*s\n", mqs.len, mqs.s);
283 goto out_error;
284 }
285 LM_INFO("mqueue param: [%.*s|%d|%d|%d]\n", qname.len, qname.s, dbmode,
286 addmode, msize);
287 mq_set_dbmode(&qname, dbmode);
288 free_params(params_list);
289 return 0;
290
291out_error:
292 free_params(params_list);
293 return -1;
294}

Callers

nothing calls this directly

Calls 5

parse_paramsFunction · 0.85
str2sintFunction · 0.85
mq_head_addFunction · 0.85
mq_set_dbmodeFunction · 0.85
free_paramsFunction · 0.85

Tested by

no test coverage detected