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

Function parse_diversion_header

parser/parse_diversion.c:38–72  ·  view source on GitHub ↗

* This method is used to parse DIVERSION header as per RFC5806 * (Diversion Indication in SIP) * * params: msg : sip msg * returns 0 on success, * -1 on failure. */

Source from the content-addressed store, hash-verified

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

Callers 3

pv_get_diversionFunction · 0.85
ospGetDiversionFunction · 0.85
diversion_paramFunction · 0.85

Calls 1

parse_multi_toFunction · 0.85

Tested by

no test coverage detected