Esempio n. 1
0
void sal_body_handler_set_size(SalBodyHandler *body_handler, size_t size) {
	belle_sip_header_content_length_t *content_length = BELLE_SIP_HEADER_CONTENT_LENGTH(sal_body_handler_find_header(body_handler, "Content-Length"));
	if (content_length == NULL) {
		content_length = belle_sip_header_content_length_new();
		belle_sip_body_handler_add_header(BELLE_SIP_BODY_HANDLER(body_handler), BELLE_SIP_HEADER(content_length));
	}
	belle_sip_header_content_length_set_content_length(content_length, size);
	belle_sip_body_handler_set_size(BELLE_SIP_BODY_HANDLER(body_handler), size);
}
Esempio n. 2
0
static void check_content_length(belle_sip_message_t *msg, size_t body_len){
	belle_sip_header_content_length_t *ctlen=belle_sip_message_get_header_by_type(msg,belle_sip_header_content_length_t);
	unsigned int value=ctlen ? belle_sip_header_content_length_get_content_length(ctlen) : 0;
	if (body_len){
		if (ctlen==NULL){
			belle_sip_message("message [%p] has body of size [%i] but no Content-Length, adding it.",msg,(int)body_len);
			belle_sip_message_add_header(msg,
				(belle_sip_header_t*)belle_sip_header_content_length_create((int)body_len)
			);
		}else{
			if (value!=(unsigned int)body_len){
				belle_sip_warning("message [%p] has Content-Length [%u] and body size [%i] which are inconsistent, fixing it.",
					msg, value, (int)body_len);
				belle_sip_header_content_length_set_content_length(ctlen,(int)value);
			}
		}
	}else{
		/*no body, or undetermined size body*/
		if (ctlen && value!=0){
			belle_sip_error("message [%p] has Content-Length [%u], but without body or body with undetermined size. Fix your app.",
				msg,value);
		}
	}
}