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

Function parse_rpid_header

parser/parse_rpid.c:40–75  ·  view source on GitHub ↗

* This method is used to parse RPID header. * * params: msg : sip msg * returns 0 on success, * -1 on failure. */

Source from the content-addressed store, hash-verified

38 * -1 on failure.
39 */
40int parse_rpid_header( struct sip_msg *msg )
41{
42 struct to_body* rpid_b;
43
44 if ( !msg->rpid && (parse_headers(msg, HDR_RPID_F, 0)==-1 || !msg->rpid)) {
45 goto error;
46 }
47
48 /* maybe the header is already parsed! */
49 if (msg->rpid->parsed)
50 return 0;
51
52 /* bad luck! :-( - we have to parse it */
53 /* first, get some memory */
54 rpid_b = pkg_malloc(sizeof(struct to_body));
55 if (rpid_b == 0) {
56 LM_ERR("out of pkg_memory\n");
57 goto error;
58 }
59
60 /* now parse it!! */
61 parse_to(msg->rpid->body.s,msg->rpid->body.s+msg->rpid->body.len+1,rpid_b);
62 if (rpid_b->error == PARSE_ERROR) {
63 LM_ERR("bad rpid header\n");
64 pkg_free(rpid_b);
65 set_err_info(OSER_EC_PARSER, OSER_EL_MEDIUM,
66 "error parsing RPID header");
67 set_err_reply(400, "bad header");
68 goto error;
69 }
70 msg->rpid->parsed = rpid_b;
71
72 return 0;
73error:
74 return -1;
75}

Callers 4

pv_get_rpidFunction · 0.85
ospGetRpidUserFunction · 0.85
ospGetRpidHostFunction · 0.85
found_CBNFunction · 0.85

Calls 3

parse_toFunction · 0.85
set_err_infoFunction · 0.85
set_err_replyFunction · 0.85

Tested by

no test coverage detected