Hello, 
I have this scenario:
  - subscriber registers using TLS
  - call arrives from PSTN gateway (in UDP) to subscriber
  - I relay the INVITE to subscriber but it doesn't answer the call
  - the subscriber has callforward enabled
  - we send the call to PSTN callforward destination using carrierroute

In the above, after calling cr_route I use this:
  $du = "sip:" + $rd + ":" + $rp + ";transport=udp";
to force the call to PSTN gateway to go out as UDP because after trying to call the subscriber, the transport changes and stays as TLS.

However, if instead of callforward the user has voicemail enabled, we use dispatcher to send the call to a cluster of media servers.
So, after calling ds_select_dst()
I call
   $du = "sip:" + $dd + ":" + $dp + ";transport=udp";
but this is unable to force the call to go as UDP but it still goes as in TLS

In both cases I see this in the log files:

/usr/local/src/git/kamailio-4.3/kamailio[19277]: WARNING: <core> [forward.c:231]: get_send_socket2(): protocol/port mismatch (forced tls:XXX.XXX.XXX.XXX:5061, to udp:YYY.YYY.YYY.YYY:5060)

But it only works for carrierroute, not for dispatcher.
I am not sure if this is a bug in dispatcher.
But anyway, is there any other way I could try to force transport=UDP?

Regards,
Takeshi