Hi Benny Thanks for the detailed response on my question. It is highly appriciated. I came up with one final idea that it would be great if you could give thumps up or down on if I am missing some special cases. I am only interested in having minimal delay for the INVITE, the rest I do not care about, all other messages can very well be TCP. So my proposal was to set transport=tcp for the outgoing proxy and then in pjsua_make_call(..) when assigning the route set I will know beforhand if this INVITE is to be sent on tcp or udp. Ofcourse I will not know the exact size in bytes but I will have a good idea if it is <1300 bytes. What I imagine doing is modify the route-set for the account under these special conditions and either remove it completly (less good, require dns lookup?) or make a temp route-set as a copy of the original one and just remove the transport=tcp parameter making this dialog use the same route-set but UDP instead of the default TCP if the estimation of the packet size is <1300. I tested just to remove the: f (!pj_list_empty(&acc->route_set)) pjsip_dlg_set_route_set(dlg, &acc->route_set); all together and it appears to work ok. Registration etc is TCP and the dialog is running UDP. The next step would be making a clone of the acc->route_set and removing the transport=tcp. This seems like a pretty simple solution for my needs. Do you think I miss something vital in taking this approach? Thanks Johan