From 9a0e3df6df3775d59a9aaea887aa8e33c82b97e9 Mon Sep 17 00:00:00 2001 From: herlesupreeth Date: Mon, 12 Dec 2022 13:23:30 +0100 Subject: [PATCH] Set destination port same as received source port in request --- src/modules/ims_ipsec_pcscf/cmd.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/modules/ims_ipsec_pcscf/cmd.c b/src/modules/ims_ipsec_pcscf/cmd.c index 93e74867d60..f920ab166f7 100644 --- a/src/modules/ims_ipsec_pcscf/cmd.c +++ b/src/modules/ims_ipsec_pcscf/cmd.c @@ -1046,13 +1046,17 @@ int ipsec_forward(struct sip_msg* m, udomain_t* d, int _cflags) // for Reply and TCP sends to UE client port, for Reply and UDP sends to UE server port // dst_port = dst_proto == PROTO_TCP ? s->port_uc : s->port_us; - // From P-CSCF client port - src_port = dst_proto == PROTO_TCP ? req->rcv.dst_port : s->port_pc; - - if (vb && ((vb->port == s->port_uc) || (vb->port == s->port_us))) { - dst_port = vb->port; + // From Reply and TCP send via the same ports Request was recevied. + if (dst_proto == PROTO_TCP) { + src_port = req->rcv.dst_port; + dst_port = req->rcv.src_port; } else { - dst_port = s->port_us; + src_port = s->port_pc; + if (vb && ((vb->port == s->port_uc) || (vb->port == s->port_us))) { + dst_port = vb->port; + } else { + dst_port = s->port_us; + } } // Check send socket