Ignore:
Timestamp:
May 18, 2018 7:12:41 AM (6 years ago)
Author:
nanang
Message:

Re #2096:

  • Fixed memory leak due to not destroyed DTLS-SRTP keying (when it is not active).
  • DTLS-SRTP must not destroy itself, keying destroy must be initiated by SRTP.
File:
1 edited

Legend:

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

    r5788 r5794  
    10621062        switch (ds->srtp->setting.use) { 
    10631063            case PJMEDIA_SRTP_DISABLED: 
    1064                 if (attr_setup) 
    1065                     return PJMEDIA_SRTP_ESDPINTRANSPORT; 
     1064                if (attr_setup) { 
     1065                    status = PJMEDIA_SRTP_ESDPINTRANSPORT; 
     1066                    goto on_return; 
     1067                } 
    10661068                break; 
    10671069            case PJMEDIA_SRTP_OPTIONAL: 
    10681070                break; 
    10691071            case PJMEDIA_SRTP_MANDATORY: 
    1070                 if (!attr_setup) 
    1071                     return PJMEDIA_SRTP_ESDPINTRANSPORT; 
     1072                if (!attr_setup) { 
     1073                    status = PJMEDIA_SRTP_ESDPINTRANSPORT; 
     1074                    goto on_return; 
     1075                } 
    10721076                break; 
    10731077        } 
     
    10781082 
    10791083on_return: 
     1084#if DTLS_DEBUG 
    10801085    if (status != PJ_SUCCESS) { 
    10811086        pj_perror(4, ds->base.name, status, "dtls_media_create() failed"); 
    1082         dtls_destroy(tp); 
    1083     } 
     1087    } 
     1088#endif 
    10841089    return status; 
    10851090} 
     
    12561261 
    12571262on_return: 
     1263#if DTLS_DEBUG 
    12581264    if (status != PJ_SUCCESS) { 
    12591265        pj_perror(4, ds->base.name, status, "dtls_encode_sdp() failed"); 
    1260         dtls_destroy(tp); 
    1261     } 
     1266    } 
     1267#endif 
    12621268    return status; 
    12631269} 
     
    13931399 
    13941400on_return: 
     1401#if DTLS_DEBUG 
    13951402    if (status != PJ_SUCCESS) { 
    13961403        pj_perror(4, ds->base.name, status, "dtls_media_start() failed"); 
    1397         dtls_destroy(tp); 
    1398     } 
     1404    } 
     1405#endif 
    13991406    return status; 
    14001407} 
Note: See TracChangeset for help on using the changeset viewer.