enclosed diff on rtpengine/daemon/sdp.c leaves attributes of original
sdp untouched if ICE=force_relay flag is set.  i tested it with sdps
generated by baresip, jssip, and pjsip.

this diff complements earlier commit that added ICE=force_relay flag,
which is not really useful if original sdp attributes are not left as
is.

--  juha

*** /usr/src/orig/rtpengine/daemon/sdp.c        Mon Apr 28 17:46:41 2014
--- sdp.c       Thu May  1 17:49:06 2014
***************
*** 1399,1404 ****
--- 1399,1406 ----
  
                        case ATTR_RTCP:
                        case ATTR_RTCP_MUX:
+                               if (flags->ice_force_relay)
+                                       break;
                        case ATTR_INACTIVE:
                        case ATTR_SENDONLY:
                        case ATTR_RECVONLY:
***************
*** 1670,1680 ****
                        }
                }
  
!               if (session->origin.parsed && flags->replace_origin) {
                        if (replace_network_address(chop, 
&session->origin.address, ps, flags))
                                goto error;
                }
!               if (session->connection.parsed && sess_conn) {
                        if (replace_network_address(chop, 
&session->connection.address, ps, flags))
                                goto error;
                }
--- 1672,1684 ----
                        }
                }
  
!               if (session->origin.parsed && flags->replace_origin &&
!                   !flags->ice_force_relay) {
                        if (replace_network_address(chop, 
&session->origin.address, ps, flags))
                                goto error;
                }
!               if (session->connection.parsed && sess_conn &&
!                   !flags->ice_force_relay) {
                        if (replace_network_address(chop, 
&session->connection.address, ps, flags))
                                goto error;
                }
***************
*** 1703,1718 ****
                                goto error;
                        ps = j->data;
  
!                       if (replace_media_port(chop, sdp_media, ps))
!                               goto error;
!                       if (replace_consecutive_port_count(chop, sdp_media, ps, 
j))
!                               goto error;
!                       if (replace_transport_protocol(chop, sdp_media, 
call_media))
!                               goto error;
! 
!                       if (sdp_media->connection.parsed) {
!                               if (replace_network_address(chop, 
&sdp_media->connection.address, ps, flags))
!                                       goto error;
                        }
  
                        if (process_media_attributes(chop, sdp_media, flags, 
call_media))
--- 1707,1724 ----
                                goto error;
                        ps = j->data;
  
!                       if (!flags->ice_force_relay) {
!                               if (replace_media_port(chop, sdp_media, ps))
!                                       goto error;
!                                       if 
(replace_consecutive_port_count(chop, sdp_media, ps, j))
!                                       goto error;
!                               if (replace_transport_protocol(chop, sdp_media, 
call_media))
!                                       goto error;
! 
!                               if (sdp_media->connection.parsed) {
!                                       if (replace_network_address(chop, 
&sdp_media->connection.address, ps, flags))
!                                               goto error;
!                               }
                        }
  
                        if (process_media_attributes(chop, sdp_media, flags, 
call_media))
***************
*** 1749,1755 ****
                                chopper_append_c(chop, "\r\na=rtcp-mux\r\n");
                                ps_rtcp = NULL;
                        }
!                       else if (ps_rtcp) {
                                chopper_append_c(chop, "a=rtcp:");
                                chopper_append_printf(chop, "%hu", 
ps_rtcp->sfd->fd.localport);
                                if (!MEDIA_ISSET(call_media, RTCP_MUX))
--- 1755,1761 ----
                                chopper_append_c(chop, "\r\na=rtcp-mux\r\n");
                                ps_rtcp = NULL;
                        }
!                       else if (ps_rtcp && !flags->ice_force_relay) {
                                chopper_append_c(chop, "a=rtcp:");
                                chopper_append_printf(chop, "%hu", 
ps_rtcp->sfd->fd.localport);
                                if (!MEDIA_ISSET(call_media, RTCP_MUX))
_______________________________________________
sr-dev mailing list
[email protected]
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to