int video = FALSE;
int image = FALSE;
int text = FALSE;
+ int processed_crypto = FALSE;
char protocol[5] = {0,};
int x;
case 'a':
/* Audio specific scanning */
if (audio) {
- if (process_sdp_a_sendonly(value, &sendonly))
+ if (process_sdp_a_sendonly(value, &sendonly)) {
processed = TRUE;
- else if (process_crypto(p, p->rtp, &p->srtp, value))
+ } else if (!processed_crypto && process_crypto(p, p->rtp, &p->srtp, value)) {
+ processed_crypto = TRUE;
processed = TRUE;
- else if (process_sdp_a_audio(value, p, &newaudiortp, &last_rtpmap_codec))
+ } else if (process_sdp_a_audio(value, p, &newaudiortp, &last_rtpmap_codec)) {
processed = TRUE;
+ }
}
/* Video specific scanning */
else if (video) {
- if (process_sdp_a_sendonly(value, &vsendonly))
+ if (process_sdp_a_sendonly(value, &vsendonly)) {
processed = TRUE;
- else if (process_crypto(p, p->vrtp, &p->vsrtp, value))
+ } else if (!processed_crypto && process_crypto(p, p->vrtp, &p->vsrtp, value)) {
+ processed_crypto = TRUE;
processed = TRUE;
- else if (process_sdp_a_video(value, p, &newvideortp, &last_rtpmap_codec))
+ } else if (process_sdp_a_video(value, p, &newvideortp, &last_rtpmap_codec)) {
processed = TRUE;
+ }
}
/* Text (T.140) specific scanning */
else if (text) {
- if (process_sdp_a_text(value, p, &newtextrtp, red_fmtp, &red_num_gen, red_data_pt, &last_rtpmap_codec))
+ if (process_sdp_a_text(value, p, &newtextrtp, red_fmtp, &red_num_gen, red_data_pt, &last_rtpmap_codec)) {
processed = TRUE;
- else if (process_crypto(p, p->trtp, &p->tsrtp, value))
+ } else if (!processed_crypto && process_crypto(p, p->trtp, &p->tsrtp, value)) {
+ processed_crypto = TRUE;
processed = TRUE;
+ }
}
/* Image (T.38 FAX) specific scanning */
else if (image) {
}
}
- /* For now, when we receive an INVITE just take the first successful crypto line */
- if ((*srtp)->crypto && !ast_test_flag(&p->flags[0], SIP_OUTGOING)) {
- ast_debug(3, "We've already processed a crypto attribute, skipping '%s'\n", a);
- return FALSE;
- }
-
if (!(*srtp)->crypto && !((*srtp)->crypto = sdp_crypto_setup())) {
return FALSE;
}