Call is not ending if one client is register in the outside home network with tcp connection

I have changed the default SIP port to 5555 from 5060 and it should work for tcp and udp both by setting the following-
bindport=5555
tcpenable=yes
tcpbindaddr=0.0.0.0:5555

I have investigated that the BYE is not reaching to the other end if a extension is in out side of the home network and using TCP.
The same configuration is working when the client is configured with the UDP.

Why it is working on Home Network with tcp (no issue, working fine):
The Asterisk forwarding the INVITE request when the client is on the home network it modify correctly the Via and Contact header -

INVITE sip:[email protected]:15608;rinstance=a05339b3363d3e85;transport=tcp SIP/2.0
Via: SIP/2.0/TCP 192.168.1.107:5555;branch=z9hG4bK36fd8fb8;rport
Max-Forwards: 70
From: “User 6” sip:[email protected]:5555;tag=as706cdae6
To: sip:[email protected]:15608;rinstance=a05339b3363d3e85;transport=tcp
Contact: sip:[email protected]:5555;transport=TCP
Call-ID: [email protected]:5555
CSeq: 102 INVITE
User-Agent: FPBX-2.11.0(11.3.0)
Date: Tue, 15 Mar 2016 07:24:17 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces, timer
Content-Type: application/sdp
Content-Length: 206

v=0
o=root 288203378 288203378 IN IP4 192.168.1.107
s=Asterisk PBX 11.3.0
c=IN IP4 192.168.1.107
t=0 0
m=audio 20024 RTP/AVP 0
a=rtpmap:0 PCMU/8000
a=silenceSupp:off - - - -
a=ptime:20
a=sendrecv

Why it is not working on outside Home Network :
The Asterisk forwarding the INVITE request when the client is on the outside network it modify wrongly the Via and Contact header. It modify the Via and Contact header with Public IP with default 5060 port (not 5555) -

INVITE sip:[email protected]:11176;rinstance=1ef2ea61e673b0e2;transport=tcp SIP/2.0
Via: SIP/2.0/TCP 182.xxx.xxx.xxx:5060;branch=z9hG4bK7a4a1c40;rport
Max-Forwards: 70
From: “User 6” sip:[email protected];tag=as67c78d38
To: sip:[email protected]:11176;rinstance=1ef2ea61e673b0e2;transport=tcp
Contact: sip:[email protected]:5060;transport=TCP
Call-ID: [email protected]:5060
CSeq: 102 INVITE
User-Agent: FPBX-2.11.0(11.3.0)
Date: Mon, 14 Mar 2016 17:05:27 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces, timer
Content-Type: application/sdp
Content-Length: 208

v=0
o=root 1030465394 1030465394 IN IP4 182.xxx.xxx.xxx
s=Asterisk PBX 11.3.0
c=IN IP4 182.xxx.xxx.xxx
t=0 0
m=audio 20008 RTP/AVP 0
a=rtpmap:0 PCMU/8000
a=silenceSupp:off - - - -
a=ptime:20
a=sendrecv


Is there any possible configuration so that it will set the correct (5555) port in the Via and Contact header?