Hello Benny, I use multiple UDP transports in my application. One is used for accounts which are on public Internet and other for the local proxy (both transports use different SIP ports). We saw one weird issue, the REGISTER request is always send from the port which was created at the last (I guess pjsua_create_transport makes the created transport the default one). Because of this the originating UDP port is different from the one mentioned in via and contact headers. All other requests like INVITE, CANCEL, BYE, etc are send from the correct port, with the correct port mentioned in the other headers. The problem seemed to be with REGISTER requests only. After some digging into the library it seems to me that the REGISTER transactions are not using the correct transport. I added the following code to \pjsip\sip_util_statefull.c, inside the function pjsip_endpt_send_request, around line number 105: if (timeout == REGC_TSX_TIMEOUT) { pjsip_regc *regc = (pjsip_regc *)token; if (regc) { pjsip_tsx_set_transport (tsx, ®c->tp_sel); } } This seems to have solved the problem as we now set the transport to be used explicitly, after making the check that the transaction is for a REGISTER request, and the requests are now send from the correct port. But, I'm not sure if this is a solution or just a temporary fix. Can you please shed some light? Thanks. Best Regards, Hitesh