/*only the content*/ void free_sip_msg(struct sip_msg* msg) { if (msg->msg_cb) { msg_callback_process(msg, MSG_DESTROY, NULL); } if (msg->new_uri.s) { pkg_free(msg->new_uri.s); msg->new_uri.len=0; } if (msg->set_global_address.s) { pkg_free(msg->set_global_address.s); msg->set_global_address.s = NULL; } if (msg->set_global_port.s) { pkg_free(msg->set_global_port.s); msg->set_global_port.s = NULL; } if (msg->dst_uri.s) { pkg_free(msg->dst_uri.s); msg->dst_uri.len=0; } if (msg->path_vec.s) { pkg_free(msg->path_vec.s); msg->path_vec.len=0; } if (msg->headers) free_hdr_field_lst(msg->headers); if (msg->sdp) free_sdp(&(msg->sdp)); if (msg->add_rm) free_lump_list(msg->add_rm); if (msg->body_lumps) free_lump_list(msg->body_lumps); if (msg->reply_lump) free_reply_lump(msg->reply_lump); if (msg->multi ) { free_multi_body(msg->multi);msg->multi = 0;} /* don't free anymore -- now a pointer to a static buffer */ # ifdef DYN_BUF pkg_free(msg->buf); # endif }
inline static void free_faked_req(struct sip_msg *faked_req, struct cell *t) { if (faked_req->new_uri.s) { pkg_free(faked_req->new_uri.s); faked_req->new_uri.s = 0; } if (faked_req->dst_uri.s) { pkg_free(faked_req->dst_uri.s); faked_req->dst_uri.s = 0; } if (faked_req->path_vec.s) { pkg_free(faked_req->path_vec.s); faked_req->path_vec.s = 0; } /* SDP in not cloned into SHM, so if we have one, it means the SDP * was parsed in the fake environment, so we have to free it */ if (faked_req->sdp) free_sdp(&(faked_req->sdp)); if (faked_req->multi) { free_multi_body(faked_req->multi); faked_req->multi = 0; } if (faked_req->msg_cb) { msg_callback_process(faked_req, MSG_DESTROY, NULL); } /* free all types of lump that were added in failure handlers */ del_notflaged_lumps( &(faked_req->add_rm), LUMPFLAG_SHMEM ); del_notflaged_lumps( &(faked_req->body_lumps), LUMPFLAG_SHMEM ); del_nonshm_lump_rpl( &(faked_req->reply_lump) ); clean_msg_clone( faked_req, t->uas.request, t->uas.end_request); }