Ignore:
Timestamp:
Jan 24, 2008 7:20:54 PM (11 years ago)
Author:
bennylp
Message:

Return 406/Not Acceptable if SRTP negotiation failed instead of 500

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjsip/src/pjsua-lib/pjsua_media.c

    r1735 r1742  
    747747pj_status_t pjsua_media_channel_init(pjsua_call_id call_id, 
    748748                                     pjsip_role_e role, 
    749                                      int security_level) 
     749                                     int security_level, 
     750                                     int *sip_err_code) 
    750751{ 
    751752    pjsua_call *call = &pjsua_var.calls[call_id]; 
     
    774775    if (acc->cfg.use_srtp != PJMEDIA_SRTP_DISABLED) { 
    775776        if (security_level < acc->cfg.srtp_secure_signaling) { 
     777            if (sip_err_code) 
     778                *sip_err_code = PJSIP_SC_NOT_ACCEPTABLE; 
    776779            return PJSIP_ESESSIONINSECURE; 
    777780        } 
     
    785788                                           call->med_tp, 
    786789                                           &srtp_opt, &srtp); 
    787     if (status != PJ_SUCCESS) 
    788         return status; 
     790    if (status != PJ_SUCCESS) { 
     791        if (sip_err_code) 
     792            *sip_err_code = PJSIP_SC_INTERNAL_SERVER_ERROR; 
     793        return status; 
     794    } 
    789795 
    790796    /* Set SRTP as current media transport */ 
     
    802808                                           pj_pool_t *pool, 
    803809                                           const pjmedia_sdp_session *rem_sdp, 
    804                                            pjmedia_sdp_session **p_sdp) 
     810                                           pjmedia_sdp_session **p_sdp, 
     811                                           int *sip_status_code) 
    805812{ 
    806813    enum { MAX_MEDIA = 1, MEDIA_IDX = 0 }; 
     
    823830    status = pjmedia_endpt_create_sdp(pjsua_var.med_endpt, pool, MAX_MEDIA, 
    824831                                      &skinfo, &sdp); 
    825     if (status != PJ_SUCCESS) 
     832    if (status != PJ_SUCCESS) { 
     833        if (sip_status_code) *sip_status_code = 500; 
    826834        goto on_error; 
     835    } 
    827836 
    828837    /* Add NAT info in the SDP */ 
     
    853862    status = pjmedia_transport_media_create(call->med_tp, pool,  
    854863                                            sdp, rem_sdp, MEDIA_IDX); 
    855     if (status != PJ_SUCCESS) 
     864    if (status != PJ_SUCCESS) { 
     865        if (sip_status_code) *sip_status_code = PJSIP_SC_NOT_ACCEPTABLE; 
    856866        goto on_error; 
     867    } 
    857868 
    858869    *p_sdp = sdp; 
Note: See TracChangeset for help on using the changeset viewer.