Merge "res_pjsip_exten_state: Check if body generator is available."

This commit is contained in:
Joshua Colp
2016-04-29 14:33:01 -05:00
committed by Gerrit Code Review
3 changed files with 24 additions and 0 deletions

View File

@@ -648,6 +648,19 @@ struct ast_sip_pubsub_body_supplement {
int ast_sip_pubsub_generate_body_content(const char *content_type, int ast_sip_pubsub_generate_body_content(const char *content_type,
const char *content_subtype, struct ast_sip_body_data *data, struct ast_str **str); const char *content_subtype, struct ast_sip_body_data *data, struct ast_str **str);
/*!
* \brief Is a body generator registered for the given type/subtype.
* \since 14.0.0
*
* \param type The content type of the body
* \param subtype The content subtype of the body
*
* \note In "plain/text", "plain" is the type and "text" is the subtype.
*
* \retval non-zero if a generator is registered.
*/
int ast_sip_pubsub_is_body_generator_registered(const char *type, const char *subtype);
/*! /*!
* \since 13.0.0 * \since 13.0.0
* \brief Register a body generator with the pubsub core. * \brief Register a body generator with the pubsub core.

View File

@@ -680,6 +680,12 @@ static int publisher_start(struct ast_sip_outbound_publish *configuration, struc
return -1; return -1;
} }
if (!ast_sip_pubsub_is_body_generator_registered(body_type, body_subtype)) {
ast_log(LOG_ERROR, "Outbound extension state publisher '%s': '%s' body generator not registered\n",
name, body_full);
return -1;
}
name_size = strlen(name) + 1; name_size = strlen(name) + 1;
body_type_size = strlen(body_type) + 1; body_type_size = strlen(body_type) + 1;
body_subtype_size = strlen(body_subtype) + 1; body_subtype_size = strlen(body_subtype) + 1;

View File

@@ -3094,6 +3094,11 @@ const char *ast_sip_publication_get_event_configuration(const struct ast_sip_pub
return pub->event_configuration_name; return pub->event_configuration_name;
} }
int ast_sip_pubsub_is_body_generator_registered(const char *type, const char *subtype)
{
return !!find_body_generator_type_subtype(type, subtype);
}
int ast_sip_pubsub_register_body_generator(struct ast_sip_pubsub_body_generator *generator) int ast_sip_pubsub_register_body_generator(struct ast_sip_pubsub_body_generator *generator)
{ {
struct ast_sip_pubsub_body_generator *existing; struct ast_sip_pubsub_body_generator *existing;