Reply with 488+SDP instead of 415 when incoming SDP is not acceptable (thanks Alain Totouom)

git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@1693 74dad513-b988-da41-8d7b-12977e46ad98
diff --git a/pjsip/src/pjsua-lib/pjsua_call.c b/pjsip/src/pjsua-lib/pjsua_call.c
index 5306d25..04c540b 100644
--- a/pjsip/src/pjsua-lib/pjsua_call.c
+++ b/pjsip/src/pjsua-lib/pjsua_call.c
@@ -2284,12 +2284,31 @@
 static void call_disconnect( pjsip_inv_session *inv, 
 			     int code )
 {
+    pjsua_call *call;
     pjsip_tx_data *tdata;
     pj_status_t status;
 
+    call = (pjsua_call*) inv->dlg->mod_data[pjsua_var.mod.id];
+
     status = pjsip_inv_end_session(inv, code, NULL, &tdata);
-    if (status == PJ_SUCCESS)
-	pjsip_inv_send_msg(inv, tdata);
+    if (status != PJ_SUCCESS)
+	return;
+
+    /* Add SDP in 488 status */
+    if (call && call->med_tp && code==PJSIP_SC_NOT_ACCEPTABLE_HERE) {
+	pjmedia_sdp_session *local_sdp;
+	pjmedia_sock_info si;
+
+	call->med_tp->op->get_info(call->med_tp, &si);
+	status = pjmedia_endpt_create_sdp(pjsua_var.med_endpt, tdata->pool, 
+					  1, &si, &local_sdp);
+	if (status == PJ_SUCCESS) {
+	    pjsip_create_sdp_body(tdata->pool, local_sdp,
+				  &tdata->msg->body);
+	}
+    }
+
+    pjsip_inv_send_msg(inv, tdata);
 }
 
 /*
@@ -2360,7 +2379,7 @@
     if (status != PJ_SUCCESS) {
 	pjsua_perror(THIS_FILE, "Unable to create media session", 
 		     status);
-	call_disconnect(inv, PJSIP_SC_UNSUPPORTED_MEDIA_TYPE);
+	call_disconnect(inv, PJSIP_SC_NOT_ACCEPTABLE_HERE);
 	pjsua_media_channel_deinit(call->index);
 	PJSUA_UNLOCK();
 	return;