From 5f21fdb06088e8d37e277075ef01228cf05ac713 Mon Sep 17 00:00:00 2001
From: Wenpeng Song <wenpeng.song@iopsys.eu>
Date: Thu, 23 May 2024 14:10:51 +0000
Subject: [PATCH] Add config parameter "allow_tx_hash_in_uri" in pjsip, REF
 14468

---
 res/res_pjsip/config_global.c | 7 +++++++
 schemas/uci/asterisk.json     | 7 +++++++
 2 files changed, 14 insertions(+)

diff --git a/res/res_pjsip/config_global.c b/res/res_pjsip/config_global.c
index 8fef34e252..0148116f7f 100644
--- a/res/res_pjsip/config_global.c
+++ b/res/res_pjsip/config_global.c
@@ -124,6 +124,9 @@ struct global_config {
 	unsigned int accept_proxy_req_only;
 	/*! Nonzero if we should return all codecs on empty re-INVITE */
 	unsigned int all_codecs_on_empty_reinvite;
+	/*! Allow hash ('#') to appear in outgoing URIs. Default: NO */
+	unsigned int allow_tx_hash_in_uri;
+
 };
 
 static void global_destructor(void *obj)
@@ -213,6 +216,8 @@ static int global_apply(const struct ast_sorcery *sorcery, void *obj)
 		return -1;
 	}
 
+	pjsip_cfg()->endpt.allow_tx_hash_in_uri = cfg->allow_tx_hash_in_uri;
+
 	ao2_t_global_obj_replace_unref(global_cfg, cfg, "Applying global settings");
 	return 0;
 }
@@ -784,6 +789,8 @@ int ast_sip_initialize_sorcery_global(void)
 	ast_sorcery_object_field_register(sorcery, "global", "all_codecs_on_empty_reinvite",
 		DEFAULT_ALL_CODECS_ON_EMPTY_REINVITE ? "yes" : "no",
 		OPT_BOOL_T, 1, FLDSET(struct global_config, all_codecs_on_empty_reinvite));
+	ast_sorcery_object_field_register(sorcery, "global", "allow_tx_hash_in_uri", "no",
+		OPT_YESNO_T, 1, FLDSET(struct global_config, allow_tx_hash_in_uri));
 
 	if (ast_sorcery_instance_observer_add(sorcery, &observer_callbacks_global)) {
 		return -1;
diff --git a/schemas/uci/asterisk.json b/schemas/uci/asterisk.json
index e7297ee375..b94dd19ced 100644
--- a/schemas/uci/asterisk.json
+++ b/schemas/uci/asterisk.json
@@ -389,6 +389,13 @@
                     "required": "",
                     "default": "",
                     "description": "Server details which allows NAT clients"
+                },
+                {
+                    "name": "allow_tx_hash_in_uri",
+                    "type": "integer",
+                    "required": "",
+                    "default": "0",
+                    "description": "Allows unescaped '#' in outgoing SIP URI. "
                 }
             ]
         },
-- 
GitLab