Changeset 5845 for pjproject


Ignore:
Timestamp:
Jul 26, 2018 7:19:39 AM (11 months ago)
Author:
nanang
Message:

Re #2096:

  • Added new error code for sending RTP/RTCP failure when DTLS-SRTP nego is in progress.
  • When sending RTP/RTCP fails, only print error message once for consecutive same errors.
Location:
pjproject/trunk/pjmedia
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjmedia/include/pjmedia/errno.h

    r5823 r5845  
    627627 */ 
    628628#define PJMEDIA_SRTP_ESDPREQSECTP   (PJMEDIA_ERRNO_START+229)    /* 220229 */ 
     629/** 
     630 * @hideinitializer 
     631 * SRTP parameters negotiation still in progress. 
     632 */ 
     633#define PJMEDIA_SRTP_EKEYNOTREADY   (PJMEDIA_ERRNO_START+230)    /* 220230 */ 
    629634 
    630635/** 
  • pjproject/trunk/pjmedia/src/pjmedia/errno.c

    r5824 r5845  
    167167    PJ_BUILD_ERR( PJMEDIA_SRTP_ESDPREQCRYPTO,   "SRTP crypto attribute required" ), 
    168168    PJ_BUILD_ERR( PJMEDIA_SRTP_ESDPREQSECTP,    "Secure transport required in SDP media descriptor" ), 
     169    PJ_BUILD_ERR( PJMEDIA_SRTP_EKEYNOTREADY,    "SRTP parameters negotiation still in progress" ), 
    169170    PJ_BUILD_ERR( PJMEDIA_SRTP_DTLS_ENOCRYPTO,  "No matching SRTP crypto-suite after DTLS nego" ), 
    170171    PJ_BUILD_ERR( PJMEDIA_SRTP_DTLS_EPEERNOCERT,"No certificate supplied by peer in DTLS nego" ), 
  • pjproject/trunk/pjmedia/src/pjmedia/stream.c

    r5825 r5845  
    247247    pj_uint32_t              rtp_rx_last_ts;        /**< Last received RTP timestamp*/ 
    248248    pj_status_t              rtp_rx_last_err;       /**< Last RTP recv() error */ 
     249    pj_status_t              rtp_tx_last_err;       /**< Last RTP send() error */ 
     250    pj_status_t              rtcp_tx_last_err;      /**< Last RTCP send() error */ 
    249251 
    250252    /* RTCP Feedback */ 
     
    11421144    /* Send! */ 
    11431145    status = pjmedia_transport_send_rtcp(stream->transport, pkt, len); 
     1146    if (status != PJ_SUCCESS) { 
     1147        if (stream->rtcp_tx_last_err != status) { 
     1148            PJ_PERROR(4,(stream->port.info.name.ptr, status, 
     1149                         "Error sending RTCP")); 
     1150            stream->rtcp_tx_last_err = status; 
     1151        } 
     1152    } else { 
     1153        if (stream->rtcp_tx_last_err != PJ_SUCCESS) { 
     1154            PJ_LOG(4,(stream->port.info.name.ptr, "Sending RTCP resumed")); 
     1155            stream->rtcp_tx_last_err = PJ_SUCCESS; 
     1156        } 
     1157    } 
    11441158 
    11451159    return status; 
     
    11841198        status = send_rtcp(stream, !stream->rtcp_sdes_bye_disabled, PJ_FALSE, 
    11851199                           with_xr, PJ_FALSE); 
    1186         if (status != PJ_SUCCESS) { 
    1187             PJ_PERROR(4,(stream->port.info.name.ptr, status, 
    1188                          "Error sending RTCP")); 
    1189         } 
    1190  
    1191         stream->rtcp_last_tx = timestamp; 
     1200        if (status == PJ_SUCCESS) { 
     1201            stream->rtcp_last_tx = timestamp; 
     1202        } 
    11921203    } 
    11931204} 
     
    14851496                                            sizeof(pjmedia_rtp_hdr)); 
    14861497    if (status != PJ_SUCCESS) { 
    1487         PJ_PERROR(4,(stream->port.info.name.ptr, status, 
    1488                      "Error sending RTP")); 
     1498        if (stream->rtp_tx_last_err != status) { 
     1499            PJ_PERROR(4,(stream->port.info.name.ptr, status, 
     1500                         "Error sending RTP")); 
     1501            stream->rtp_tx_last_err = status; 
     1502        } 
    14891503        return PJ_SUCCESS; 
     1504    } else { 
     1505        if (stream->rtp_tx_last_err != PJ_SUCCESS) { 
     1506            PJ_LOG(4,(stream->port.info.name.ptr, "Sending RTP resumed")); 
     1507            stream->rtp_tx_last_err = PJ_SUCCESS; 
     1508        } 
    14901509    } 
    14911510 
  • pjproject/trunk/pjmedia/src/pjmedia/transport_srtp.c

    r5811 r5845  
    11901190    if (!srtp->session_inited) { 
    11911191        pj_lock_release(srtp->mutex); 
    1192         return PJ_EINVALIDOP; 
     1192        return PJMEDIA_SRTP_EKEYNOTREADY; 
    11931193    } 
    11941194    err = srtp_protect(srtp->srtp_tx_ctx, srtp->rtp_tx_buffer, &len); 
     
    12361236    if (!srtp->session_inited) { 
    12371237        pj_lock_release(srtp->mutex); 
    1238         return PJ_EINVALIDOP; 
     1238        return PJMEDIA_SRTP_EKEYNOTREADY; 
    12391239    } 
    12401240    err = srtp_protect_rtcp(srtp->srtp_tx_ctx, srtp->rtcp_tx_buffer, &len); 
Note: See TracChangeset for help on using the changeset viewer.