From ce59fabd5c01a48b8f4fcd1d7522aef9f3fbe66d Mon Sep 17 00:00:00 2001
From: Matthew Jordan <mjordan@digium.com>
Date: Mon, 30 Mar 2015 02:39:57 +0000
Subject: [PATCH] clang compiler warnings: Fix invalid enum conversion

This patch fixes some invalid enum conversion warnings caught by clang. In
particular:
* chan_sip: Several functions mixed usage of the st_refresher_param
  enum and st_refresher enum. This patch corrects the functions to use the
  right enum.
* chan_pjsip: Fixed mixed usage of ast_sip_session_t38state and ast_t38_state.
* strings: Fixed incorrect usage of AO2 flags with strings container.
* res_stasis: Change a return enumeration to stasis_app_user_event_res.

Review: https://reviewboard.asterisk.org/r/4535

ASTERISK-24917
Reported by: dkdegroot
patches:
  rb4535.patch submitted by dkdegroot (License 6600)
........

Merged revisions 433746 from http://svn.asterisk.org/svn/asterisk/branches/11
........

Merged revisions 433747 from http://svn.asterisk.org/svn/asterisk/branches/13


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433748 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 channels/chan_pjsip.c      | 2 +-
 channels/chan_sip.c        | 8 ++++----
 include/asterisk/strings.h | 3 ++-
 main/strings.c             | 3 ++-
 res/res_stasis.c           | 2 +-
 5 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/channels/chan_pjsip.c b/channels/chan_pjsip.c
index c5eb4e540e..1277d559f8 100644
--- a/channels/chan_pjsip.c
+++ b/channels/chan_pjsip.c
@@ -919,7 +919,7 @@ static int chan_pjsip_queryoption(struct ast_channel *ast, int option, void *dat
 	struct ast_sip_channel_pvt *channel = ast_channel_tech_pvt(ast);
 	struct ast_sip_session *session = channel->session;
 	int res = -1;
-	enum ast_sip_session_t38state state = T38_STATE_UNAVAILABLE;
+	enum ast_t38_state state = T38_STATE_UNAVAILABLE;
 
 	switch (option) {
 	case AST_OPTION_T38_STATE:
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 97febc0f62..465345b3c9 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -1492,7 +1492,7 @@ static int  proc_session_timer(const void *vp);
 static void stop_session_timer(struct sip_pvt *p);
 static void start_session_timer(struct sip_pvt *p);
 static void restart_session_timer(struct sip_pvt *p);
-static const char *strefresherparam2str(enum st_refresher r);
+static const char *strefresherparam2str(enum st_refresher_param r);
 static int parse_session_expires(const char *p_hdrval, int *const p_interval, enum st_refresher_param *const p_ref);
 static int parse_minse(const char *p_hdrval, int *const p_interval);
 static int st_get_se(struct sip_pvt *, int max);
@@ -19089,12 +19089,12 @@ static const struct _map_x_s strefreshers[] = {
         { -1,                           NULL   },
 };
 
-static const char *strefresherparam2str(enum st_refresher r)
+static const char *strefresherparam2str(enum st_refresher_param r)
 {
 	return map_x_s(strefresher_params, r, "Unknown");
 }
 
-static enum st_refresher str2strefresherparam(const char *s)
+static enum st_refresher_param str2strefresherparam(const char *s)
 {
 	return map_s_x(strefresher_params, s, -1);
 }
@@ -21539,7 +21539,7 @@ static char *sip_show_channel(struct ast_cli_entry *e, int cmd, struct ast_cli_a
  					ast_cli(a->fd, "  S-Timer Peer Sts:       %s\n", cur->stimer->st_active_peer_ua ? "Active" : "Inactive");
  					ast_cli(a->fd, "  S-Timer Cached Min-SE:  %d\n", cur->stimer->st_cached_min_se);
  					ast_cli(a->fd, "  S-Timer Cached SE:      %d\n", cur->stimer->st_cached_max_se);
- 					ast_cli(a->fd, "  S-Timer Cached Ref:     %s\n", strefresherparam2str(cur->stimer->st_cached_ref));
+ 					ast_cli(a->fd, "  S-Timer Cached Ref:     %s\n", strefresher2str(cur->stimer->st_cached_ref));
  					ast_cli(a->fd, "  S-Timer Cached Mode:    %s\n", stmode2str(cur->stimer->st_cached_mode));
  				}
 			}
diff --git a/include/asterisk/strings.h b/include/asterisk/strings.h
index 79a2e49c8c..7af92affc8 100644
--- a/include/asterisk/strings.h
+++ b/include/asterisk/strings.h
@@ -1233,7 +1233,8 @@ static force_inline char *attribute_pure ast_str_to_upper(char *str)
  * \retval AO2 container for strings
  * \retval NULL if allocation failed
  */
-struct ao2_container *ast_str_container_alloc_options(enum ao2_container_opts opts, int buckets);
+//struct ao2_container *ast_str_container_alloc_options(enum ao2_container_opts opts, int buckets);
+struct ao2_container *ast_str_container_alloc_options(enum ao2_alloc_opts opts, int buckets);
 
 /*!
  * \since 12
diff --git a/main/strings.c b/main/strings.c
index b6b9fbcd71..da63cdfc06 100644
--- a/main/strings.c
+++ b/main/strings.c
@@ -167,7 +167,8 @@ static int str_cmp(void *lhs, void *rhs, int flags)
 	return strcmp(lhs, rhs) ? 0 : CMP_MATCH;
 }
 
-struct ao2_container *ast_str_container_alloc_options(enum ao2_container_opts opts, int buckets)
+//struct ao2_container *ast_str_container_alloc_options(enum ao2_container_opts opts, int buckets)
+struct ao2_container *ast_str_container_alloc_options(enum ao2_alloc_opts opts, int buckets)
 {
 	return ao2_container_alloc_options(opts, buckets, str_hash, str_cmp);
 }
diff --git a/res/res_stasis.c b/res/res_stasis.c
index 6794adedb4..095e2b313f 100644
--- a/res/res_stasis.c
+++ b/res/res_stasis.c
@@ -1800,7 +1800,7 @@ enum stasis_app_user_event_res stasis_app_user_event(const char *app_name,
 	RAII_VAR(struct ast_multi_object_blob *, multi, NULL, ao2_cleanup);
 	RAII_VAR(void *, obj, NULL, ao2_cleanup);
 	RAII_VAR(struct stasis_message *, message, NULL, ao2_cleanup);
-	enum stasis_app_subscribe_res res = STASIS_APP_USER_INTERNAL_ERROR;
+	enum stasis_app_user_event_res res = STASIS_APP_USER_INTERNAL_ERROR;
 	struct ast_json *json_value;
 	int have_channel = 0;
 	int i;
-- 
GitLab