static int acquire_body_simple(belle_sip_channel_t *obj, int end_of_stream){ int content_length=obj->input_stream.content_length; size_t to_read=obj->input_stream.write_ptr-obj->input_stream.read_ptr; belle_sip_message_t *msg=obj->input_stream.msg; belle_sip_body_handler_t *bh=belle_sip_message_get_body_handler(msg); size_t cursize=belle_sip_body_handler_get_transfered_size(bh); if ((cursize == 0) && (to_read == 0)) { /** * No data has been received yet, so do not call feed_body() with a size * of 0 that is meaning that the transfer is finished. */ } else { to_read=MIN(content_length-cursize, to_read); feed_body(obj,to_read); } if (end_of_stream || belle_sip_body_handler_get_transfered_size(bh)>=content_length){ /*great body completed*/ belle_sip_message("channel [%p] read [%i] bytes of body from [%s:%i]" ,obj ,content_length ,obj->peer_name ,obj->peer_port); belle_sip_channel_message_ready(obj); return BELLE_SIP_CONTINUE; } /*body is not finished, we need more data*/ return BELLE_SIP_STOP; }
static int acquire_body_simple(belle_sip_channel_t *obj, int end_of_stream){ int content_length=obj->input_stream.content_length; size_t to_read=obj->input_stream.write_ptr-obj->input_stream.read_ptr; belle_sip_message_t *msg=obj->input_stream.msg; belle_sip_body_handler_t *bh=belle_sip_message_get_body_handler(msg); size_t cursize=belle_sip_body_handler_get_transfered_size(bh); to_read=MIN(content_length-cursize, to_read); feed_body(obj,to_read); if (end_of_stream || belle_sip_body_handler_get_transfered_size(bh)>=content_length){ /*great body completed belle_sip_message("channel [%p] read [%i] bytes of body from %s:%i\n%s" ,obj ,content_length ,obj->peer_name ,obj->peer_port ,obj->input_stream.read_ptr);*/ belle_sip_channel_message_ready(obj); return BELLE_SIP_CONTINUE; } /*body is not finished, we need more data*/ return BELLE_SIP_STOP; }