summaryrefslogtreecommitdiff
path: root/toxav/rtp.c
diff options
context:
space:
mode:
authormannol <eniz_vukovic@hotmail.com>2014-11-29 13:42:19 +0100
committermannol <eniz_vukovic@hotmail.com>2014-11-29 13:42:19 +0100
commite62ded3a6dfc1203418e3d7a2c936794c4c9ec1c (patch)
tree74db9ab7f52295304e6079d8e90b8d5b5f3afc67 /toxav/rtp.c
parent975ce25af0e469f3b2d80478695d3bbe8e79be79 (diff)
More av cleanup
Diffstat (limited to 'toxav/rtp.c')
-rw-r--r--toxav/rtp.c320
1 files changed, 158 insertions, 162 deletions
diff --git a/toxav/rtp.c b/toxav/rtp.c
index 328eb676..a1969fa6 100644
--- a/toxav/rtp.c
+++ b/toxav/rtp.c
@@ -70,30 +70,30 @@ RTPHeader *extract_header ( const uint8_t *payload, int length )
70 return NULL; 70 return NULL;
71 } 71 }
72 72
73 RTPHeader *_retu = calloc(1, sizeof (RTPHeader)); 73 RTPHeader *retu = calloc(1, sizeof (RTPHeader));
74 74
75 if ( !_retu ) { 75 if ( !retu ) {
76 LOGGER_WARNING("Alloc failed! Program might misbehave!"); 76 LOGGER_WARNING("Alloc failed! Program might misbehave!");
77 return NULL; 77 return NULL;
78 } 78 }
79 79
80 memcpy(&_retu->sequnum, payload, sizeof(_retu->sequnum)); 80 memcpy(&retu->sequnum, payload, sizeof(retu->sequnum));
81 _retu->sequnum = ntohs(_retu->sequnum); 81 retu->sequnum = ntohs(retu->sequnum);
82 82
83 const uint8_t *_it = payload + 2; 83 const uint8_t *it = payload + 2;
84 84
85 _retu->flags = *_it; 85 retu->flags = *it;
86 ++_it; 86 ++it;
87 87
88 /* This indicates if the first 2 bits are valid. 88 /* This indicates if the first 2 bits are valid.
89 * Now it may happen that this is out of order but 89 * Now it may happen that this is out of order but
90 * it cuts down chances of parsing some invalid value 90 * it cuts down chances of parsing some invalid value
91 */ 91 */
92 92
93 if ( GET_FLAG_VERSION(_retu) != RTP_VERSION ) { 93 if ( GET_FLAG_VERSION(retu) != RTP_VERSION ) {
94 /* Deallocate */ 94 /* Deallocate */
95 LOGGER_WARNING("Invalid version!"); 95 LOGGER_WARNING("Invalid version!");
96 free(_retu); 96 free(retu);
97 return NULL; 97 return NULL;
98 } 98 }
99 99
@@ -101,38 +101,37 @@ RTPHeader *extract_header ( const uint8_t *payload, int length )
101 * Added a check for the size of the header little sooner so 101 * Added a check for the size of the header little sooner so
102 * I don't need to parse the other stuff if it's bad 102 * I don't need to parse the other stuff if it's bad
103 */ 103 */
104 uint8_t _cc = GET_FLAG_CSRCC ( _retu ); 104 uint8_t cc = GET_FLAG_CSRCC ( retu );
105 int _length = 12 /* Minimum header len */ + ( _cc * 4 ); 105 int total = 12 /* Minimum header len */ + ( cc * 4 );
106 106
107 if ( length < _length ) { 107 if ( length < total ) {
108 /* Deallocate */ 108 /* Deallocate */
109 LOGGER_WARNING("Length invalid!"); 109 LOGGER_WARNING("Length invalid!");
110 free(_retu); 110 free(retu);
111 return NULL; 111 return NULL;
112 } 112 }
113 113
114 memset(_retu->csrc, 0, 16 * sizeof (uint32_t)); 114 memset(retu->csrc, 0, 16 * sizeof (uint32_t));
115 115
116 _retu->marker_payloadt = *_it; 116 retu->marker_payloadt = *it;
117 ++_it; 117 ++it;
118 _retu->length = _length; 118 retu->length = total;
119 119
120 120
121 memcpy(&_retu->timestamp, _it, sizeof(_retu->timestamp)); 121 memcpy(&retu->timestamp, it, sizeof(retu->timestamp));
122 _retu->timestamp = ntohl(_retu->timestamp); 122 retu->timestamp = ntohl(retu->timestamp);
123 _it += 4; 123 it += 4;
124 memcpy(&_retu->ssrc, _it, sizeof(_retu->ssrc)); 124 memcpy(&retu->ssrc, it, sizeof(retu->ssrc));
125 _retu->ssrc = ntohl(_retu->ssrc); 125 retu->ssrc = ntohl(retu->ssrc);
126 126
127 uint8_t _x; 127 uint8_t x;
128 128 for ( x = 0; x < cc; x++ ) {
129 for ( _x = 0; _x < _cc; _x++ ) { 129 it += 4;
130 _it += 4; 130 memcpy(&retu->csrc[x], it, sizeof(retu->csrc[x]));
131 memcpy(&_retu->csrc[_x], _it, sizeof(_retu->csrc[_x])); 131 retu->csrc[x] = ntohl(retu->csrc[x]);
132 _retu->csrc[_x] = ntohl(_retu->csrc[_x]);
133 } 132 }
134 133
135 return _retu; 134 return retu;
136} 135}
137 136
138/** 137/**
@@ -140,47 +139,46 @@ RTPHeader *extract_header ( const uint8_t *payload, int length )
140 */ 139 */
141RTPExtHeader *extract_ext_header ( const uint8_t *payload, uint16_t length ) 140RTPExtHeader *extract_ext_header ( const uint8_t *payload, uint16_t length )
142{ 141{
143 const uint8_t *_it = payload; 142 const uint8_t *it = payload;
144 143
145 RTPExtHeader *_retu = calloc(1, sizeof (RTPExtHeader)); 144 RTPExtHeader *retu = calloc(1, sizeof (RTPExtHeader));
146 145
147 if ( !_retu ) { 146 if ( !retu ) {
148 LOGGER_WARNING("Alloc failed! Program might misbehave!"); 147 LOGGER_WARNING("Alloc failed! Program might misbehave!");
149 return NULL; 148 return NULL;
150 } 149 }
151 150
152 uint16_t _ext_length; 151 uint16_t ext_length;
153 memcpy(&_ext_length, _it, sizeof(_ext_length)); 152 memcpy(&ext_length, it, sizeof(ext_length));
154 _ext_length = ntohs(_ext_length); 153 ext_length = ntohs(ext_length);
155 _it += 2; 154 it += 2;
156 155
157 156
158 if ( length < ( _ext_length * sizeof(uint32_t) ) ) { 157 if ( length < ( ext_length * sizeof(uint32_t) ) ) {
159 LOGGER_WARNING("Length invalid!"); 158 LOGGER_WARNING("Length invalid!");
160 free(_retu); 159 free(retu);
161 return NULL; 160 return NULL;
162 } 161 }
163 162
164 _retu->length = _ext_length; 163 retu->length = ext_length;
165 memcpy(&_retu->type, _it, sizeof(_retu->type)); 164 memcpy(&retu->type, it, sizeof(retu->type));
166 _retu->type = ntohs(_retu->type); 165 retu->type = ntohs(retu->type);
167 _it += 2; 166 it += 2;
168 167
169 if ( !(_retu->table = calloc(_ext_length, sizeof (uint32_t))) ) { 168 if ( !(retu->table = calloc(ext_length, sizeof (uint32_t))) ) {
170 LOGGER_WARNING("Alloc failed! Program might misbehave!"); 169 LOGGER_WARNING("Alloc failed! Program might misbehave!");
171 free(_retu); 170 free(retu);
172 return NULL; 171 return NULL;
173 } 172 }
174 173
175 uint16_t _x; 174 uint16_t x;
176 175 for ( x = 0; x < ext_length; x++ ) {
177 for ( _x = 0; _x < _ext_length; _x++ ) { 176 it += 4;
178 _it += 4; 177 memcpy(&(retu->table[x]), it, sizeof(retu->table[x]));
179 memcpy(&(_retu->table[_x]), _it, sizeof(_retu->table[_x])); 178 retu->table[x] = ntohl(retu->table[x]);
180 _retu->table[_x] = ntohl(_retu->table[_x]);
181 } 179 }
182 180
183 return _retu; 181 return retu;
184} 182}
185 183
186/** 184/**
@@ -188,8 +186,8 @@ RTPExtHeader *extract_ext_header ( const uint8_t *payload, uint16_t length )
188 */ 186 */
189uint8_t *add_header ( RTPHeader *header, uint8_t *payload ) 187uint8_t *add_header ( RTPHeader *header, uint8_t *payload )
190{ 188{
191 uint8_t _cc = GET_FLAG_CSRCC ( header ); 189 uint8_t cc = GET_FLAG_CSRCC ( header );
192 uint8_t *_it = payload; 190 uint8_t *it = payload;
193 uint16_t sequnum; 191 uint16_t sequnum;
194 uint32_t timestamp; 192 uint32_t timestamp;
195 uint32_t ssrc; 193 uint32_t ssrc;
@@ -198,30 +196,29 @@ uint8_t *add_header ( RTPHeader *header, uint8_t *payload )
198 196
199 /* Add sequence number first */ 197 /* Add sequence number first */
200 sequnum = htons(header->sequnum); 198 sequnum = htons(header->sequnum);
201 memcpy(_it, &sequnum, sizeof(sequnum)); 199 memcpy(it, &sequnum, sizeof(sequnum));
202 _it += 2; 200 it += 2;
203 201
204 *_it = header->flags; 202 *it = header->flags;
205 ++_it; 203 ++it;
206 *_it = header->marker_payloadt; 204 *it = header->marker_payloadt;
207 ++_it; 205 ++it;
208 206
209 207
210 timestamp = htonl(header->timestamp); 208 timestamp = htonl(header->timestamp);
211 memcpy(_it, &timestamp, sizeof(timestamp)); 209 memcpy(it, &timestamp, sizeof(timestamp));
212 _it += 4; 210 it += 4;
213 ssrc = htonl(header->ssrc); 211 ssrc = htonl(header->ssrc);
214 memcpy(_it, &ssrc, sizeof(ssrc)); 212 memcpy(it, &ssrc, sizeof(ssrc));
215
216 uint8_t _x;
217 213
218 for ( _x = 0; _x < _cc; _x++ ) { 214 uint8_t x;
219 _it += 4; 215 for ( x = 0; x < cc; x++ ) {
220 csrc = htonl(header->csrc[_x]); 216 it += 4;
221 memcpy(_it, &csrc, sizeof(csrc)); 217 csrc = htonl(header->csrc[x]);
218 memcpy(it, &csrc, sizeof(csrc));
222 } 219 }
223 220
224 return _it + 4; 221 return it + 4;
225} 222}
226 223
227/** 224/**
@@ -229,29 +226,29 @@ uint8_t *add_header ( RTPHeader *header, uint8_t *payload )
229 */ 226 */
230uint8_t *add_ext_header ( RTPExtHeader *header, uint8_t *payload ) 227uint8_t *add_ext_header ( RTPExtHeader *header, uint8_t *payload )
231{ 228{
232 uint8_t *_it = payload; 229 uint8_t *it = payload;
233 uint16_t length; 230 uint16_t length;
234 uint16_t type; 231 uint16_t type;
235 uint32_t entry; 232 uint32_t entry;
236 233
237 length = htons(header->length); 234 length = htons(header->length);
238 memcpy(_it, &length, sizeof(length)); 235 memcpy(it, &length, sizeof(length));
239 _it += 2; 236 it += 2;
240 type = htons(header->type); 237 type = htons(header->type);
241 memcpy(_it, &type, sizeof(type)); 238 memcpy(it, &type, sizeof(type));
242 _it -= 2; /* Return to 0 position */ 239 it -= 2; /* Return to 0 position */
243 240
244 if ( header->table ) { 241 if ( header->table ) {
245 uint16_t _x; 242
246 243 uint16_t x;
247 for ( _x = 0; _x < header->length; _x++ ) { 244 for ( x = 0; x < header->length; x++ ) {
248 _it += 4; 245 it += 4;
249 entry = htonl(header->table[_x]); 246 entry = htonl(header->table[x]);
250 memcpy(_it, &entry, sizeof(entry)); 247 memcpy(it, &entry, sizeof(entry));
251 } 248 }
252 } 249 }
253 250
254 return _it + 4; 251 return it + 4;
255} 252}
256 253
257/** 254/**
@@ -259,32 +256,31 @@ uint8_t *add_ext_header ( RTPExtHeader *header, uint8_t *payload )
259 */ 256 */
260RTPHeader *build_header ( RTPSession *session ) 257RTPHeader *build_header ( RTPSession *session )
261{ 258{
262 RTPHeader *_retu = calloc ( 1, sizeof (RTPHeader) ); 259 RTPHeader *retu = calloc ( 1, sizeof (RTPHeader) );
263 260
264 if ( !_retu ) { 261 if ( !retu ) {
265 LOGGER_WARNING("Alloc failed! Program might misbehave!"); 262 LOGGER_WARNING("Alloc failed! Program might misbehave!");
266 return NULL; 263 return NULL;
267 } 264 }
268 265
269 ADD_FLAG_VERSION ( _retu, session->version ); 266 ADD_FLAG_VERSION ( retu, session->version );
270 ADD_FLAG_PADDING ( _retu, session->padding ); 267 ADD_FLAG_PADDING ( retu, session->padding );
271 ADD_FLAG_EXTENSION ( _retu, session->extension ); 268 ADD_FLAG_EXTENSION ( retu, session->extension );
272 ADD_FLAG_CSRCC ( _retu, session->cc ); 269 ADD_FLAG_CSRCC ( retu, session->cc );
273 ADD_SETTING_MARKER ( _retu, session->marker ); 270 ADD_SETTING_MARKER ( retu, session->marker );
274 ADD_SETTING_PAYLOAD ( _retu, session->payload_type ); 271 ADD_SETTING_PAYLOAD ( retu, session->payload_type );
275 272
276 _retu->sequnum = session->sequnum; 273 retu->sequnum = session->sequnum;
277 _retu->timestamp = current_time_monotonic(); /* milliseconds */ 274 retu->timestamp = current_time_monotonic(); /* milliseconds */
278 _retu->ssrc = session->ssrc; 275 retu->ssrc = session->ssrc;
279 276
280 int i; 277 int i;
281
282 for ( i = 0; i < session->cc; i++ ) 278 for ( i = 0; i < session->cc; i++ )
283 _retu->csrc[i] = session->csrc[i]; 279 retu->csrc[i] = session->csrc[i];
284 280
285 _retu->length = 12 /* Minimum header len */ + ( session->cc * size_32 ); 281 retu->length = 12 /* Minimum header len */ + ( session->cc * size_32 );
286 282
287 return _retu; 283 return retu;
288} 284}
289 285
290 286
@@ -294,47 +290,47 @@ RTPHeader *build_header ( RTPSession *session )
294 */ 290 */
295RTPMessage *msg_parse ( const uint8_t *data, int length ) 291RTPMessage *msg_parse ( const uint8_t *data, int length )
296{ 292{
297 RTPMessage *_retu = calloc(1, sizeof (RTPMessage)); 293 RTPMessage *retu = calloc(1, sizeof (RTPMessage));
298 294
299 _retu->header = extract_header ( data, length ); /* It allocates memory and all */ 295 retu->header = extract_header ( data, length ); /* It allocates memory and all */
300 296
301 if ( !_retu->header ) { 297 if ( !retu->header ) {
302 LOGGER_WARNING("Header failed to extract!"); 298 LOGGER_WARNING("Header failed to extract!");
303 free(_retu); 299 free(retu);
304 return NULL; 300 return NULL;
305 } 301 }
306 302
307 uint16_t _from_pos = _retu->header->length; 303 uint16_t from_pos = retu->header->length;
308 _retu->length = length - _from_pos; 304 retu->length = length - from_pos;
309 305
310 306
311 307
312 if ( GET_FLAG_EXTENSION ( _retu->header ) ) { 308 if ( GET_FLAG_EXTENSION ( retu->header ) ) {
313 _retu->ext_header = extract_ext_header ( data + _from_pos, length ); 309 retu->ext_header = extract_ext_header ( data + from_pos, length );
314 310
315 if ( _retu->ext_header ) { 311 if ( retu->ext_header ) {
316 _retu->length -= ( 4 /* Minimum ext header len */ + _retu->ext_header->length * size_32 ); 312 retu->length -= ( 4 /* Minimum ext header len */ + retu->ext_header->length * size_32 );
317 _from_pos += ( 4 /* Minimum ext header len */ + _retu->ext_header->length * size_32 ); 313 from_pos += ( 4 /* Minimum ext header len */ + retu->ext_header->length * size_32 );
318 } else { /* Error */ 314 } else { /* Error */
319 LOGGER_WARNING("Ext Header failed to extract!"); 315 LOGGER_WARNING("Ext Header failed to extract!");
320 rtp_free_msg(NULL, _retu); 316 rtp_free_msg(NULL, retu);
321 return NULL; 317 return NULL;
322 } 318 }
323 } else { 319 } else {
324 _retu->ext_header = NULL; 320 retu->ext_header = NULL;
325 } 321 }
326 322
327 if ( length - _from_pos <= MAX_RTP_SIZE ) 323 if ( length - from_pos <= MAX_RTP_SIZE )
328 memcpy ( _retu->data, data + _from_pos, length - _from_pos ); 324 memcpy ( retu->data, data + from_pos, length - from_pos );
329 else { 325 else {
330 LOGGER_WARNING("Invalid length!"); 326 LOGGER_WARNING("Invalid length!");
331 rtp_free_msg(NULL, _retu); 327 rtp_free_msg(NULL, retu);
332 return NULL; 328 return NULL;
333 } 329 }
334 330
335 _retu->next = NULL; 331 retu->next = NULL;
336 332
337 return _retu; 333 return retu;
338} 334}
339 335
340/** 336/**
@@ -342,28 +338,28 @@ RTPMessage *msg_parse ( const uint8_t *data, int length )
342 */ 338 */
343int rtp_handle_packet ( void *object, const uint8_t *data, uint32_t length ) 339int rtp_handle_packet ( void *object, const uint8_t *data, uint32_t length )
344{ 340{
345 RTPSession *_session = object; 341 RTPSession *session = object;
346 RTPMessage *_msg; 342 RTPMessage *msg;
347 343
348 if ( !_session || length < 13 ) { /* 12 is the minimum length for rtp + desc. byte */ 344 if ( !session || length < 13 ) { /* 12 is the minimum length for rtp + desc. byte */
349 LOGGER_WARNING("No session or invalid length of received buffer!"); 345 LOGGER_WARNING("No session or invalid length of received buffer!");
350 return -1; 346 return -1;
351 } 347 }
352 348
353 _msg = msg_parse ( data + 1, length - 1 ); 349 msg = msg_parse ( data + 1, length - 1 );
354 350
355 if ( !_msg ) { 351 if ( !msg ) {
356 LOGGER_WARNING("Could not parse message!"); 352 LOGGER_WARNING("Could not parse message!");
357 return -1; 353 return -1;
358 } 354 }
359 355
360 /* Check if message came in late */ 356 /* Check if message came in late */
361 if ( check_late_message(_session, _msg) < 0 ) { /* Not late */ 357 if ( check_late_message(session, msg) < 0 ) { /* Not late */
362 _session->rsequnum = _msg->header->sequnum; 358 session->rsequnum = msg->header->sequnum;
363 _session->timestamp = _msg->header->timestamp; 359 session->timestamp = msg->header->timestamp;
364 } 360 }
365 361
366 queue_message(_session, _msg); 362 queue_message(session, msg);
367 363
368 return 0; 364 return 0;
369} 365}
@@ -378,30 +374,30 @@ RTPMessage *rtp_new_message ( RTPSession *session, const uint8_t *data, uint32_t
378 return NULL; 374 return NULL;
379 } 375 }
380 376
381 uint8_t *_from_pos; 377 uint8_t *from_pos;
382 RTPMessage *_retu = calloc(1, sizeof (RTPMessage)); 378 RTPMessage *retu = calloc(1, sizeof (RTPMessage));
383 379
384 if ( !_retu ) { 380 if ( !retu ) {
385 LOGGER_WARNING("Alloc failed! Program might misbehave!"); 381 LOGGER_WARNING("Alloc failed! Program might misbehave!");
386 return NULL; 382 return NULL;
387 } 383 }
388 384
389 /* Sets header values and copies the extension header in _retu */ 385 /* Sets header values and copies the extension header in retu */
390 _retu->header = build_header ( session ); /* It allocates memory and all */ 386 retu->header = build_header ( session ); /* It allocates memory and all */
391 _retu->ext_header = session->ext_header; 387 retu->ext_header = session->ext_header;
392 388
393 389
394 uint32_t _total_length = length + _retu->header->length + 1; 390 uint32_t total_length = length + retu->header->length + 1;
395 391
396 _retu->data[0] = session->prefix; 392 retu->data[0] = session->prefix;
397 393
398 if ( _retu->ext_header ) { 394 if ( retu->ext_header ) {
399 _total_length += ( 4 /* Minimum ext header len */ + _retu->ext_header->length * size_32 ); 395 total_length += ( 4 /* Minimum ext header len */ + retu->ext_header->length * size_32 );
400 396
401 _from_pos = add_header ( _retu->header, _retu->data + 1 ); 397 from_pos = add_header ( retu->header, retu->data + 1 );
402 _from_pos = add_ext_header ( _retu->ext_header, _from_pos + 1 ); 398 from_pos = add_ext_header ( retu->ext_header, from_pos + 1 );
403 } else { 399 } else {
404 _from_pos = add_header ( _retu->header, _retu->data + 1 ); 400 from_pos = add_header ( retu->header, retu->data + 1 );
405 } 401 }
406 402
407 /* 403 /*
@@ -409,14 +405,14 @@ RTPMessage *rtp_new_message ( RTPSession *session, const uint8_t *data, uint32_t
409 * Of course if any 405 * Of course if any
410 */ 406 */
411 407
412 /* Appends _data on to _retu->_data */ 408 /* Appends data on to retu->data */
413 memcpy ( _from_pos, data, length ); 409 memcpy ( from_pos, data, length );
414 410
415 _retu->length = _total_length; 411 retu->length = total_length;
416 412
417 _retu->next = NULL; 413 retu->next = NULL;
418 414
419 return _retu; 415 return retu;
420} 416}
421 417
422 418
@@ -430,7 +426,7 @@ int rtp_send_msg ( RTPSession *session, Messenger *messenger, const uint8_t *dat
430 if ( -1 == send_custom_lossy_packet(messenger, session->dest, msg->data, msg->length) ) { 426 if ( -1 == send_custom_lossy_packet(messenger, session->dest, msg->data, msg->length) ) {
431 LOGGER_WARNING("Failed to send full packet (len: %d)! std error: %s", length, strerror(errno)); 427 LOGGER_WARNING("Failed to send full packet (len: %d)! std error: %s", length, strerror(errno));
432 rtp_free_msg ( session, msg ); 428 rtp_free_msg ( session, msg );
433 return -1; 429 return rtp_ErrorSending;
434 } 430 }
435 431
436 432
@@ -461,52 +457,52 @@ void rtp_free_msg ( RTPSession *session, RTPMessage *msg )
461 457
462RTPSession *rtp_new ( int payload_type, Messenger *messenger, int friend_num ) 458RTPSession *rtp_new ( int payload_type, Messenger *messenger, int friend_num )
463{ 459{
464 RTPSession *_retu = calloc(1, sizeof(RTPSession)); 460 RTPSession *retu = calloc(1, sizeof(RTPSession));
465 461
466 if ( !_retu ) { 462 if ( !retu ) {
467 LOGGER_WARNING("Alloc failed! Program might misbehave!"); 463 LOGGER_WARNING("Alloc failed! Program might misbehave!");
468 return NULL; 464 return NULL;
469 } 465 }
470 466
471 if ( -1 == custom_lossy_packet_registerhandler(messenger, friend_num, payload_type, rtp_handle_packet, _retu)) { 467 if ( -1 == custom_lossy_packet_registerhandler(messenger, friend_num, payload_type, rtp_handle_packet, retu)) {
472 LOGGER_ERROR("Error setting custom register handler for rtp session"); 468 LOGGER_ERROR("Error setting custom register handler for rtp session");
473 free(_retu); 469 free(retu);
474 return NULL; 470 return NULL;
475 } 471 }
476 472
477 LOGGER_DEBUG("Registered packet handler: pt: %d; fid: %d", payload_type, friend_num); 473 LOGGER_DEBUG("Registered packet handler: pt: %d; fid: %d", payload_type, friend_num);
478 474
479 _retu->version = RTP_VERSION; /* It's always 2 */ 475 retu->version = RTP_VERSION; /* It's always 2 */
480 _retu->padding = 0; /* If some additional data is needed about the packet */ 476 retu->padding = 0; /* If some additional data is needed about the packet */
481 _retu->extension = 0; /* If extension to header is needed */ 477 retu->extension = 0; /* If extension to header is needed */
482 _retu->cc = 1; /* Amount of contributors */ 478 retu->cc = 1; /* Amount of contributors */
483 _retu->csrc = NULL; /* Container */ 479 retu->csrc = NULL; /* Container */
484 _retu->ssrc = random_int(); 480 retu->ssrc = random_int();
485 _retu->marker = 0; 481 retu->marker = 0;
486 _retu->payload_type = payload_type % 128; 482 retu->payload_type = payload_type % 128;
487 483
488 _retu->dest = friend_num; 484 retu->dest = friend_num;
489 485
490 _retu->rsequnum = _retu->sequnum = 0; 486 retu->rsequnum = retu->sequnum = 0;
491 487
492 _retu->ext_header = NULL; /* When needed allocate */ 488 retu->ext_header = NULL; /* When needed allocate */
493 489
494 490
495 if ( !(_retu->csrc = calloc(1, sizeof (uint32_t))) ) { 491 if ( !(retu->csrc = calloc(1, sizeof (uint32_t))) ) {
496 LOGGER_WARNING("Alloc failed! Program might misbehave!"); 492 LOGGER_WARNING("Alloc failed! Program might misbehave!");
497 free(_retu); 493 free(retu);
498 return NULL; 494 return NULL;
499 } 495 }
500 496
501 _retu->csrc[0] = _retu->ssrc; /* Set my ssrc to the list receive */ 497 retu->csrc[0] = retu->ssrc; /* Set my ssrc to the list receive */
502 498
503 /* Also set payload type as prefix */ 499 /* Also set payload type as prefix */
504 _retu->prefix = payload_type; 500 retu->prefix = payload_type;
505 501
506 /* 502 /*
507 * 503 *
508 */ 504 */
509 return _retu; 505 return retu;
510} 506}
511 507
512void rtp_kill ( RTPSession *session, Messenger *messenger ) 508void rtp_kill ( RTPSession *session, Messenger *messenger )