|
|
|
@ -1446,7 +1446,7 @@ int sdp_replace(struct sdp_chopper *chop, GQueue *sessions, struct call *call, |
|
|
|
struct sdp_session *session; |
|
|
|
struct sdp_media *media; |
|
|
|
GList *l, *k, *m; |
|
|
|
int off, do_ice, r_flags; |
|
|
|
int off, do_ice, r_flags, sess_conn; |
|
|
|
struct stream_input si, *sip; |
|
|
|
struct streamrelay *rtp, *rtcp; |
|
|
|
unsigned long priority; |
|
|
|
@ -1458,13 +1458,26 @@ int sdp_replace(struct sdp_chopper *chop, GQueue *sessions, struct call *call, |
|
|
|
for (l = sessions->head; l; l = l->next) { |
|
|
|
session = l->data; |
|
|
|
|
|
|
|
sess_conn = 0; |
|
|
|
if (flags->replace_sess_conn) |
|
|
|
sess_conn = 1; |
|
|
|
else { |
|
|
|
for (k = session->media_streams.head; k; k = k->next) { |
|
|
|
media = k->data; |
|
|
|
if (!media->connection.parsed) { |
|
|
|
sess_conn = 1; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
fill_relays(&rtp, &rtcp, m, off, NULL, NULL); |
|
|
|
|
|
|
|
if (session->origin.parsed && flags->replace_origin) { |
|
|
|
if (replace_network_address(chop, &session->origin.address, rtp)) |
|
|
|
goto error; |
|
|
|
} |
|
|
|
if (session->connection.parsed) { |
|
|
|
if (session->connection.parsed && sess_conn) { |
|
|
|
if (replace_network_address(chop, &session->connection.address, rtp)) |
|
|
|
goto error; |
|
|
|
} |
|
|
|
@ -1501,7 +1514,7 @@ int sdp_replace(struct sdp_chopper *chop, GQueue *sessions, struct call *call, |
|
|
|
if (replace_transport_protocol(chop, media, rtp)) |
|
|
|
goto error; |
|
|
|
|
|
|
|
if (media->connection.parsed && flags->replace_sess_conn) { |
|
|
|
if (media->connection.parsed) { |
|
|
|
if (replace_network_address(chop, &media->connection.address, rtp)) |
|
|
|
goto error; |
|
|
|
} |
|
|
|
|