mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-20 12:20:12 +00:00
res_pjsip: Support setting a default accountcode on endpoints
Most channel drivers let you specify a default accountcode to be set on channels associated with a particular peer/endpoint/object. Prior to this patch, chan_pjsip/res_pjsip did not support such a setting. This patch adds a new setting to the res_pjsip endpoint object, 'accountcode'. When a channel is created that is associated with an endpoint with this value set, the channel will automatically have its accountcode property set to the value configured for the endpoint. Review: https://reviewboard.asterisk.org/r/3724/ ASTERISK-24000 #close Reported by: Matt Jordan git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@418756 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
11
CHANGES
11
CHANGES
@@ -8,6 +8,17 @@
|
|||||||
===
|
===
|
||||||
==============================================================================
|
==============================================================================
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
--- Functionality changes from Asterisk 12.4.0 to Asterisk 12.5.0 ------------
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
res_pjsip
|
||||||
|
------------------
|
||||||
|
* The endpoint configuration object now supports 'accountcode'. Any channel
|
||||||
|
created for an endpoint with this setting will have its accountcode set
|
||||||
|
to the specified value.
|
||||||
|
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
--- Functionality changes from Asterisk 12.3.0 to Asterisk 12.4.0 ------------
|
--- Functionality changes from Asterisk 12.3.0 to Asterisk 12.4.0 ------------
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
|
@@ -364,8 +364,12 @@ static struct ast_channel *chan_pjsip_new(struct ast_sip_session *session, int s
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(chan = ast_channel_alloc(1, state, S_OR(session->id.number.str, ""), S_OR(session->id.name.str, ""), "", "", "", assignedids, requestor, 0, "PJSIP/%s-%08x", ast_sorcery_object_get_id(session->endpoint),
|
|
||||||
(unsigned)ast_atomic_fetchadd_int((int *)&chan_idx, +1)))) {
|
chan = ast_channel_alloc(1, state, S_OR(session->id.number.str, ""), S_OR(session->id.name.str, ""),
|
||||||
|
session->endpoint->accountcode, "", "", assignedids,
|
||||||
|
requestor, 0, "PJSIP/%s-%08x", ast_sorcery_object_get_id(session->endpoint),
|
||||||
|
(unsigned)ast_atomic_fetchadd_int((int *)&chan_idx, +1));
|
||||||
|
if (!chan) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -435,6 +435,8 @@
|
|||||||
; SYNOPSIS: Endpoint
|
; SYNOPSIS: Endpoint
|
||||||
;100rel=yes ; Allow support for RFC3262 provisional ACK tags (default:
|
;100rel=yes ; Allow support for RFC3262 provisional ACK tags (default:
|
||||||
; "yes")
|
; "yes")
|
||||||
|
;accountcode=foo ; Set a default account code for channels created for
|
||||||
|
; this endpoint
|
||||||
;aggregate_mwi=yes ; (default: "yes")
|
;aggregate_mwi=yes ; (default: "yes")
|
||||||
;allow= ; Media Codec s to allow (default: "")
|
;allow= ; Media Codec s to allow (default: "")
|
||||||
;aors= ; AoR s to be used with the endpoint (default: "")
|
;aors= ; AoR s to be used with the endpoint (default: "")
|
||||||
|
@@ -0,0 +1,20 @@
|
|||||||
|
"""create accountcode
|
||||||
|
|
||||||
|
Revision ID: 1d50859ed02e
|
||||||
|
Revises: 51f8cb66540e
|
||||||
|
Create Date: 2014-07-07 21:07:01.661783
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
# revision identifiers, used by Alembic.
|
||||||
|
revision = '1d50859ed02e'
|
||||||
|
down_revision = '51f8cb66540e'
|
||||||
|
|
||||||
|
from alembic import op
|
||||||
|
import sqlalchemy as sa
|
||||||
|
|
||||||
|
def upgrade():
|
||||||
|
op.add_column('ps_endpoints', sa.Column('accountcode', sa.String(20)))
|
||||||
|
|
||||||
|
def downgrade():
|
||||||
|
op.drop_column('ps_endpoints', 'accountcode')
|
@@ -573,6 +573,8 @@ struct ast_sip_endpoint {
|
|||||||
AST_STRING_FIELD(fromdomain);
|
AST_STRING_FIELD(fromdomain);
|
||||||
/*! Context to route incoming MESSAGE requests to */
|
/*! Context to route incoming MESSAGE requests to */
|
||||||
AST_STRING_FIELD(message_context);
|
AST_STRING_FIELD(message_context);
|
||||||
|
/*! Accountcode to auto-set on channels */
|
||||||
|
AST_STRING_FIELD(accountcode);
|
||||||
);
|
);
|
||||||
/*! Configuration for extensions */
|
/*! Configuration for extensions */
|
||||||
struct ast_sip_endpoint_extensions extensions;
|
struct ast_sip_endpoint_extensions extensions;
|
||||||
|
@@ -715,6 +715,13 @@
|
|||||||
specified, then the <replaceable>context</replaceable> setting is used.
|
specified, then the <replaceable>context</replaceable> setting is used.
|
||||||
</para></description>
|
</para></description>
|
||||||
</configOption>
|
</configOption>
|
||||||
|
<configOption name="accountcode">
|
||||||
|
<synopsis>An accountcode to set automatically on any channels created for this endpoint.</synopsis>
|
||||||
|
<description><para>
|
||||||
|
If specified, any channel created for this endpoint will automatically
|
||||||
|
have this accountcode set on it.
|
||||||
|
</para></description>
|
||||||
|
</configOption>
|
||||||
</configObject>
|
</configObject>
|
||||||
<configObject name="auth">
|
<configObject name="auth">
|
||||||
<synopsis>Authentication type</synopsis>
|
<synopsis>Authentication type</synopsis>
|
||||||
|
@@ -1735,6 +1735,7 @@ int ast_res_pjsip_initialize_configuration(const struct ast_module_info *ast_mod
|
|||||||
ast_sorcery_object_field_register_custom(sip_sorcery, "endpoint", "redirect_method", "user", redirect_handler, NULL, NULL, 0, 0);
|
ast_sorcery_object_field_register_custom(sip_sorcery, "endpoint", "redirect_method", "user", redirect_handler, NULL, NULL, 0, 0);
|
||||||
ast_sorcery_object_field_register_custom(sip_sorcery, "endpoint", "set_var", "", set_var_handler, set_var_to_str, set_var_to_vl, 0, 0);
|
ast_sorcery_object_field_register_custom(sip_sorcery, "endpoint", "set_var", "", set_var_handler, set_var_to_str, set_var_to_vl, 0, 0);
|
||||||
ast_sorcery_object_field_register(sip_sorcery, "endpoint", "message_context", "", OPT_STRINGFIELD_T, 1, STRFLDSET(struct ast_sip_endpoint, message_context));
|
ast_sorcery_object_field_register(sip_sorcery, "endpoint", "message_context", "", OPT_STRINGFIELD_T, 1, STRFLDSET(struct ast_sip_endpoint, message_context));
|
||||||
|
ast_sorcery_object_field_register(sip_sorcery, "endpoint", "accountcode", "", OPT_STRINGFIELD_T, 1, STRFLDSET(struct ast_sip_endpoint, accountcode));
|
||||||
|
|
||||||
if (ast_sip_initialize_sorcery_transport()) {
|
if (ast_sip_initialize_sorcery_transport()) {
|
||||||
ast_log(LOG_ERROR, "Failed to register SIP transport support with sorcery\n");
|
ast_log(LOG_ERROR, "Failed to register SIP transport support with sorcery\n");
|
||||||
|
Reference in New Issue
Block a user