| 235 | } |
| 236 | |
| 237 | int 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, ¶ms_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 | |
| 291 | out_error: |
| 292 | free_params(params_list); |
| 293 | return -1; |
| 294 | } |
nothing calls this directly
no test coverage detected