From: George Joseph Date: Wed, 6 Nov 2024 17:31:08 +0000 (-0700) Subject: res_pjsip: Move tenantid to end of ast_sip_endpoint X-Git-Tag: 21.6.0-rc1~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f2fe378b069a09933e980baf4a2d2ad4cfac397b;p=thirdparty%2Fasterisk.git res_pjsip: Move tenantid to end of ast_sip_endpoint 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) --- diff --git a/include/asterisk/res_pjsip.h b/include/asterisk/res_pjsip.h index 421acf4ee3..46e376325c 100644 --- a/include/asterisk/res_pjsip.h +++ b/include/asterisk/res_pjsip.h @@ -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 */ diff --git a/res/res_pjsip/pjsip_configuration.c b/res/res_pjsip/pjsip_configuration.c index 7a76a88c44..c6f4d83b38 100644 --- a/res/res_pjsip/pjsip_configuration.c +++ b/res/res_pjsip/pjsip_configuration.c @@ -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);