summaryrefslogtreecommitdiff
path: root/res/res_pjsip_outbound_publish.c
diff options
context:
space:
mode:
Diffstat (limited to 'res/res_pjsip_outbound_publish.c')
-rw-r--r--res/res_pjsip_outbound_publish.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/res/res_pjsip_outbound_publish.c b/res/res_pjsip_outbound_publish.c
index c413cb0e1..18525bf6c 100644
--- a/res/res_pjsip_outbound_publish.c
+++ b/res/res_pjsip_outbound_publish.c
@@ -34,6 +34,7 @@
#include "asterisk/taskprocessor.h"
#include "asterisk/threadpool.h"
#include "asterisk/datastore.h"
+#include "res_pjsip/include/res_pjsip_private.h"
/*** DOCUMENTATION
<configInfo name="res_pjsip_outbound_publish" language="en_US">
@@ -1459,10 +1460,27 @@ static int validate_publish_config(struct ast_sip_outbound_publish *publish)
ast_log(LOG_ERROR, "No server URI specified on outbound publish '%s'\n",
ast_sorcery_object_get_id(publish));
return -1;
+ } else if (ast_sip_validate_uri_length(publish->server_uri)) {
+ ast_log(LOG_ERROR, "Server URI or hostname length exceeds pjproject limit or is not a sip(s) uri: '%s' on outbound publish '%s'\n",
+ publish->server_uri,
+ ast_sorcery_object_get_id(publish));
+ return -1;
} else if (ast_strlen_zero(publish->event)) {
ast_log(LOG_ERROR, "No event type specified for outbound publish '%s'\n",
ast_sorcery_object_get_id(publish));
return -1;
+ } else if (!ast_strlen_zero(publish->from_uri)
+ && ast_sip_validate_uri_length(publish->from_uri)) {
+ ast_log(LOG_ERROR, "From URI or hostname length exceeds pjproject limit or is not a sip(s) uri: '%s' on outbound publish '%s'\n",
+ publish->from_uri,
+ ast_sorcery_object_get_id(publish));
+ return -1;
+ } else if (!ast_strlen_zero(publish->to_uri)
+ && ast_sip_validate_uri_length(publish->to_uri)) {
+ ast_log(LOG_ERROR, "To URI or hostname length exceeds pjproject limit or is not a sip(s) uri: '%s' on outbound publish '%s'\n",
+ publish->to_uri,
+ ast_sorcery_object_get_id(publish));
+ return -1;
}
return 0;
}