rem: send_udp( T->outbound_request[0]->buffer , T->outbound_request[0]->bufflen , &(T->outbound_request[0]->to) , sizeof(struct sockaddr_in) );
add: udp_send( T->outbound_request[0]->buffer , T->outbound_request[0]->bufflen , &(T->outbound_request[0]->to) , sizeof(struct sockaddr_in) );
context: int t_forward( struct sip_msg* p_msg , unsigned int dest_ip_param , unsigned int dest_port_param ){   /* it's about the same transaction or not? */   if ( global_msg_id != p_msg->id )   {      T = (struct cell*)-1;      global_msg_id = p_msg->id;   }   /* if  T hasn't been previous searched -> search for it */   if ( (int)T !=-1 )      t_lookup_request( p_msg );   /*if T hasn't been found after all -> return not found (error) */   if ( !T )      return -1;   /*if it's an ACK and the status is not final or is final, but error the ACK is not forwarded*/   if ( p_msg->first_line.u.request.method_value==METHOD_ACK  && (T->status/100)!=2 )      return 0;   /* if it's forwarded for the first time ; else the request is retransmited from the transaction buffer */   if ( T->outbound_request[0]==NULL )   {      unsigned int dest_ip     = dest_ip_param;      unsigned int dest_port  = dest_port_param;      unsigned int len;      char               *buf;      /* allocates a new retrans_buff for the outbound request */      T->outbound_request[0] = (struct retrans_buff*)sh_malloc( sizeof(struct retrans_buff) );      memset( T->outbound_request[0] , 0 , sizeof (struct retrans_buff) );      T->nr_of_outgoings = 1;      /* special case : CANCEL */      if ( p_msg->first_line.u.request.method_value==METHOD_CANCEL  )      {         struct cell  *T2;         /* find original cancelled transaction; if found, use its next-hops; otherwise use those passed by script */         T2 = t_lookupOriginalT( hash_table , p_msg );         /* if found */         if (T2)         {  /* if in 1xx status, send to the same destination */            if ( (T2->status/100)==1 )            {               dest_ip    = T2->outbound_request[0]->dest_ip;               dest_port = T2->outbound_request[0]->dest_port;            }            else               /* transaction exists, but nothing to cancel */             return 0;         }      }/* end special case CANCEL*/      /* store */      T->outbound_request[0]->tl[0].payload = &(T->outbound_request[0]);      T->outbound_request[0]->dest_ip         = dest_ip;      T->outbound_request[0]->dest_port      = dest_port;      T->outbound_request[0]->to.sin_family = AF_INET;      T->outbound_request[0]->to.sin_port     = htonl( dest_port ) ;      T->outbound_request[0]->to.sin_addr.s_addr = ntohl( dest_ip ) ;      buf = build_buf_from_sip_request  ( p_msg, &len);      if (!buf)         return -1;      T->outbound_request[0]->bufflen = len ;      T->outbound_request[0]->buffer   = (char*)sh_malloc( len );      memcpy( T->outbound_request[0]->buffer , buf , len );      free( buf ) ;   }/* end for the first time */   /* sets and starts the RETRANS timer */   T->outbound_request[0]->nr_retrans    = 0;   T->outbound_request[0]->max_retrans = (T->inbound_request->first_line.u.request.method_value==METHOD_INVITE) ? MAX_INVITE_RETR : MAX_NON_INVITE_RETR;   T->outbound_request[0]->timeout         = RETR_T1;   /* send the request */   send_udp( T->outbound_request[0]->buffer , T->outbound_request[0]->bufflen , &(T->outbound_request[0]->to) , sizeof(struct sockaddr_in) );}