mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-19 19:52:48 +00:00
pjsip: Added "reg_server" to contacts.
If the Asterisk system name is set in asterisk.conf, it will be stored into the "reg_server" field in the ps_contacts table to facilitate multi-server setups. ASTERISK-25931 Change-Id: Ia8f6bd2267809c78753b52bcf21835b9b59f4cb8
This commit is contained in:
committed by
Joshua Colp
parent
adf32d1191
commit
2b1edee772
9
CHANGES
9
CHANGES
@@ -272,6 +272,15 @@ Queue
|
|||||||
* Show the time when started the last pause for queue member on CLI for command
|
* Show the time when started the last pause for queue member on CLI for command
|
||||||
'queue show'.
|
'queue show'.
|
||||||
|
|
||||||
|
--- Functionality changes from Asterisk 13.9.0 to Asterisk 13.10.0 -----------
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
res_pjsip
|
||||||
|
------------------
|
||||||
|
* Added "reg_server" to contacts.
|
||||||
|
If the Asterisk system name is set in asterisk.conf, it will be stored
|
||||||
|
into the "reg_server" field in the ps_contacts table to facilitate
|
||||||
|
multi-server setups.
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
--- Functionality changes from Asterisk 13.8.0 to Asterisk 13.9.0 ------------
|
--- Functionality changes from Asterisk 13.8.0 to Asterisk 13.9.0 ------------
|
||||||
|
@@ -0,0 +1,25 @@
|
|||||||
|
"""pjsip: add contact reg_server
|
||||||
|
|
||||||
|
Revision ID: 81b01a191a46
|
||||||
|
Revises: 65eb22eb195
|
||||||
|
Create Date: 2016-04-15 15:00:35.024525
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
# revision identifiers, used by Alembic.
|
||||||
|
revision = '81b01a191a46'
|
||||||
|
down_revision = '65eb22eb195'
|
||||||
|
|
||||||
|
from alembic import op
|
||||||
|
import sqlalchemy as sa
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade():
|
||||||
|
op.add_column('ps_contacts', sa.Column('reg_server', sa.String(20)))
|
||||||
|
op.drop_constraint(UniqueConstraint('id'), 'ps_contacts', type_='unique')
|
||||||
|
op.create_unique_constraint('ps_contacts_uq', 'ps_contacts', ['id','reg_server'])
|
||||||
|
|
||||||
|
def downgrade():
|
||||||
|
op.drop_constraint('ps_contacts_uq', 'ps_contacts', type_='unique')
|
||||||
|
op.drop_column('reg_server')
|
||||||
|
op.create_unique_constraint(None, 'ps_contacts', 'id')
|
@@ -248,6 +248,8 @@ struct ast_sip_contact {
|
|||||||
double qualify_timeout;
|
double qualify_timeout;
|
||||||
/*! Endpoint that added the contact, only available in observers */
|
/*! Endpoint that added the contact, only available in observers */
|
||||||
struct ast_sip_endpoint *endpoint;
|
struct ast_sip_endpoint *endpoint;
|
||||||
|
/*! Asterisk Server name */
|
||||||
|
AST_STRING_FIELD_EXTENDED(reg_server);
|
||||||
};
|
};
|
||||||
|
|
||||||
#define CONTACT_STATUS "contact_status"
|
#define CONTACT_STATUS "contact_status"
|
||||||
|
@@ -1112,6 +1112,12 @@
|
|||||||
REGISTER requests and is not intended to be configured manually.
|
REGISTER requests and is not intended to be configured manually.
|
||||||
</para></description>
|
</para></description>
|
||||||
</configOption>
|
</configOption>
|
||||||
|
<configOption name="reg_server">
|
||||||
|
<synopsis>Asterisk Server name</synopsis>
|
||||||
|
<description><para>
|
||||||
|
Asterisk Server name on which SIP endpoint registered.
|
||||||
|
</para></description>
|
||||||
|
</configOption>
|
||||||
</configObject>
|
</configObject>
|
||||||
<configObject name="aor">
|
<configObject name="aor">
|
||||||
<synopsis>The configuration for a location of an endpoint</synopsis>
|
<synopsis>The configuration for a location of an endpoint</synopsis>
|
||||||
|
@@ -23,6 +23,7 @@
|
|||||||
#include "asterisk/res_pjsip.h"
|
#include "asterisk/res_pjsip.h"
|
||||||
#include "asterisk/logger.h"
|
#include "asterisk/logger.h"
|
||||||
#include "asterisk/astobj2.h"
|
#include "asterisk/astobj2.h"
|
||||||
|
#include "asterisk/paths.h"
|
||||||
#include "asterisk/sorcery.h"
|
#include "asterisk/sorcery.h"
|
||||||
#include "include/res_pjsip_private.h"
|
#include "include/res_pjsip_private.h"
|
||||||
#include "asterisk/res_pjsip_cli.h"
|
#include "asterisk/res_pjsip_cli.h"
|
||||||
@@ -119,6 +120,8 @@ static void *contact_alloc(const char *name)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ast_string_field_init_extended(contact, reg_server);
|
||||||
|
|
||||||
/* Dynamic contacts are delimited with ";@" and static ones with "@@" */
|
/* Dynamic contacts are delimited with ";@" and static ones with "@@" */
|
||||||
if ((aor_separator = strstr(id, ";@")) || (aor_separator = strstr(id, "@@"))) {
|
if ((aor_separator = strstr(id, ";@")) || (aor_separator = strstr(id, "@@"))) {
|
||||||
*aor_separator = '\0';
|
*aor_separator = '\0';
|
||||||
@@ -330,6 +333,10 @@ int ast_sip_location_add_contact_nolock(struct ast_sip_aor *aor, const char *uri
|
|||||||
ast_string_field_set(contact, user_agent, user_agent);
|
ast_string_field_set(contact, user_agent, user_agent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!ast_strlen_zero(ast_config_AST_SYSTEM_NAME)) {
|
||||||
|
ast_string_field_set(contact, reg_server, ast_config_AST_SYSTEM_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
contact->endpoint = ao2_bump(endpoint);
|
contact->endpoint = ao2_bump(endpoint);
|
||||||
|
|
||||||
return ast_sorcery_create(ast_sip_get_sorcery(), contact);
|
return ast_sorcery_create(ast_sip_get_sorcery(), contact);
|
||||||
@@ -1111,6 +1118,7 @@ int ast_sip_initialize_sorcery_location(void)
|
|||||||
ast_sorcery_object_field_register(sorcery, "contact", "qualify_timeout", "3.0", OPT_DOUBLE_T, 0, FLDSET(struct ast_sip_contact, qualify_timeout));
|
ast_sorcery_object_field_register(sorcery, "contact", "qualify_timeout", "3.0", OPT_DOUBLE_T, 0, FLDSET(struct ast_sip_contact, qualify_timeout));
|
||||||
ast_sorcery_object_field_register(sorcery, "contact", "outbound_proxy", "", OPT_STRINGFIELD_T, 0, STRFLDSET(struct ast_sip_contact, outbound_proxy));
|
ast_sorcery_object_field_register(sorcery, "contact", "outbound_proxy", "", OPT_STRINGFIELD_T, 0, STRFLDSET(struct ast_sip_contact, outbound_proxy));
|
||||||
ast_sorcery_object_field_register(sorcery, "contact", "user_agent", "", OPT_STRINGFIELD_T, 0, STRFLDSET(struct ast_sip_contact, user_agent));
|
ast_sorcery_object_field_register(sorcery, "contact", "user_agent", "", OPT_STRINGFIELD_T, 0, STRFLDSET(struct ast_sip_contact, user_agent));
|
||||||
|
ast_sorcery_object_field_register(sorcery, "contact", "reg_server", "", OPT_STRINGFIELD_T, 0, STRFLDSET(struct ast_sip_contact, reg_server));
|
||||||
|
|
||||||
ast_sorcery_object_field_register(sorcery, "aor", "type", "", OPT_NOOP_T, 0, 0);
|
ast_sorcery_object_field_register(sorcery, "aor", "type", "", OPT_NOOP_T, 0, 0);
|
||||||
ast_sorcery_object_field_register(sorcery, "aor", "minimum_expiration", "60", OPT_UINT_T, 0, FLDSET(struct ast_sip_aor, minimum_expiration));
|
ast_sorcery_object_field_register(sorcery, "aor", "minimum_expiration", "60", OPT_UINT_T, 0, FLDSET(struct ast_sip_aor, minimum_expiration));
|
||||||
|
@@ -30,6 +30,7 @@
|
|||||||
|
|
||||||
#include "asterisk/res_pjsip.h"
|
#include "asterisk/res_pjsip.h"
|
||||||
#include "asterisk/module.h"
|
#include "asterisk/module.h"
|
||||||
|
#include "asterisk/paths.h"
|
||||||
#include "asterisk/test.h"
|
#include "asterisk/test.h"
|
||||||
#include "asterisk/taskprocessor.h"
|
#include "asterisk/taskprocessor.h"
|
||||||
#include "asterisk/manager.h"
|
#include "asterisk/manager.h"
|
||||||
@@ -555,6 +556,9 @@ static int rx_task_core(struct rx_task_data *task_data, struct ao2_container *co
|
|||||||
if (user_agent) {
|
if (user_agent) {
|
||||||
ast_string_field_set(contact_update, user_agent, user_agent);
|
ast_string_field_set(contact_update, user_agent, user_agent);
|
||||||
}
|
}
|
||||||
|
if (!ast_strlen_zero(ast_config_AST_SYSTEM_NAME)) {
|
||||||
|
ast_string_field_set(contact_update, reg_server, ast_config_AST_SYSTEM_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
if (ast_sip_location_update_contact(contact_update)) {
|
if (ast_sip_location_update_contact(contact_update)) {
|
||||||
ast_log(LOG_ERROR, "Failed to update contact '%s' expiration time to %d seconds.\n",
|
ast_log(LOG_ERROR, "Failed to update contact '%s' expiration time to %d seconds.\n",
|
||||||
|
Reference in New Issue
Block a user