rem: || loopl!=32
add: || loopl!=MD5_LEN
context: int t_reply_matching( struct sip_msg *p_msg , int *p_branch ,											 int *local_cancel){	struct cell*  p_cell;	int hash_index   = 0;	int entry_label  = 0;	int branch_id    = 0;	char  *hashi, *branchi, *p, *n;	int hashl, branchl;	int scan_space;#ifndef USE_SYNONIM	char *loopi;	int loopl;#else	char *syni;	int synl;#endif	/* split the branch into pieces: loop_detection_check(ignored),	 hash_table_id, synonym_id, branch_id */	if (!(p_msg->via1 && p_msg->via1->branch && p_msg->via1->branch->value.s))		goto nomatch2;	p=p_msg->via1->branch->value.s;	scan_space=p_msg->via1->branch->value.len;#ifndef USE_SYNONIM	/* loop detection ... ignore */	n=eat_token2_end( p, p+scan_space, BRANCH_SEPARATOR );	loopl = n-p;	scan_space-= loopl;	if (n==p || scan_space<2 || *n!=BRANCH_SEPARATOR) goto nomatch2;	loopi=p;	p=n+1; scan_space--;#endif	/* hash_id */	n=eat_token2_end( p, p+scan_space, BRANCH_SEPARATOR);	hashl=n-p;	scan_space-=hashl;	if (!hashl || scan_space<2 || *n!=BRANCH_SEPARATOR) goto nomatch2;	hashi=p;	p=n+1;scan_space--;#ifdef USE_SYNONIM	/* sequence id */	n=eat_token2_end( p, p+scan_space, BRANCH_SEPARATOR);	synl=n-p;	scan_space-=synl;	if (!synl || scan_space<2 || *n!=BRANCH_SEPARATOR) goto nomatch2;	syni=p;	p=n+1;scan_space--;#endif	/* branch id  -  should exceed the scan_space */	n=eat_token_end( p, p+scan_space );	branchl=n-p;	if (!branchl ) goto nomatch2;	branchi=p;	/* sanity check */	if ((hash_index=reverse_hex2int(hashi, hashl))<0||hash_index>=TABLE_ENTRIES		|| (branch_id=reverse_hex2int(branchi, branchl))<0||branch_id>=MAX_FORK#ifdef USE_SYNONIM		|| (entry_label=reverse_hex2int(syni, synl))<0#else		|| loopl!=32#endif	) {		DBG("DEBUG: t_reply_matching: poor reply lables %d label %d "			"branch %d\n",hash_index, entry_label, branch_id );		goto nomatch2;	}	DBG("DEBUG: t_reply_matching: hash %d label %d branch %d\n",		hash_index, entry_label, branch_id );	/* lock the hole entry*/	lock(&(hash_table->entrys[hash_index].mutex));	/*all the cells from the entry are scan to detect an entry_label matching*/	p_cell = hash_table->entrys[hash_index].first_cell;	while( p_cell )	{		/* is it the cell with the wanted entry_label? */		if ( (get_cseq(p_msg)->method.len ==		get_cseq(p_cell->uas.request)->method.len)		&& ((get_cseq(p_msg)->method.s[0] ==		get_cseq(p_cell->uas.request)->method.s[0] && (*local_cancel=0)==0)		|| (get_cseq(p_cell->uas.request)->method.s[0]=='I' &&		get_cseq(p_msg)->method.s[0]=='C'		&& p_cell->uac[branch_id].request.cancel!=NO_CANCEL		&& p_cell->uac[branch_id].request.cancel!=EXTERNAL_CANCEL		&& (*local_cancel=1)==1))#ifdef USE_SYNONIM		&& ( p_cell->label == entry_label )#else		&& ( p_cell->uas.request->add_to_branch_len>=32 &&		!memcmp(p_cell->uas.request->add_to_branch_s,loopi,32))#endif		)			/* has the transaction the wanted branch? */			if ( p_cell->nr_of_outgoings>branch_id )			{/* WE FOUND THE GOLDEN EGG !!!! */				T = p_cell;				*p_branch = branch_id;				T_REF( T );				unlock(&(hash_table->entrys[hash_index].mutex));				DBG("DEBUG: t_reply_matching: reply matched (T=%p,ref=%x)!\n",					T,T->ref_bitmap);				return 1;			}		/* next cell */		p_cell = p_cell->next_cell;	} /* while p_cell */	/* nothing found */	unlock(&(hash_table->entrys[hash_index].mutex));	DBG("DEBUG: t_reply_matching: no matching transaction exists\n");nomatch2:	DBG("DEBUG: t_reply_matching: failure to match a transaction\n");	*p_branch = -1;	T = 0;	return -1;}