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