Changeset 1810 for pjproject/trunk/pjmedia/src/pjmedia/transport_srtp.c
- Timestamp:
- Feb 21, 2008 10:08:27 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjmedia/src/pjmedia/transport_srtp.c
r1763 r1810 36 36 #define MAX_BUFFER_LEN 1500 37 37 #define MAX_KEY_LEN 32 38 #define DEACTIVATE_MEDIA(pool, m) {\ 39 attr = pjmedia_sdp_attr_create(pool, ID_INACTIVE.ptr, NULL); \ 40 m->attr[m->attr_count++] = attr; \ 41 m->desc.port = 0; \ 42 } 38 #define DEACTIVATE_MEDIA(pool, m) pjmedia_sdp_media_deactivate(pool, m) 43 39 44 40 static const pj_str_t ID_RTP_AVP = { "RTP/AVP", 7 }; … … 84 80 pj_lock_t *mutex; 85 81 char tx_buffer[MAX_BUFFER_LEN]; 86 87 82 pjmedia_srtp_setting setting; 83 unsigned media_option; 84 88 85 /* SRTP policy */ 89 86 pj_bool_t session_inited; … … 151 148 static pj_status_t transport_media_create(pjmedia_transport *tp, 152 149 pj_pool_t *pool, 150 unsigned options, 153 151 pjmedia_sdp_session *sdp_local, 154 152 const pjmedia_sdp_session *sdp_remote, … … 925 923 static pj_status_t transport_media_create(pjmedia_transport *tp, 926 924 pj_pool_t *pool, 925 unsigned options, 927 926 pjmedia_sdp_session *sdp_local, 928 927 const pjmedia_sdp_session *sdp_remote, … … 938 937 pj_str_t attr_value; 939 938 int i, j; 939 unsigned member_tp_option; 940 940 941 941 PJ_ASSERT_RETURN(tp && pool && sdp_local, PJ_EINVAL); 942 943 srtp->media_option = options; 944 member_tp_option = options | PJMEDIA_TPMED_NO_TRANSPORT_CHECKING; 942 945 943 946 pj_bzero(&srtp->rx_policy, sizeof(srtp->tx_policy)); … … 1131 1134 BYPASS_SRTP: 1132 1135 srtp->bypass_srtp = PJ_TRUE; 1136 member_tp_option &= ~PJMEDIA_TPMED_NO_TRANSPORT_CHECKING; 1133 1137 1134 1138 PROPAGATE_MEDIA_CREATE: 1135 return pjmedia_transport_media_create(srtp->real_tp, pool, sdp_local, 1136 sdp_remote, media_index); 1139 return pjmedia_transport_media_create(srtp->real_tp, pool, 1140 member_tp_option, 1141 sdp_local, sdp_remote, media_index); 1137 1142 } 1138 1143 … … 1148 1153 pjmedia_sdp_media *m_rem, *m_loc; 1149 1154 pj_status_t status; 1150 pjmedia_sdp_attr *attr;1151 1155 int i; 1152 1156 … … 1172 1176 goto BYPASS_SRTP; 1173 1177 } else if (srtp->setting.use == PJMEDIA_SRTP_OPTIONAL) { 1174 if (pj_stricmp(&m_rem->desc.transport, &m_loc->desc.transport)) { 1175 DEACTIVATE_MEDIA(pool, m_loc); 1176 return PJMEDIA_SDP_EINPROTO; 1177 } 1178 // Regardless the answer's transport type (RTP/AVP or RTP/SAVP), 1179 // the answer must be processed through in optional mode. 1180 // Please note that at this point transport type is ensured to be 1181 // RTP/AVP or RTP/SAVP, see transport_media_create() 1182 //if (pj_stricmp(&m_rem->desc.transport, &m_loc->desc.transport)) { 1183 //DEACTIVATE_MEDIA(pool, m_loc); 1184 //return PJMEDIA_SDP_EINPROTO; 1185 //} 1178 1186 } else if (srtp->setting.use == PJMEDIA_SRTP_MANDATORY) { 1179 1187 if (pj_stricmp(&m_rem->desc.transport, &ID_RTP_SAVP)) {
Note: See TracChangeset
for help on using the changeset viewer.