add: free_duped_lump_list(fake->body_lumps);
context: static int faked_env(struct sip_msg *fake, 				struct cell *_t,				struct sip_msg *shmem_msg,				int _restore ){	static enum route_mode backup_mode;	static struct cell *backup_t;	static unsigned int backup_msgid;	if (_restore) goto restore;	/*      on_negative_reply faked msg now copied from shmem msg (as opposed     to zero-ing) -- more "read-only" actions (exec in particular) will      work from reply_route as they will see msg->from, etc.; caution,      rw actions may append some pkg stuff to msg, which will possibly be      never released (shmem is released in a single block)    */	memcpy( fake, shmem_msg, sizeof(struct sip_msg));	/* if we set msg_id to something different from current's message       id, the first t_fork will properly clean new branch URIs	*/	fake->id=shmem_msg->id-1;	/* set items, which will be duped to pkg_mem, to zero, so that	 * "restore" called on error does not free the original items */	fake->add_rm=0;	fake->new_uri.s=0; fake->new_uri.len=0; 	/* remember we are back in request processing, but process	 * a shmem-ed replica of the request; advertise it in rmode;	 * for example t_reply needs to know that	 */	backup_mode=rmode;	rmode=MODE_ONFAILURE;	/* also, tm actions look in beginning whether tranaction is	 * set -- whether we are called from a reply-processing 	 * or a timer process, we need to set current transaction;	 * otherwise the actions would attempt to look the transaction	 * up (unnecessary overhead, refcounting)	 */	/* backup */	backup_t=get_t();	backup_msgid=global_msg_id;	/* fake transaction and message id */	global_msg_id=fake->id;	set_t(_t);	/* environment is set up now, try to fake the message */	/* new_uri can change -- make a private copy */	if (shmem_msg->new_uri.s!=0 && shmem_msg->new_uri.len!=0) {		fake->new_uri.s=pkg_malloc(shmem_msg->new_uri.len+1);		if (!fake->new_uri.s) {			LOG(L_ERR, "ERROR: faked_env: no uri/pkg mem\n");			goto restore;		}		fake->new_uri.len=shmem_msg->new_uri.len;		memcpy( fake->new_uri.s, shmem_msg->new_uri.s, 			fake->new_uri.len);		fake->new_uri.s[fake->new_uri.len]=0;	} 	/* create a duplicated lump list to which actions can add	 * new pkg items 	 */	if (shmem_msg->add_rm) {		fake->add_rm=dup_lump_list(shmem_msg->add_rm);		if (!fake->add_rm) { /* non_emty->empty ... failure */			LOG(L_ERR, "ERROR: on_negative_reply: lump dup failed\n");			goto restore;		}	}	/* success */	return 1;restore:	/* restore original environment and destroy faked message */	free_duped_lump_list(fake->add_rm);	if (fake->new_uri.s) pkg_free(fake->new_uri.s);	set_t(backup_t);	global_msg_id=backup_msgid;	rmode=backup_mode;	return 0;}