diff options
author | Mark Michelson <mmichelson@digium.com> | 2014-03-25 17:40:51 +0000 |
---|---|---|
committer | Mark Michelson <mmichelson@digium.com> | 2014-03-25 17:40:51 +0000 |
commit | 2bf37a417d7ca529311b56344d56c4a421db3c25 (patch) | |
tree | 91ee86f4f6430251bc44bab4228a3c37c1bd2dbe | |
parent | c1c8300e27060033cab536e0782b8d508bcfbdd5 (diff) |
Add a "message_context" option for PJSIP endpoints.
........
Merged revisions 411157 from http://svn.asterisk.org/svn/asterisk/branches/12
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@411158 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rw-r--r-- | UPGRADE.txt | 3 | ||||
-rw-r--r-- | include/asterisk/res_pjsip.h | 2 | ||||
-rw-r--r-- | res/res_pjsip.c | 8 | ||||
-rw-r--r-- | res/res_pjsip/pjsip_configuration.c | 1 | ||||
-rw-r--r-- | res/res_pjsip_messaging.c | 5 |
5 files changed, 17 insertions, 2 deletions
diff --git a/UPGRADE.txt b/UPGRADE.txt index a3e808c7f..f34b5df1e 100644 --- a/UPGRADE.txt +++ b/UPGRADE.txt @@ -26,6 +26,9 @@ PJSIP: REGISTER requests for each contact that is registered. If using realtime for PJSIP contacts, this means that the schema has been updated to add a user_agent column. An alembic revision has been added to facilitate this update. + + - PJSIP endpoints now have a "message_context" option that can be used to determine + where to route incoming MESSAGE requests from the endpoint. Realtime Configuration: - PJSIP endpoint columns 'tos_audio' and 'tos_video' have been changed from yes/no diff --git a/include/asterisk/res_pjsip.h b/include/asterisk/res_pjsip.h index 3b09c33bc..36d25fbec 100644 --- a/include/asterisk/res_pjsip.h +++ b/include/asterisk/res_pjsip.h @@ -562,6 +562,8 @@ struct ast_sip_endpoint { AST_STRING_FIELD(fromuser); /*! Domain to place in From header */ AST_STRING_FIELD(fromdomain); + /*! Context to route incoming MESSAGE requests to */ + AST_STRING_FIELD(message_context); ); /*! Configuration for extensions */ struct ast_sip_endpoint_extensions extensions; diff --git a/res/res_pjsip.c b/res/res_pjsip.c index 3ef203f85..3ff60ee5b 100644 --- a/res/res_pjsip.c +++ b/res/res_pjsip.c @@ -685,6 +685,14 @@ multiple 'set_var'(s). </para></description> </configOption> + <configOption name="message_context"> + <synopsis>Context to route incoming MESSAGE requests to.</synopsis> + <description><para> + If specified, incoming MESSAGE requests will be routed to the indicated + dialplan context. If no <replaceable>message_context</replaceable> is + specified, then the <replaceable>context</replaceable> setting is used. + </para></description> + </configOption> </configObject> <configObject name="auth"> <synopsis>Authentication type</synopsis> diff --git a/res/res_pjsip/pjsip_configuration.c b/res/res_pjsip/pjsip_configuration.c index 1f289ade9..164ca4a0e 100644 --- a/res/res_pjsip/pjsip_configuration.c +++ b/res/res_pjsip/pjsip_configuration.c @@ -1723,6 +1723,7 @@ int ast_res_pjsip_initialize_configuration(const struct ast_module_info *ast_mod ast_sorcery_object_field_register(sip_sorcery, "endpoint", "srtp_tag_32", "no", OPT_BOOL_T, 1, FLDSET(struct ast_sip_endpoint, media.rtp.srtp_tag_32)); 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(sip_sorcery, "endpoint", "message_context", "", OPT_STRINGFIELD_T, 1, STRFLDSET(struct ast_sip_endpoint, message_context)); if (ast_sip_initialize_sorcery_transport()) { ast_log(LOG_ERROR, "Failed to register SIP transport support with sorcery\n"); diff --git a/res/res_pjsip_messaging.c b/res/res_pjsip_messaging.c index 0f884aeda..07d207bdb 100644 --- a/res/res_pjsip_messaging.c +++ b/res/res_pjsip_messaging.c @@ -464,13 +464,14 @@ static enum pjsip_status_code rx_data_to_ast_msg(pjsip_rx_data *rdata, struct as const char *field; pjsip_status_code code; struct ast_sip_endpoint *endpt = ast_pjsip_rdata_get_endpoint(rdata); + const char *context = S_OR(endpt->message_context, endpt->context); /* make sure there is an appropriate context and extension*/ - if ((code = get_destination(rdata, endpt->context, buf)) != PJSIP_SC_OK) { + if ((code = get_destination(rdata, context, buf)) != PJSIP_SC_OK) { return code; } - CHECK_RES(ast_msg_set_context(msg, "%s", endpt->context)); + CHECK_RES(ast_msg_set_context(msg, "%s", context)); CHECK_RES(ast_msg_set_exten(msg, "%s", buf)); /* to header */ |