Changeset 4924 for pjproject/trunk/pjsip/src/pjsua-lib/pjsua_call.c
- Timestamp:
- Sep 17, 2014 12:11:45 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjsip/src/pjsua-lib/pjsua_call.c
r4923 r4924 1200 1200 1201 1201 status = sdp_info->sdp_err; 1202 if (status==PJ_SUCCESS && sdp_info->sdp==NULL) 1203 status = PJSIP_ERRNO_FROM_SIP_STATUS(PJSIP_SC_NOT_ACCEPTABLE); 1202 if (status==PJ_SUCCESS && sdp_info->sdp==NULL && 1203 !PJSIP_INV_ACCEPT_UNKNOWN_BODY) 1204 { 1205 if (sdp_info->body.ptr == NULL) { 1206 status = PJSIP_ERRNO_FROM_SIP_STATUS( 1207 PJSIP_SC_UNSUPPORTED_MEDIA_TYPE); 1208 } else { 1209 status = PJSIP_ERRNO_FROM_SIP_STATUS(PJSIP_SC_NOT_ACCEPTABLE); 1210 } 1211 } 1204 1212 1205 1213 if (status != PJ_SUCCESS) { 1206 const pj_str_t reason = pj_str("Bad SDP");1207 1214 pjsip_hdr hdr_list; 1208 pjsip_warning_hdr *w; 1209 1210 pjsua_perror(THIS_FILE, "Bad SDP in incoming INVITE", 1211 status); 1212 1213 w = pjsip_warning_hdr_create_from_status(rdata->tp_info.pool, 1214 pjsip_endpt_name(pjsua_var.endpt), 1215 status); 1216 pj_list_init(&hdr_list); 1217 pj_list_push_back(&hdr_list, w); 1218 1219 pjsip_endpt_respond(pjsua_var.endpt, NULL, rdata, 400, 1220 &reason, &hdr_list, NULL, NULL); 1215 1216 /* Check if body really contains SDP. */ 1217 if (sdp_info->body.ptr == NULL) { 1218 /* Couldn't find "application/sdp" */ 1219 pjsip_accept_hdr *acc; 1220 1221 pjsua_perror(THIS_FILE, "Unknown Content-Type in incoming "\ 1222 "INVITE", status); 1223 1224 /* Add Accept header to response */ 1225 acc = pjsip_accept_hdr_create(rdata->tp_info.pool); 1226 PJ_ASSERT_RETURN(acc, PJ_ENOMEM); 1227 acc->values[acc->count++] = pj_str("application/sdp"); 1228 pj_list_init(&hdr_list); 1229 pj_list_push_back(&hdr_list, acc); 1230 1231 pjsip_endpt_respond(pjsua_var.endpt, NULL, rdata, 1232 PJSIP_SC_UNSUPPORTED_MEDIA_TYPE, 1233 NULL, &hdr_list, NULL, NULL); 1234 } else { 1235 const pj_str_t reason = pj_str("Bad SDP"); 1236 pjsip_warning_hdr *w; 1237 1238 pjsua_perror(THIS_FILE, "Bad SDP in incoming INVITE", 1239 status); 1240 1241 w = pjsip_warning_hdr_create_from_status(rdata->tp_info.pool, 1242 pjsip_endpt_name(pjsua_var.endpt), 1243 status); 1244 pj_list_init(&hdr_list); 1245 pj_list_push_back(&hdr_list, w); 1246 1247 pjsip_endpt_respond(pjsua_var.endpt, NULL, rdata, 400, 1248 &reason, &hdr_list, NULL, NULL); 1249 } 1221 1250 goto on_return; 1222 1251 } … … 1225 1254 * checks will be done in pjsip_inv_verify_request2() below. 1226 1255 */ 1227 if ( offer->media_count==0) {1256 if ((offer) && (offer->media_count==0)) { 1228 1257 const pj_str_t reason = pj_str("Missing media in SDP"); 1229 1258 pjsip_endpt_respond(pjsua_var.endpt, NULL, rdata, 400, &reason,
Note: See TracChangeset
for help on using the changeset viewer.