Ignore:
Timestamp:
Apr 28, 2011 4:01:40 AM (13 years ago)
Author:
ming
Message:

Fixed #1243: ICE bug: If RTCP is not in use, the agent MUST signal that using b=RS:0 and b=RR:0

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjmedia/src/pjmedia/sdp.c

    r3541 r3547  
    545545} 
    546546 
     547PJ_DEF(pjmedia_sdp_bandw*) 
     548pjmedia_sdp_bandw_clone (pj_pool_t *pool,  
     549                         const pjmedia_sdp_bandw *rhs) 
     550{ 
     551    pjmedia_sdp_bandw *b = PJ_POOL_ALLOC_T(pool, pjmedia_sdp_bandw); 
     552    if (!b) return NULL; 
     553 
     554    if (!pj_strdup (pool, &b->modifier, &rhs->modifier)) return NULL; 
     555    b->value = rhs->value; 
     556 
     557    return b; 
     558} 
     559 
     560static pj_ssize_t print_bandw(const pjmedia_sdp_bandw *bandw, 
     561                              char *buf, pj_size_t len) 
     562{ 
     563    char *p = buf; 
     564 
     565    if ((int)len < bandw->modifier.slen + 10 + 5) 
     566        return -1; 
     567 
     568    *p++ = 'b'; 
     569    *p++ = '='; 
     570    pj_memcpy(p, bandw->modifier.ptr, bandw->modifier.slen); 
     571    p += bandw->modifier.slen; 
     572    *p++ = ':'; 
     573    p += pj_utoa(bandw->value, p); 
     574 
     575    *p++ = '\r'; 
     576    *p++ = '\n'; 
     577    return p-buf; 
     578} 
     579 
    547580static pj_ssize_t print_attr(const pjmedia_sdp_attr *attr,  
    548581                             char *buf, pj_size_t len) 
     
    612645        p += printed; 
    613646    } 
     647     
     648    /* print optional bandwidth info. */ 
     649    for (i=0; i<m->bandw_count; ++i) { 
     650        printed = print_bandw(m->bandw[i], p, end-p); 
     651        if (printed < 0) { 
     652            return -1; 
     653        } 
     654        p += printed; 
     655    } 
    614656 
    615657    /* print attributes. */ 
     
    646688    } else { 
    647689        m->conn = NULL; 
     690    } 
     691 
     692    m->bandw_count = rhs->bandw_count; 
     693    for (i=0; i < rhs->bandw_count; ++i) { 
     694        m->bandw[i] = pjmedia_sdp_bandw_clone (pool, rhs->bandw[i]); 
     695        PJ_ASSERT_RETURN(m->bandw[i] != NULL, NULL); 
    648696    } 
    649697 
     
    14681516    } 
    14691517 
     1518    m->bandw_count = rhs->bandw_count; 
     1519    for (i=0; i < rhs->bandw_count; ++i) { 
     1520        m->bandw[i] = pjmedia_sdp_bandw_clone (pool, rhs->bandw[i]); 
     1521        PJ_ASSERT_RETURN(m->bandw[i] != NULL, NULL); 
     1522    } 
     1523 
    14701524    /* And deactivate it */ 
    14711525    pjmedia_sdp_media_deactivate(pool, m); 
Note: See TracChangeset for help on using the changeset viewer.