rem: unref_cell( p_cell );
context: struct cell* t_lookupOriginalT(  struct s_table* hash_table , struct sip_msg* p_msg ){   struct cell      *p_cell;   struct cell      *tmp_cell;   unsigned int  hash_index=0;   /* it's a CANCEL request for sure */   /* start searching into the table */   hash_index = hash( p_msg->callid->body , get_cseq(p_msg)->number  ) ;   DBG("DEBUG: t_lookupOriginalT: searching on hash entry %d\n",hash_index );   /* all the transactions from the entry are compared */   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 wanted transaction ? */      /* first only the length are checked */      if ( /*from length*/ p_cell->inbound_request->from->body.len == p_msg->from->body.len )         if ( /*to length*/ p_cell->inbound_request->to->body.len == p_msg->to->body.len )            //if ( /*tag length*/ (!p_cell->inbound_request->tag && !p_msg->tag) || (p_cell->inbound_request->tag && p_msg->tag && p_cell->inbound_request->tag->body.len == p_msg->tag->body.len) )               if ( /*callid length*/ p_cell->inbound_request->callid->body.len == p_msg->callid->body.len )                  if ( /*cseq_nr length*/ get_cseq(p_cell->inbound_request)->number.len == get_cseq(p_msg)->number.len )                      if ( /*cseq_method type*/ p_cell->inbound_request->first_line.u.request.method_value!=METHOD_CANCEL )                         if ( /*req_uri length*/ p_cell->inbound_request->first_line.u.request.uri.len == p_msg->first_line.u.request.uri.len )                             /* so far the lengths are the same -> let's check the contents */                             if ( /*from*/ !memcmp( p_cell->inbound_request->from->body.s , p_msg->from->body.s , p_msg->from->body.len ) )                                if ( /*to*/ !memcmp( p_cell->inbound_request->to->body.s , p_msg->to->body.s , p_msg->to->body.len)  )                                   //if ( /*tag*/ (!p_cell->inbound_request->tag && !p_msg->tag) || (p_cell->inbound_request->tag && p_msg->tag && !memcmp( p_cell->inbound_request->tag->body.s , p_msg->tag->body.s , p_msg->tag->body.len )) )                                      if ( /*callid*/ !memcmp( p_cell->inbound_request->callid->body.s , p_msg->callid->body.s , p_msg->callid->body.len ) )                                          if ( /*cseq_nr*/ !memcmp( get_cseq(p_cell->inbound_request)->number.s , get_cseq(p_msg)->number.s , get_cseq(p_msg)->number.len ) )                                             if ( /*req_uri*/ !memcmp( p_cell->inbound_request->first_line.u.request.uri.s , p_msg->first_line.u.request.uri.s , p_msg->first_line.u.request.uri.len ) )                                             { /* WE FOUND THE GOLDEN EGG !!!! */                                                unref_cell( p_cell );                                                return p_cell;                                             }      /* next transaction */      tmp_cell = p_cell;      p_cell = p_cell->next_cell;      /* the transaction is dereferenceted */      unref_cell( tmp_cell );   }   /* no transaction found */   T = 0;   return 0;   return 0;}