Module: sip-router
Branch: master
Commit: 2e58de7e16203c849cf1c445dfb33d304ffd3507
URL:    
http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=2e58de7e16203c849cf1c445dfb33d304ffd3507

Author: Ovidiu Sas <[email protected]>
Committer: Ovidiu Sas <[email protected]>
Date:   Fri Feb 15 21:13:29 2013 -0500

rtpproxy: when adding ICE relay candidates, always include RTCP candidate

---

 modules/rtpproxy/rtpproxy.c |   32 ++++++++++++++------------------
 1 files changed, 14 insertions(+), 18 deletions(-)

diff --git a/modules/rtpproxy/rtpproxy.c b/modules/rtpproxy/rtpproxy.c
index 6963187..016a9a1 100644
--- a/modules/rtpproxy/rtpproxy.c
+++ b/modules/rtpproxy/rtpproxy.c
@@ -1429,18 +1429,15 @@ append_filtered_ip(char *at, str *ip)
                
 static int
 insert_candidates(struct sip_msg *msg, char *where, str *ip, unsigned int port,
-                 str *rtcp_port, int priority)
+                 int priority)
 {
     char *buf, *at;
     struct lump* anchor;
     str rtp_port;
+    str rtcp_port;
 
-    if (rtcp_port->len) {
-       buf = pkg_malloc(24 + 78 + 14 + 24 + 2*ip->len + 2 + 2*rtcp_port->len +
-                        24);
-    } else {
-       buf = pkg_malloc(12 + 39 + 12 + 12 + ip->len + 1 + rtcp_port->len + 12);
-    }  
+    rtcp_port.s = int2str(port+1, &rtcp_port.len); /* beware static buffer */
+    buf = pkg_malloc(24 + 78 + 14 + 24 + 2*ip->len + 2 + 2*rtcp_port.len + 24);
     if (buf == NULL) {
        LM_ERR("insert_candidates: out of memory\n");
        return -1;
@@ -1448,7 +1445,6 @@ insert_candidates(struct sip_msg *msg, char *where, str 
*ip, unsigned int port,
 
     at = buf;
 
-    if (rtcp_port->len) {
        append_str(at, "a=candidate:", 12);
        at = append_filtered_ip(at, ip);
        append_str(at, " 2 UDP ", 7);
@@ -1459,11 +1455,10 @@ insert_candidates(struct sip_msg *msg, char *where, str 
*ip, unsigned int port,
        }
        append_str(at, ip->s, ip->len);
        append_chr(at, ' ');
-       append_str(at, rtcp_port->s, rtcp_port->len);
+       append_str(at, rtcp_port.s, rtcp_port.len);
        append_str(at, " typ relay\r\n", 12);
-    }
 
-    rtp_port.s = int2str(port, &rtp_port.len);
+    rtp_port.s = int2str(port, &rtp_port.len); /* beware static buffer */
     append_str(at, "a=candidate:", 12);
     at = append_filtered_ip(at, ip);
     append_str(at, " 1 UDP ", 7);
@@ -1477,6 +1472,8 @@ insert_candidates(struct sip_msg *msg, char *where, str 
*ip, unsigned int port,
     append_str(at, rtp_port.s, rtp_port.len);
     append_str(at, " typ relay\r\n", 12);
 
+    LM_DBG("inserting '%.*s'\n", (int)(at - buf), buf);
+
     anchor = anchor_lump(msg, where - msg->buf, 0, 0);
     if (anchor == 0) {
        LOG(L_ERR, "insert_candidates: can't get anchor\n");
@@ -2704,13 +2701,12 @@ force_rtp_proxy(struct sip_msg* msg, char* str1, char* 
str2, int offer, int forc
 
                        /* Add ice relay candidates */
                        if (ice_candidate_priority_val.n && 
sdp_stream->ice_attrs_num > 0) {
-                           body1.s = sdp_stream->ice_attr->foundation.s - 12;
-                           body1.len = bodylimit - body1.s;
-                           if (insert_candidates(msg, 
sdp_stream->ice_attr->foundation.s - 12,
-                                                 &newip, port, &newrtcp,
-                                                 ice_candidate_priority_val.n) 
== -1) {
-                               FORCE_RTP_PROXY_RET (-1);
-                           }
+                               body1.s = sdp_stream->ice_attr->foundation.s - 
12;
+                               body1.len = bodylimit - body1.s;
+                               if (insert_candidates(msg, 
sdp_stream->ice_attr->foundation.s - 12,
+                                               &newip, port, 
ice_candidate_priority_val.n) == -1) {
+                                       FORCE_RTP_PROXY_RET (-1);
+                               }
                        }
 
                        c1p = sdp_session->ip_addr.s;


_______________________________________________
sr-dev mailing list
[email protected]
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to