[Asterisk-code-review] pjsip: Added "reg server" to contacts. (asterisk[13])
Joshua Colp
asteriskteam at digium.com
Tue May 3 12:41:23 CDT 2016
Joshua Colp has submitted this change and it was merged.
Change subject: pjsip: Added "reg_server" to contacts.
......................................................................
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
---
M CHANGES
A contrib/ast-db-manage/config/versions/81b01a191a46_pjsip_add_contact_reg_server.py
M include/asterisk/res_pjsip.h
M res/res_pjsip.c
M res/res_pjsip/location.c
M res/res_pjsip_registrar.c
6 files changed, 56 insertions(+), 0 deletions(-)
Approvals:
Joshua Colp: Looks good to me, approved; Verified
George Joseph: Looks good to me, but someone else must approve
diff --git a/CHANGES b/CHANGES
index 44f6929..8d527d1 100644
--- a/CHANGES
+++ b/CHANGES
@@ -9,6 +9,17 @@
==============================================================================
------------------------------------------------------------------------------
+--- 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 ------------
------------------------------------------------------------------------------
diff --git a/contrib/ast-db-manage/config/versions/81b01a191a46_pjsip_add_contact_reg_server.py b/contrib/ast-db-manage/config/versions/81b01a191a46_pjsip_add_contact_reg_server.py
new file mode 100644
index 0000000..8bd151b
--- /dev/null
+++ b/contrib/ast-db-manage/config/versions/81b01a191a46_pjsip_add_contact_reg_server.py
@@ -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')
diff --git a/include/asterisk/res_pjsip.h b/include/asterisk/res_pjsip.h
index 5ffeaff..f284702 100644
--- a/include/asterisk/res_pjsip.h
+++ b/include/asterisk/res_pjsip.h
@@ -248,6 +248,8 @@
struct ast_sip_endpoint *endpoint;
/*! The name of the aor this contact belongs to */
char *aor;
+ /*! Asterisk Server name */
+ AST_STRING_FIELD_EXTENDED(reg_server);
};
#define CONTACT_STATUS "contact_status"
diff --git a/res/res_pjsip.c b/res/res_pjsip.c
index 1595ffd..ae7155b 100644
--- a/res/res_pjsip.c
+++ b/res/res_pjsip.c
@@ -1109,6 +1109,12 @@
REGISTER requests and is not intended to be configured manually.
</para></description>
</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 name="aor">
<synopsis>The configuration for a location of an endpoint</synopsis>
diff --git a/res/res_pjsip/location.c b/res/res_pjsip/location.c
index 2a7dbb5..db1d079 100644
--- a/res/res_pjsip/location.c
+++ b/res/res_pjsip/location.c
@@ -23,6 +23,7 @@
#include "asterisk/res_pjsip.h"
#include "asterisk/logger.h"
#include "asterisk/astobj2.h"
+#include "asterisk/paths.h"
#include "asterisk/sorcery.h"
#include "include/res_pjsip_private.h"
#include "asterisk/res_pjsip_cli.h"
@@ -119,6 +120,8 @@
ao2_cleanup(contact);
return NULL;
}
+
+ ast_string_field_init_extended(contact, reg_server);
/* Dynamic contacts are delimited with ";@" and static ones with "@@" */
if ((aor_separator = strstr(id, ";@")) || (aor_separator = strstr(id, "@@"))) {
@@ -333,6 +336,10 @@
if (!ast_strlen_zero(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);
@@ -1116,6 +1123,7 @@
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", "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", "minimum_expiration", "60", OPT_UINT_T, 0, FLDSET(struct ast_sip_aor, minimum_expiration));
diff --git a/res/res_pjsip_registrar.c b/res/res_pjsip_registrar.c
index 59746e3..9aeefae 100644
--- a/res/res_pjsip_registrar.c
+++ b/res/res_pjsip_registrar.c
@@ -30,6 +30,7 @@
#include "asterisk/res_pjsip.h"
#include "asterisk/module.h"
+#include "asterisk/paths.h"
#include "asterisk/test.h"
#include "asterisk/taskprocessor.h"
#include "asterisk/manager.h"
@@ -555,6 +556,9 @@
if (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)) {
ast_log(LOG_ERROR, "Failed to update contact '%s' expiration time to %d seconds.\n",
--
To view, visit https://gerrit.asterisk.org/2624
To unsubscribe, visit https://gerrit.asterisk.org/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ia8f6bd2267809c78753b52bcf21835b9b59f4cb8
Gerrit-PatchSet: 6
Gerrit-Project: asterisk
Gerrit-Branch: 13
Gerrit-Owner: Alexei Gradinari <alex2grad at gmail.com>
Gerrit-Reviewer: Anonymous Coward #1000019
Gerrit-Reviewer: George Joseph <gjoseph at digium.com>
Gerrit-Reviewer: Joshua Colp <jcolp at digium.com>
More information about the asterisk-code-review
mailing list