add: DBG("DEBUG: build_cell : done\n");
context: struct cell*  build_cell( struct sip_msg* p_msg ){   struct cell*  new_cell;   int                i;    /* do we have the source for the build process? */   if (!p_msg)      return NULL;   /* allocs a new cell */   new_cell = (struct cell*)sh_malloc( sizeof( struct cell ) );   if  ( !new_cell )      return NULL;   /* filling with 0 */   memset( new_cell, 0, sizeof( struct cell ) );   /* hash index of the entry */   new_cell->hash_index = hash( p_msg->callid->body , get_cseq(p_msg)->number );   /* mutex */   /* ref counter is 0 */   /* all pointers from timers list tl are NULL */   new_cell->wait_tl.payload = new_cell;   new_cell->dele_tl.payload = new_cell;   /* inbound request */   /* force parsing all the needed headers*/   if (parse_headers(p_msg, HDR_EOH )==-1)	goto error;   new_cell->inbound_request =  sip_msg_cloner(p_msg) ;   if (!new_cell->inbound_request)	goto error;   /* inbound response is NULL*/   /* status is 0 */   /* tag pointer is NULL */   //if ( p_msg->tag )      TO DO !!!!!!!!!!!!!!!!!!!!!!   //   new_cell->tag  =  &(new_cell->inbound_request->tag->body);   /* nr of outbound requests is 0 */   /* all pointers from outbound_request array are NULL */   /* all pointers from outbound_response array are NULL */   /*init the links with the canceled / canceler transaction */   new_cell->relaied_reply_branch   = -1;   new_cell->T_canceled  = T_UNDEFINED;   new_cell->T_canceler  = T_UNDEFINED;   init_cell_lock(  new_cell );   return new_cell;error:	sh_free(new_cell);	return NULL;}