]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
res_pjsip: Move tenantid to end of ast_sip_endpoint
authorGeorge Joseph <gjoseph@sangoma.com>
Wed, 6 Nov 2024 17:31:08 +0000 (10:31 -0700)
committerAsterisk Development Team <asteriskteam@digium.com>
Thu, 14 Nov 2024 20:01:35 +0000 (20:01 +0000)
The tenantid field was originally added to the ast_sip_endpoint
structure at the end of the AST_DECLARE_STRING_FIELDS block.  This
caused everything after it in the structure to move down in memory
and break ABI compatibility.  It's now at the end of the structure
as an AST_STRING_FIELD_EXTENDED.  Given the number of string fields
in the structure now, the initial string field allocation was
also increased from 64 to 128 bytes.

Resolves: #982
(cherry picked from commit be8f3a3fa48e59be48c3c8ccabe42bb311a8dd3d)

include/asterisk/res_pjsip.h
res/res_pjsip/pjsip_configuration.c

index 421acf4ee3857320b8387e234f94f17b55c1f692..46e376325c51d6353816b4e7dd2a59f1ae6e9b0c 100644 (file)
@@ -984,8 +984,6 @@ struct ast_sip_endpoint {
                AST_STRING_FIELD(incoming_mwi_mailbox);
                /*! STIR/SHAKEN profile to use */
                AST_STRING_FIELD(stir_shaken_profile);
-               /*! Tenant ID for the endpoint */
-               AST_STRING_FIELD(tenantid);
        );
        /*! Configuration for extensions */
        struct ast_sip_endpoint_extensions extensions;
@@ -1069,6 +1067,8 @@ struct ast_sip_endpoint {
        enum ast_sip_100rel_mode rel100;
        /*! Send Advice-of-Charge messages */
        unsigned int send_aoc;
+       /*! Tenant ID for the endpoint */
+       AST_STRING_FIELD_EXTENDED(tenantid);
 };
 
 /*! URI parameter for symmetric transport */
index 7a76a88c44ec475dfff9bc9de8265ccb8e0767d5..c6f4d83b383ede54feed17d89f81b9f7b67d70e5 100644 (file)
@@ -2458,7 +2458,7 @@ void *ast_sip_endpoint_alloc(const char *name)
        if (!endpoint) {
                return NULL;
        }
-       if (ast_string_field_init(endpoint, 64)) {
+       if (ast_string_field_init(endpoint, 128)) {
                ao2_cleanup(endpoint);
                return NULL;
        }
@@ -2472,6 +2472,10 @@ void *ast_sip_endpoint_alloc(const char *name)
                ao2_cleanup(endpoint);
                return NULL;
        }
+       if (ast_string_field_init_extended(endpoint, tenantid)) {
+               ao2_cleanup(endpoint);
+               return NULL;
+       }
 
        if (!(endpoint->media.codecs = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_DEFAULT))) {
                ao2_cleanup(endpoint);