Ignore:
Timestamp:
Sep 4, 2018 3:12:58 PM (6 years ago)
Author:
riza
Message:

Close #2145: Don't rearrange media when sending re-INVITE with
PJSUA_CALL_REINIT_MEDIA.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjsip/src/pjsua2/call.cpp

    r5877 r5878  
    3030/////////////////////////////////////////////////////////////////////////////// 
    3131 
    32 #define SDP_BUFFER_SIZE 1024 
    3332 
    3433MathStat::MathStat() 
     
    111110void SdpSession::fromPj(const pjmedia_sdp_session &sdp) 
    112111{ 
    113     char buf[SDP_BUFFER_SIZE]; 
     112#if PJSUA2_MAX_SDP_BUF_LEN 
     113    char buf[PJSUA2_MAX_SDP_BUF_LEN]; 
    114114    int len; 
    115115 
    116116    len = pjmedia_sdp_print(&sdp, buf, sizeof(buf)); 
    117117    wholeSdp = (len > -1? string(buf, len): ""); 
     118#else 
     119    wholeSdp = ""; 
     120#endif     
    118121    pjSdpSession = (void *)&sdp; 
    119122} 
     
    168171     */ 
    169172    void setPortId(int id); 
     173 
     174    /** 
     175     * Destructor 
     176     */ 
     177    virtual ~CallAudioMedia(); 
    170178}; 
    171179 
     
    174182{ 
    175183    this->id = pid; 
     184} 
     185 
     186CallAudioMedia::~CallAudioMedia() 
     187{ 
     188    id = PJSUA_INVALID_ID; 
    176189} 
    177190 
     
    419432    p_reason = (reason.slen == 0? NULL: &reason); 
    420433 
    421     if (sdp_str == "") { 
    422         sdp = NULL; 
    423     } else { 
     434    sdp = NULL; 
     435    if (sdp_str != "") { 
    424436        pj_str_t dup_pj_sdp; 
    425437        pj_str_t pj_sdp_str = {(char*)sdp_str.c_str(), 
    426438                               (pj_ssize_t)sdp_str.size()}; 
     439        pj_status_t status; 
    427440 
    428441        pj_strdup(pool, &dup_pj_sdp, &pj_sdp_str);         
    429         pjmedia_sdp_parse(pool, dup_pj_sdp.ptr, 
    430                           dup_pj_sdp.slen, &sdp); 
     442        status = pjmedia_sdp_parse(pool, dup_pj_sdp.ptr, 
     443                                   dup_pj_sdp.slen, &sdp); 
     444        if (status != PJ_SUCCESS) { 
     445            PJ_PERROR(4,(THIS_FILE, status, 
     446                         "Failed to parse SDP for call param")); 
     447        } 
    431448    } 
    432449} 
     
    753770     
    754771    if (pjsua_call_get_info(id, &pj_ci) == PJ_SUCCESS) { 
     772        if (medias.size()) { 
     773            /* Clear medias. */ 
     774            for (mi = 0; mi < medias.size(); mi++) { 
     775                if (medias[mi]) 
     776                    delete medias[mi]; 
     777            } 
     778            medias.clear();      
     779        } 
     780 
    755781        for (mi = 0; mi < pj_ci.media_cnt; mi++) { 
    756782            if (mi >= medias.size()) { 
Note: See TracChangeset for help on using the changeset viewer.