[svn-commits] mmichelson: branch mmichelson/sip_options r394177 - in /team/mmichelson/sip_o...
SVN commits to the Digium repositories
svn-commits at lists.digium.com
Thu Jul 11 17:30:05 CDT 2013
Author: mmichelson
Date: Thu Jul 11 17:30:03 2013
New Revision: 394177
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=394177
Log:
Add "subminexpiry" option.
Modified:
team/mmichelson/sip_options/include/asterisk/res_sip.h
team/mmichelson/sip_options/res/res_sip.c
team/mmichelson/sip_options/res/res_sip/sip_configuration.c
team/mmichelson/sip_options/res/res_sip_pubsub.c
Modified: team/mmichelson/sip_options/include/asterisk/res_sip.h
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/sip_options/include/asterisk/res_sip.h?view=diff&rev=394177&r1=394176&r2=394177
==============================================================================
--- team/mmichelson/sip_options/include/asterisk/res_sip.h (original)
+++ team/mmichelson/sip_options/include/asterisk/res_sip.h Thu Jul 11 17:30:03 2013
@@ -438,6 +438,8 @@
unsigned int cos_video;
/*! Indicates if endpoint is allowed to initiate subscriptions */
unsigned int allowsubscribe;
+ /*! The minimum allowed expiration for subscriptions from endpoint */
+ unsigned int subminexpiry;
};
/*!
Modified: team/mmichelson/sip_options/res/res_sip.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/sip_options/res/res_sip.c?view=diff&rev=394177&r1=394176&r2=394177
==============================================================================
--- team/mmichelson/sip_options/res/res_sip.c (original)
+++ team/mmichelson/sip_options/res/res_sip.c Thu Jul 11 17:30:03 2013
@@ -461,6 +461,12 @@
See https://wiki.asterisk.org/wiki/display/AST/IP+Quality+of+Service for more information about QoS settings
</para></description>
</configOption>
+ <configOption name="allowsubscribe" default="no">
+ <synopsis>Determines if endpoint is allowed to initiate subscriptions with Asterisk.</synopsis>
+ </configOption>
+ <configOption name="subminexpiry" default="60">
+ <synopsis>The minimum allowed expiry time for subscriptions initiated by the endpoint.</synopsis>
+ </configOption>
</configObject>
<configObject name="auth">
<synopsis>Authentication type</synopsis>
Modified: team/mmichelson/sip_options/res/res_sip/sip_configuration.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/sip_options/res/res_sip/sip_configuration.c?view=diff&rev=394177&r1=394176&r2=394177
==============================================================================
--- team/mmichelson/sip_options/res/res_sip/sip_configuration.c (original)
+++ team/mmichelson/sip_options/res/res_sip/sip_configuration.c Thu Jul 11 17:30:03 2013
@@ -671,6 +671,8 @@
ast_sorcery_object_field_register(sip_sorcery, "endpoint", "cos_audio", "0", OPT_UINT_T, 0, FLDSET(struct ast_sip_endpoint, cos_audio));
ast_sorcery_object_field_register(sip_sorcery, "endpoint", "cos_video", "0", OPT_UINT_T, 0, FLDSET(struct ast_sip_endpoint, cos_video));
ast_sorcery_object_field_register(sip_sorcery, "endpoint", "allowsubscribe", "no", OPT_BOOL_T, 1, FLDSET(struct ast_sip_endpoint, allowsubscribe));
+ ast_sorcery_object_field_register(sip_sorcery, "endpoint", "subminexpiry", "0", OPT_UINT_T, 0, FLDSET(struct ast_sip_endpoint, subminexpiry));
+ ast_sorcery_object_field_register(sip_sorcery, "endpoint", "subminexpirey", "0", OPT_UINT_T, 0, FLDSET(struct ast_sip_endpoint, subminexpiry));
if (ast_sip_initialize_sorcery_transport(sip_sorcery)) {
ast_log(LOG_ERROR, "Failed to register SIP transport support with sorcery\n");
Modified: team/mmichelson/sip_options/res/res_sip_pubsub.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/sip_options/res/res_sip_pubsub.c?view=diff&rev=394177&r1=394176&r2=394177
==============================================================================
--- team/mmichelson/sip_options/res/res_sip_pubsub.c (original)
+++ team/mmichelson/sip_options/res/res_sip_pubsub.c Thu Jul 11 17:30:03 2013
@@ -616,6 +616,7 @@
char accept[AST_SIP_MAX_ACCEPT][64];
pjsip_accept_hdr *accept_header;
pjsip_event_hdr *event_header;
+ pjsip_expires_hdr *expires_header;
struct ast_sip_subscription_handler *handler;
RAII_VAR(struct ast_sip_endpoint *, endpoint, NULL, ao2_cleanup);
struct ast_sip_subscription *sub;
@@ -627,6 +628,15 @@
if (!endpoint->allowsubscribe) {
ast_log(LOG_WARNING, "Subscriptions not permitted for endpoint %s.\n", ast_sorcery_object_get_id(endpoint));
pjsip_endpt_respond_stateless(ast_sip_get_pjsip_endpoint(), rdata, 603, NULL, NULL, NULL);
+ return PJ_TRUE;
+ }
+
+ expires_header = pjsip_msg_find_hdr(rdata->msg_info.msg, PJSIP_H_EXPIRES, rdata->msg_info.msg->hdr.next);
+
+ if (expires_header && expires_header->ivalue < endpoint->subminexpiry) {
+ ast_log(LOG_WARNING, "Subscription expiration %d is too brief for endpoint %s. Minimum is %d\n",
+ expires_header->ivalue, ast_sorcery_object_get_id(endpoint), endpoint->subminexpiry);
+ pjsip_endpt_respond_stateless(ast_sip_get_pjsip_endpoint(), rdata, 423, NULL, NULL, NULL);
return PJ_TRUE;
}
More information about the svn-commits
mailing list