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

Function pv_get_diversion

pvar.c:1282–1331  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1280}
1281
1282static int pv_get_diversion(struct sip_msg *msg, pv_param_t *param,
1283 pv_value_t *res)
1284{
1285 str *val;
1286 str name;
1287
1288 if(msg == NULL)
1289 return -1;
1290
1291 if(parse_diversion_header(msg) == -1)
1292 {
1293 LM_DBG("no Diversion header\n");
1294 return pv_get_null(msg, param, res);
1295 }
1296
1297 if(msg->diversion == NULL || get_diversion(msg) == NULL)
1298 {
1299 LM_DBG("no Diversion header\n");
1300 return pv_get_null(msg, param, res);
1301 }
1302
1303 if(param->pvn.u.isname.name.n == 1) { /* uri */
1304 return pv_get_strval(msg, param, res, &(get_diversion(msg)->uri));
1305 }
1306
1307 if(param->pvn.u.isname.name.n == 2) { /* reason param */
1308 name.s = "reason";
1309 name.len = 6;
1310 val = diversion_param(msg, name);
1311 if (val) {
1312 return pv_get_strval(msg, param, res, val);
1313 } else {
1314 return pv_get_null(msg, param, res);
1315 }
1316 }
1317
1318 if(param->pvn.u.isname.name.n == 3) { /* privacy param */
1319 name.s = "privacy";
1320 name.len = 7;
1321 val = diversion_param(msg, name);
1322 if (val) {
1323 return pv_get_strval(msg, param, res, val);
1324 } else {
1325 return pv_get_null(msg, param, res);
1326 }
1327 }
1328
1329 LM_ERR("unknown diversion specifier\n");
1330 return pv_get_null(msg, param, res);
1331}
1332
1333static int pv_get_rpid(struct sip_msg *msg, pv_param_t *param,
1334 pv_value_t *res)

Callers

nothing calls this directly

Calls 4

parse_diversion_headerFunction · 0.85
pv_get_nullFunction · 0.85
pv_get_strvalFunction · 0.85
diversion_paramFunction · 0.85

Tested by

no test coverage detected