Revert "Fix SDP overflow"

This reverts commit 0c5309a3c8.
This commit is contained in:
Simon Morlat 2014-10-29 22:59:39 +01:00
parent b84133da77
commit de1f471a89

View file

@ -75,33 +75,22 @@ static void sdp_process(SalOp *h){
static int set_sdp(belle_sip_message_t *msg,belle_sdp_session_description_t* session_desc) {
belle_sip_header_content_type_t* content_type ;
belle_sip_header_content_length_t* content_length;
belle_sip_error_code error = BELLE_SIP_BUFFER_OVERFLOW;
belle_sip_error_code error = BELLE_SIP_OK;
size_t length = 0;
char buff[2048];
if (session_desc) {
size_t bufLen = 2048;
size_t hardlimit = 16*1024; /* 16k SDP limit seems reasonable */
char* buff = belle_sip_malloc(bufLen);
content_type = belle_sip_header_content_type_create("application","sdp");
/* try to marshal the description. This could go higher than 2k so we iterate */
while( error != BELLE_SIP_OK && bufLen <= hardlimit && buff != NULL){
// error = belle_sip_object_marshal(BELLE_SIP_OBJECT(session_desc),buff,bufLen,&length);
if( error != BELLE_SIP_OK ){
bufLen *= 2;
buff = belle_sip_realloc(buff,bufLen);
}
}
/* give up if hard limit reached */
if (error != BELLE_SIP_OK || buff == NULL) {
ms_error("Buffer too small (%d) or not enough memory, giving up SDP", (int)bufLen);
error = belle_sip_object_marshal(BELLE_SIP_OBJECT(session_desc),buff,sizeof(buff),&length);
if (error != BELLE_SIP_OK) {
ms_error("Buffer too small or sdp too big");
return -1;
}
content_length = belle_sip_header_content_length_create(length);
content_length= belle_sip_header_content_length_create(length);
belle_sip_message_add_header(msg,BELLE_SIP_HEADER(content_type));
belle_sip_message_add_header(msg,BELLE_SIP_HEADER(content_length));
belle_sip_message_assign_body(msg,buff,length);
belle_sip_message_set_body(msg,buff,length);
return 0;
} else {
return -1;
@ -330,7 +319,7 @@ static void call_process_transaction_terminated(void *user_ctx, const belle_sip_
belle_sip_request_t* req;
belle_sip_response_t* resp;
bool_t release_call=FALSE;
if (client_transaction) {
req=belle_sip_transaction_get_request(BELLE_SIP_TRANSACTION(client_transaction));
resp=belle_sip_transaction_get_response(BELLE_SIP_TRANSACTION(client_transaction));