diff options
Diffstat (limited to 'res/res_pjsip_outbound_publish.c')
-rw-r--r-- | res/res_pjsip_outbound_publish.c | 18 |
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; } |