Module: kamailio
Branch: master
Commit: 4e91363d645489369a51ec0c9f8ea12c0cb5c1c8
URL: 
https://github.com/kamailio/kamailio/commit/4e91363d645489369a51ec0c9f8ea12c0cb5c1c8

Author: Daniel-Constantin Mierla <[email protected]>
Committer: Daniel-Constantin Mierla <[email protected]>
Date: 2026-01-21T09:52:13+01:00

corex: add_tcp_alias() replacement for force_tcp_alias()

- extended support for var parameter and ws/wss

---

Modified: src/modules/corex/corex_mod.c

---

Diff:  
https://github.com/kamailio/kamailio/commit/4e91363d645489369a51ec0c9f8ea12c0cb5c1c8.diff
Patch: 
https://github.com/kamailio/kamailio/commit/4e91363d645489369a51ec0c9f8ea12c0cb5c1c8.patch

---

diff --git a/src/modules/corex/corex_mod.c b/src/modules/corex/corex_mod.c
index d8feb9ac8ad..b7c445db999 100644
--- a/src/modules/corex/corex_mod.c
+++ b/src/modules/corex/corex_mod.c
@@ -84,6 +84,8 @@ static int w_msg_vbflag_reset(sip_msg_t *msg, char *pflag, 
char *p2);
 static int w_msg_vbflag_is_set(sip_msg_t *msg, char *pflag, char *p2);
 static int w_msg_vbflag_parse(sip_msg_t *msg, char *p1, char *p2);
 
+static int w_add_tcp_alias(sip_msg_t *msg, char *pport, char *s2);
+
 static int fixup_file_op(void **param, int param_no);
 static int fixup_free_file_op(void **param, int param_no);
 
@@ -198,7 +200,8 @@ static cmd_export_t cmds[] = {
                fixup_igp_null, fixup_free_igp_null, ANY_ROUTE},
        {"msg_vbflag_parse", (cmd_function)w_msg_vbflag_parse, 1,
                0, 0, ANY_ROUTE},
-
+       {"add_tcp_alias", (cmd_function)w_add_tcp_alias, 1,
+               fixup_igp_null, fixup_free_igp_null, ANY_ROUTE},
        {0, 0, 0, 0, 0, 0}
 };
 
@@ -877,6 +880,48 @@ static int w_msg_vbflag_parse(sip_msg_t *msg, char *p1, 
char *p2)
        return ki_msg_vbflag_parse(msg);
 }
 
+/**
+ *
+ */
+static int ki_add_tcp_alias(sip_msg_t *msg, int port)
+{
+       if(!(msg->rcv.proto == PROTO_TCP || msg->rcv.proto == PROTO_TLS
+                          || msg->rcv.proto == PROTO_WS || msg->rcv.proto == 
PROTO_WSS)) {
+               return -1;
+       }
+
+       if(port <= 0) {
+               if(parse_headers(msg, HDR_VIA1_F, 0) < 0) {
+                       LM_DBG("failed to parse sip headers\n");
+                       return -1;
+               }
+               if(msg->via1 == NULL) {
+                       LM_DBG("no via headers\n");
+                       return -1;
+               }
+               port = msg->via1->port;
+       }
+       if(tcpconn_add_alias(msg->rcv.proto_reserved1, port, msg->rcv.proto) != 
0) {
+               LM_ERR("adding tcp alias failed\n");
+               return -1;
+       }
+
+       return 1;
+}
+
+/**
+ *
+ */
+static int w_add_tcp_alias(sip_msg_t *msg, char *pport, char *s2)
+{
+       int pval = 0;
+       if(fixup_get_ivalue(msg, (gparam_t *)pport, &pval) != 0) {
+               LM_ERR("no port value\n");
+               return -1;
+       }
+       return ki_add_tcp_alias(msg, pval);
+}
+
 /**
  *
  */

_______________________________________________
Kamailio - Development Mailing List -- [email protected]
To unsubscribe send an email to [email protected]
Important: keep the mailing list in the recipients, do not reply only to the 
sender!

Reply via email to