add: DBG("DEBUG: t_reply_matching: reply matched!\n");
context: int t_reply_matching( struct s_table *hash_table , struct sip_msg *p_msg , struct cell **p_Trans , unsigned int *p_branch ){   struct cell*  p_cell;   struct cell* tmp_cell;   unsigned int hash_index = 0;   unsigned int entry_label  = 0;   unsigned int branch_id    = 0;   char  *hashi, *syni, *branchi, *p, *n;   int hashl, synl, branchl;   int scan_space;   /* 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 nomatch;   p=p_msg->via1->branch->value.s;   scan_space=p_msg->via1->branch->value.len;   /* loop detection ... ignore */    n=eat_token2_end( p, p+scan_space, '.');   scan_space-=n-p;   if (n==p || scan_space<2 || *n!='.') goto nomatch;   p=n+1; scan_space--;   /* hash_id */   n=eat_token2_end( p, p+scan_space, '.');    hashl=n-p;   scan_space-=hashl;   if (!hashl || scan_space<2 || *n!='.') goto nomatch;   hashi=p;   p=n+1;scan_space--;   /* sequence id */   n=eat_token2_end( p, p+scan_space, '.');   synl=n-p;   scan_space-=synl;   if (!synl || scan_space<2 || *n!='.') goto nomatch;   syni=p;   p=n+1;scan_space--;   /* branch id */  /*  should exceed the scan_space */   n=eat_token_end( p, p+scan_space );   branchl=n-p;   if (!branchl ) goto nomatch;    branchi=p;   hash_index=str_unsigned_hex_2_int(hashi, hashl);   entry_label=str_unsigned_hex_2_int(syni, synl);   branch_id=str_unsigned_hex_2_int(branchi, branchl);   DBG("DEBUG: t_reply_matching: hash %d label %d branch %d\n", 	hash_index, entry_label, branch_id );   /* sanity check */   if (hash_index==-1 || hash_index >=TABLE_ENTRIES ||       entry_label==-1 || branch_id==-1 ||	branch_id>=MAX_FORK )		goto nomatch;   /*all the cells from the entry are scan to detect an entry_label matching */   p_cell     = hash_table->entrys[hash_index].first_cell;   tmp_cell = 0;   while( p_cell )   {      /* the transaction is referenceted for reading */      ref_cell( p_cell );      /* is it the cell with the wanted entry_label? */      if ( p_cell->label = entry_label )      /* has the transaction the wanted branch? */      if ( p_cell->nr_of_outgoings>branch_id && p_cell->outbound_request[branch_id] )      {/* WE FOUND THE GOLDEN EGG !!!! */		*p_Trans = p_cell;		*p_branch = branch_id;		unref_cell( p_cell );		return 1;	}      /* next cell */      tmp_cell = p_cell;      p_cell = p_cell->next_cell;      /* the transaction is dereferenceted */      unref_cell( tmp_cell );   } /* while p_cell */   /* nothing found */   DBG("DEBUG: t_reply_matching: no matching transaction exists\n");nomatch:   DBG("DEBUG: t_reply_matching: failure to match a transaction\n");   *p_branch = -1;   *p_Trans = NULL;   return 0;}