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

Function create_codec_lumps

modules/sipmsgops/codecs.c:61–156  ·  view source on GitHub ↗

* Create the necessary lumps from the message */

Source from the content-addressed store, hash-verified

59 * Create the necessary lumps from the message
60 */
61static int create_codec_lumps(struct sip_msg * msg)
62{
63
64 struct sdp_session_cell * cur_session;
65 struct lump * tmp;
66 int count;
67
68 /* get the number of streams */
69 lumps_len = 0;
70 cur_session = get_sdp(msg)->sessions;
71
72 while(cur_session)
73 {
74 lumps_len += cur_session->streams_num;
75 cur_session = cur_session->next;
76 }
77
78 if (lumps_len>MAX_STREAMS)
79 {
80 LM_ERR("Overflow - too many streams (%d), limit is %d\n",
81 lumps_len, MAX_STREAMS);
82 return -1;
83 }
84 memset(lumps, 0, MAX_STREAMS * sizeof(struct lump*));
85
86 /* for each stream create a specific lump for deletion, skip
87 * and insertion */
88
89 LM_DBG("creating %d streams\n",lumps_len);
90
91 count = 0;
92 cur_session = get_sdp(msg)->sessions;
93
94 while(cur_session)
95 {
96 struct sdp_stream_cell * cur_cell = cur_session->streams;
97 struct lump* l;
98 str text;
99 str payloads;
100
101 while(cur_cell)
102 {
103 payloads = cur_cell->payloads;
104 /* include the previous whitespaces */
105 while (payloads.s > cur_cell->body.s && *(payloads.s-1) == ' ') {
106 payloads.s--;
107 payloads.len++;
108 }
109
110 l = del_lump(msg, payloads.s - msg->buf, payloads.len, 0);
111
112 lumps[count] = l;
113
114 if( l == NULL)
115 {
116 LM_ERR("Error adding delete lump for m=\n");
117 return -1;
118 }

Callers 1

get_codec_lumpsFunction · 0.85

Calls 4

get_sdpFunction · 0.85
del_lumpFunction · 0.85
insert_skip_lump_afterFunction · 0.85
insert_new_lump_afterFunction · 0.85

Tested by

no test coverage detected