diff options
-rw-r--r-- | addons/chan_ooh323.c | 7 | ||||
-rw-r--r-- | addons/ooh323c/src/ootypes.h | 76 | ||||
-rw-r--r-- | addons/ooh323cDriver.h | 2 | ||||
-rw-r--r-- | apps/app_adsiprog.c | 6 | ||||
-rw-r--r-- | apps/app_sms.c | 2 | ||||
-rw-r--r-- | autoconf/ast_check_pwlib.m4 | 4 | ||||
-rw-r--r-- | autoconf/ast_ext_lib.m4 | 2 | ||||
-rwxr-xr-x | configure | 4 | ||||
-rw-r--r-- | main/editline/term.c | 2 | ||||
-rw-r--r-- | main/pbx.c | 10 | ||||
-rw-r--r-- | pbx/pbx_lua.c | 4 | ||||
-rw-r--r-- | res/res_curl.c | 16 | ||||
-rw-r--r-- | res/res_http_websocket.c | 3 | ||||
-rw-r--r-- | res/res_odbc.c | 13 | ||||
-rw-r--r-- | res/res_pjsip_endpoint_identifier_ip.c | 63 | ||||
-rw-r--r-- | res/stasis/app.c | 16 |
16 files changed, 115 insertions, 115 deletions
diff --git a/addons/chan_ooh323.c b/addons/chan_ooh323.c index 285ed2849..3afcecd96 100644 --- a/addons/chan_ooh323.c +++ b/addons/chan_ooh323.c @@ -2604,9 +2604,12 @@ static struct ooh323_peer *build_peer(const char *name, struct ast_variable *v, } } else if (!strcasecmp(v->name, "outgoinglimit")) { - peer->outgoinglimit = atoi(v->value); - if (peer->outgoinglimit < 0) + int val = atoi(v->value); + if (val < 0) { peer->outgoinglimit = 0; + } else { + peer->outgoinglimit = val; + } } else if (!strcasecmp(v->name, "accountcode")) { ast_copy_string(peer->accountcode, v->value, sizeof(peer->accountcode)); } else if (!strcasecmp(v->name, "faststart")) { diff --git a/addons/ooh323c/src/ootypes.h b/addons/ooh323c/src/ootypes.h index cc7cd7c36..71a7219a6 100644 --- a/addons/ooh323c/src/ootypes.h +++ b/addons/ooh323c/src/ootypes.h @@ -154,45 +154,45 @@ typedef enum OOCallClearReason { /** Various message types for H225 and H245 messages */ -#define OO_MSGTYPE_MIN 101 -#define OOQ931MSG 101 -#define OOH245MSG 102 -#define OOSetup 103 -#define OOCallProceeding 104 -#define OOAlert 105 -#define OOConnect 106 -#define OOReleaseComplete 107 -#define OOFacility 108 -#define OOInformationMessage 109 -#define OOMasterSlaveDetermination 110 -#define OOMasterSlaveAck 111 -#define OOMasterSlaveReject 112 -#define OOMasterSlaveRelease 113 -#define OOTerminalCapabilitySet 114 -#define OOTerminalCapabilitySetAck 115 -#define OOTerminalCapabilitySetReject 116 -#define OOTerminalCapabilitySetRelease 117 -#define OOOpenLogicalChannel 118 -#define OOOpenLogicalChannelAck 119 -#define OOOpenLogicalChannelReject 120 -#define OOOpenLogicalChannelRelease 121 -#define OOOpenLogicalChannelConfirm 122 -#define OOCloseLogicalChannel 123 -#define OOCloseLogicalChannelAck 124 -#define OORequestChannelClose 125 -#define OORequestChannelCloseAck 126 -#define OORequestChannelCloseReject 127 -#define OORequestChannelCloseRelease 128 -#define OOEndSessionCommand 129 -#define OOUserInputIndication 130 -#define OORequestModeAck 131 -#define OORequestModeReject 132 -#define OORequestMode 133 -#define OORequestDelayResponse 134 -#define OORequestDelayRequest 135 -#define OOStatus 136 +#define OO_MSGTYPE_MIN 0x65 +#define OOQ931MSG 0x65 +#define OOH245MSG 0x66 +#define OOSetup 0x67 +#define OOCallProceeding 0x68 +#define OOAlert 0x69 +#define OOConnect 0x6a +#define OOReleaseComplete 0x6b +#define OOFacility 0x6c +#define OOInformationMessage 0x6d +#define OOMasterSlaveDetermination 0x6e +#define OOMasterSlaveAck 0x6f +#define OOMasterSlaveReject 0x70 +#define OOMasterSlaveRelease 0x71 +#define OOTerminalCapabilitySet 0x72 +#define OOTerminalCapabilitySetAck 0x73 +#define OOTerminalCapabilitySetReject 0x74 +#define OOTerminalCapabilitySetRelease 0x75 +#define OOOpenLogicalChannel 0x76 +#define OOOpenLogicalChannelAck 0x77 +#define OOOpenLogicalChannelReject 0x78 +#define OOOpenLogicalChannelRelease 0x79 +#define OOOpenLogicalChannelConfirm 0x7a +#define OOCloseLogicalChannel 0x7b +#define OOCloseLogicalChannelAck 0x7c +#define OORequestChannelClose 0x7d +#define OORequestChannelCloseAck 0x7e +#define OORequestChannelCloseReject 0x7f +#define OORequestChannelCloseRelease 0x80 +#define OOEndSessionCommand 0x81 +#define OOUserInputIndication 0x82 +#define OORequestModeAck 0x83 +#define OORequestModeReject 0x84 +#define OORequestMode 0x85 +#define OORequestDelayResponse 0x86 +#define OORequestDelayRequest 0x87 +#define OOStatus 0x88 -#define OO_MSGTYPE_MAX 136 +#define OO_MSGTYPE_MAX 0x88 /* Timer types */ #define OO_CALLESTB_TIMER (1<<0) diff --git a/addons/ooh323cDriver.h b/addons/ooh323cDriver.h index 333f01f33..00bf9b551 100644 --- a/addons/ooh323cDriver.h +++ b/addons/ooh323cDriver.h @@ -14,7 +14,7 @@ * *****************************************************************************/ #ifndef _OO_H323CDRIVER_H_ -#define __OO_H323DRIVER_H_ +#define _OO_H323CDRIVER_H_ #include "chan_ooh323.h" #include "ootypes.h" #include "ooh323ep.h" diff --git a/apps/app_adsiprog.c b/apps/app_adsiprog.c index 85ede5306..e73795aae 100644 --- a/apps/app_adsiprog.c +++ b/apps/app_adsiprog.c @@ -1111,7 +1111,7 @@ static int adsi_process(struct adsi_script *state, char *buf, const char *script tmp[7] = '\0'; } /* Setup initial stuff */ - state->key->retstr[0] = 128; + state->key->retstr[0] = 0x80; /* 1 has the length */ state->key->retstr[2] = state->key->id; /* Put the Full name in */ @@ -1147,7 +1147,7 @@ static int adsi_process(struct adsi_script *state, char *buf, const char *script break; } /* Setup sub */ - state->sub->data[0] = 130; + state->sub->data[0] = 0x82; /* 1 is the length */ state->sub->data[2] = 0x0; /* Clear extensibility bit */ state->sub->datalen = 3; @@ -1264,7 +1264,7 @@ static int adsi_process(struct adsi_script *state, char *buf, const char *script /* Something bad happened */ break; } - disp->data[0] = 129; + disp->data[0] = 0x81; disp->data[1] = disp->datalen - 2; disp->data[2] = ((lrci & 0x3) << 6) | disp->id; disp->data[3] = wi; diff --git a/apps/app_sms.c b/apps/app_sms.c index ce1746fdc..c3d8ccd4b 100644 --- a/apps/app_sms.c +++ b/apps/app_sms.c @@ -801,7 +801,7 @@ static void sms_log(sms_t * h, char status) *p++ = '\\'; *p++ = 'r'; } else if (h->ud[n] < 32 || h->ud[n] == 127) { - *p++ = 191; + *p++ = 0xbf; } else { *p++ = h->ud[n]; } diff --git a/autoconf/ast_check_pwlib.m4 b/autoconf/ast_check_pwlib.m4 index 510881f3c..beaf8db74 100644 --- a/autoconf/ast_check_pwlib.m4 +++ b/autoconf/ast_check_pwlib.m4 @@ -103,7 +103,7 @@ if test "${HAS_PWLIB:-unset}" = "unset" ; then else AC_CHECK_HEADER(/usr/local/include/ptlib.h, HAS_PWLIB=1, ) if test "${HAS_PWLIB:-unset}" != "unset" ; then - AC_PATH_PROG(PTLIB_CONFIG, ptlib-config, , /usr/local/bin$PATH_SEPARATOR/usr/local/share/pwlib/make) + AC_PATH_PROG(PTLIB_CONFIG, ptlib-config, , /usr/local/bin$PATH_SEPARATOR/usr/local/share/ptlib/make$PATH_SEPARATOR/usr/local/share/pwlib/make) PWLIB_INCDIR="/usr/local/include" PWLIB_LIBDIR=`${PTLIB_CONFIG} --pwlibdir 2>/dev/null` if test "${PWLIB_LIBDIR:-unset}" = "unset"; then @@ -121,7 +121,7 @@ if test "${HAS_PWLIB:-unset}" = "unset" ; then else AC_CHECK_HEADER(/usr/include/ptlib.h, HAS_PWLIB=1, ) if test "${HAS_PWLIB:-unset}" != "unset" ; then - AC_PATH_PROG(PTLIB_CONFIG, ptlib-config, , /usr/bin$PATH_SEPARATOR/usr/share/pwlib/make) + AC_PATH_PROG(PTLIB_CONFIG, ptlib-config, , /usr/bin$PATH_SEPARATOR/usr/share/ptlib/make$PATH_SEPARATOR/usr/share/pwlib/make) PWLIB_INCDIR="/usr/include" PWLIB_LIBDIR=`${PTLIB_CONFIG} --pwlibdir 2>/dev/null` if test "${PWLIB_LIBDIR:-unset}" = "unset"; then diff --git a/autoconf/ast_ext_lib.m4 b/autoconf/ast_ext_lib.m4 index 080b8c34d..8e5b50e4a 100644 --- a/autoconf/ast_ext_lib.m4 +++ b/autoconf/ast_ext_lib.m4 @@ -39,7 +39,7 @@ AC_DEFUN([AST_EXT_LIB_SETUP], # AST_OPTION_ONLY([option name], [option variable], [option description], [default value]) AC_DEFUN([AST_OPTION_ONLY], [ -AC_ARG_WITH([$1], AC_HELP_STRING([--with-$1=PATH], [use $3 in PATH]), +AC_ARG_WITH([$1], AS_HELP_STRING([--with-$1=PATH], [use $3 in PATH]), [ case ${withval} in n|no) @@ -28858,7 +28858,7 @@ else ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /usr/local/bin$PATH_SEPARATOR/usr/local/share/pwlib/make +for as_dir in /usr/local/bin$PATH_SEPARATOR/usr/local/share/ptlib/make$PATH_SEPARATOR/usr/local/share/pwlib/make do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. @@ -28920,7 +28920,7 @@ else ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /usr/bin$PATH_SEPARATOR/usr/share/pwlib/make +for as_dir in /usr/bin$PATH_SEPARATOR/usr/share/ptlib/make$PATH_SEPARATOR/usr/share/pwlib/make do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. diff --git a/main/editline/term.c b/main/editline/term.c index 03623be21..6814cc4ca 100644 --- a/main/editline/term.c +++ b/main/editline/term.c @@ -428,7 +428,7 @@ term_alloc(EditLine *el, const struct termcapstr *t, const char *cap) */ tlen = 0; for (tmp = tlist; tmp < &tlist[T_str]; tmp++) - if (*tmp != NULL && *tmp != '\0' && *tmp != *str) { + if (*tmp != NULL && **tmp != '\0' && *tmp != *str) { char *ptr; for (ptr = *tmp; *ptr != '\0'; termbuf[tlen++] = *ptr++) diff --git a/main/pbx.c b/main/pbx.c index 173b62e99..b313e0528 100644 --- a/main/pbx.c +++ b/main/pbx.c @@ -2823,7 +2823,6 @@ static int pbx_extension_helper(struct ast_channel *c, struct ast_context *con, struct ast_exten *e; struct ast_app *app; char *substitute = NULL; - int res; struct pbx_find_info q = { .stacklen = 0 }; /* the rest is reset in pbx_find_extension */ char passdata[EXT_DATA_SIZE]; int matching_action = (action == E_MATCH || action == E_CANMATCH || action == E_MATCHMORE); @@ -2840,9 +2839,12 @@ static int pbx_extension_helper(struct ast_channel *c, struct ast_context *con, ast_unlock_contexts(); return -1; /* success, we found it */ } else if (action == E_FINDLABEL) { /* map the label to a priority */ - res = e->priority; + int res = e->priority; + ast_unlock_contexts(); - return res; /* the priority we were looking for */ + + /* the priority we were looking for */ + return res; } else { /* spawn */ if (!e->cached_app) e->cached_app = pbx_findapp(e->app); @@ -2892,7 +2894,7 @@ static int pbx_extension_helper(struct ast_channel *c, struct ast_context *con, } else { if (!q.swo->exec) { ast_log(LOG_WARNING, "No execution engine for switch %s\n", q.swo->name); - res = -1; + return -1; } return q.swo->exec(c, q.foundcontext ? q.foundcontext : context, exten, priority, callerid, q.data); } diff --git a/pbx/pbx_lua.c b/pbx/pbx_lua.c index 655d2df2e..e1f559059 100644 --- a/pbx/pbx_lua.c +++ b/pbx/pbx_lua.c @@ -1636,9 +1636,6 @@ static int load_or_reload_lua_stuff(void) res = AST_MODULE_LOAD_DECLINE; } - if (!res) { - ast_log(LOG_NOTICE, "Lua PBX Switch loaded.\n"); - } lua_close(L); return res; } @@ -1648,7 +1645,6 @@ static int unload_module(void) ast_context_destroy(NULL, registrar); ast_unregister_switch(&lua_switch); lua_free_extensions(); - ast_log(LOG_NOTICE, "Lua PBX Switch unloaded.\n"); return 0; } diff --git a/res/res_curl.c b/res/res_curl.c index e5eaa7d5f..aa10eff91 100644 --- a/res/res_curl.c +++ b/res/res_curl.c @@ -61,7 +61,9 @@ static int unload_module(void) /* If the dependent modules are still in memory, forbid unload */ for (i = 0; i < ARRAY_LEN(dependents); i++) { if (ast_module_check(dependents[i])) { - ast_log(LOG_ERROR, "%s (dependent module) is still loaded. Cannot unload res_curl.so\n", dependents[i]); + if (!ast_shutting_down()) { + ast_log(LOG_WARNING, "%s (dependent module) is still loaded. Cannot unload res_curl.so\n", dependents[i]); + } res = -1; } } @@ -74,19 +76,9 @@ static int unload_module(void) return res; } -/*! - * \brief Load the module - * - * Module loading including tests for configuration or dependencies. - * This function can return AST_MODULE_LOAD_FAILURE, AST_MODULE_LOAD_DECLINE, - * or AST_MODULE_LOAD_SUCCESS. If a dependency or environment variable fails - * tests return AST_MODULE_LOAD_FAILURE. If the module can not load the - * configuration file or other non-critical problem return - * AST_MODULE_LOAD_DECLINE. On success return AST_MODULE_LOAD_SUCCESS. - */ static int load_module(void) { - int res = 0; + int res = AST_MODULE_LOAD_SUCCESS; if (curl_global_init(CURL_GLOBAL_ALL)) { ast_log(LOG_ERROR, "Unable to initialize the cURL library. Cannot load res_curl.so\n"); diff --git a/res/res_http_websocket.c b/res/res_http_websocket.c index a65fc8ae2..956c52c54 100644 --- a/res/res_http_websocket.c +++ b/res/res_http_websocket.c @@ -291,6 +291,7 @@ int AST_OPTIONAL_API_NAME(ast_websocket_server_remove_protocol)(struct ast_webso /*! \brief Close function for websocket session */ int AST_OPTIONAL_API_NAME(ast_websocket_close)(struct ast_websocket *session, uint16_t reason) { + enum ast_websocket_opcode opcode = AST_WEBSOCKET_OPCODE_CLOSE; char frame[4] = { 0, }; /* The header is 2 bytes and the reason code takes up another 2 bytes */ int res; @@ -298,7 +299,7 @@ int AST_OPTIONAL_API_NAME(ast_websocket_close)(struct ast_websocket *session, ui return 0; } - frame[0] = AST_WEBSOCKET_OPCODE_CLOSE | 0x80; + frame[0] = opcode | 0x80; frame[1] = 2; /* The reason code is always 2 bytes */ /* If no reason has been specified assume 1000 which is normal closure */ diff --git a/res/res_odbc.c b/res/res_odbc.c index 73af22057..7395449c5 100644 --- a/res/res_odbc.c +++ b/res/res_odbc.c @@ -1068,16 +1068,6 @@ static int unload_module(void) return -1; } -/*! - * \brief Load the module - * - * Module loading including tests for configuration or dependencies. - * This function can return AST_MODULE_LOAD_FAILURE, AST_MODULE_LOAD_DECLINE, - * or AST_MODULE_LOAD_SUCCESS. If a dependency or environment variable fails - * tests return AST_MODULE_LOAD_FAILURE. If the module can not load the - * configuration file or other non-critical problem return - * AST_MODULE_LOAD_DECLINE. On success return AST_MODULE_LOAD_SUCCESS. - */ static int load_module(void) { if (!(class_container = ao2_container_alloc(1, null_hash_fn, ao2_match_by_addr))) @@ -1086,8 +1076,7 @@ static int load_module(void) return AST_MODULE_LOAD_DECLINE; ast_cli_register_multiple(cli_odbc, ARRAY_LEN(cli_odbc)); ast_data_register_multiple(odbc_providers, ARRAY_LEN(odbc_providers)); - ast_log(LOG_NOTICE, "res_odbc loaded.\n"); - return 0; + return AST_MODULE_LOAD_SUCCESS; } AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_ORDER, "ODBC resource", diff --git a/res/res_pjsip_endpoint_identifier_ip.c b/res/res_pjsip_endpoint_identifier_ip.c index 14716234a..5324af7b9 100644 --- a/res/res_pjsip_endpoint_identifier_ip.c +++ b/res/res_pjsip_endpoint_identifier_ip.c @@ -105,7 +105,7 @@ struct ip_identify_match { struct ast_ha *matches; /*! \brief Perform SRV resolution of hostnames */ unsigned int srv_lookups; - /*! \brief Hosts to be resolved after applying configuration */ + /*! \brief Hosts to be resolved when applying configuration */ struct ao2_container *hosts; }; @@ -150,8 +150,8 @@ static int header_identify_match_check(void *obj, void *arg, int flags) c_header = ast_strdupa(identify->match_header); c_value = strchr(c_header, ':'); if (!c_value) { - ast_log(LOG_WARNING, "Identify '%s' has invalid header_match: No ':' separator found!\n", - ast_sorcery_object_get_id(identify)); + /* This should not be possible. The object cannot be created if so. */ + ast_assert(0); return 0; } *c_value = '\0'; @@ -161,17 +161,19 @@ static int header_identify_match_check(void *obj, void *arg, int flags) pj_header_name = pj_str(c_header); header = pjsip_msg_find_hdr_by_name(rdata->msg_info.msg, &pj_header_name, NULL); if (!header) { - ast_debug(3, "SIP message does not contain header '%s'\n", c_header); + ast_debug(3, "Identify '%s': SIP message does not have header '%s'\n", + ast_sorcery_object_get_id(identify), + c_header); return 0; } pj_header_value = pj_str(c_value); if (pj_strcmp(&pj_header_value, &header->hvalue)) { - ast_debug(3, "SIP message contains header '%s' but value '%.*s' does not match value '%s' for endpoint '%s'\n", + ast_debug(3, "Identify '%s': SIP message has header '%s' but value '%.*s' does not match '%s'\n", + ast_sorcery_object_get_id(identify), c_header, (int) pj_strlen(&header->hvalue), pj_strbuf(&header->hvalue), - c_value, - identify->endpoint_name); + c_value); return 0; } @@ -261,7 +263,7 @@ static int ip_identify_match_host_lookup(struct ip_identify_match *identify, con } for (i = 0; i < num_addrs; ++i) { - /* Check if the address is already in the list, if so don't bother adding it again */ + /* Check if the address is already in the list, if so don't add it again */ if (identify->matches && (ast_apply_ha(identify->matches, &addrs[i]) != AST_SENSE_ALLOW)) { continue; } @@ -283,14 +285,13 @@ static int ip_identify_match_host_lookup(struct ip_identify_match *identify, con } /*! \brief Helper function which performs an SRV lookup and then resolves the hostname */ -static int ip_identify_match_srv_lookup(struct ip_identify_match *identify, const char *prefix, const char *host) +static int ip_identify_match_srv_lookup(struct ip_identify_match *identify, const char *prefix, const char *host, int results) { char service[NI_MAXHOST]; struct srv_context *context = NULL; int srv_ret; const char *srvhost; unsigned short srvport; - int results = 0; snprintf(service, sizeof(service), "%s.%s", prefix, host); @@ -372,10 +373,33 @@ static int ip_identify_apply(const struct ast_sorcery *sorcery, void *obj) char *current_string; struct ao2_iterator i; + /* Validate the identify object configuration */ + if (ast_strlen_zero(identify->endpoint_name)) { + ast_log(LOG_ERROR, "Identify '%s' missing required endpoint name.\n", + ast_sorcery_object_get_id(identify)); + return -1; + } + if (ast_strlen_zero(identify->match_header) /* No header to match */ + /* and no static IP addresses with a mask */ + && !identify->matches + /* and no addresses to resolve */ + && (!identify->hosts || !ao2_container_count(identify->hosts))) { + ast_log(LOG_ERROR, "Identify '%s' is not configured to match anything.\n", + ast_sorcery_object_get_id(identify)); + return -1; + } + if (!ast_strlen_zero(identify->match_header) + && !strchr(identify->match_header, ':')) { + ast_log(LOG_ERROR, "Identify '%s' missing ':' separator in match_header '%s'.\n", + ast_sorcery_object_get_id(identify), identify->match_header); + return -1; + } + if (!identify->hosts) { return 0; } + /* Resolve the match addresses now */ i = ao2_iterator_init(identify->hosts, 0); while ((current_string = ao2_iterator_next(&i))) { struct ast_sockaddr address; @@ -383,26 +407,29 @@ static int ip_identify_apply(const struct ast_sorcery *sorcery, void *obj) /* If the provided string is not an IP address perform SRV resolution on it */ if (identify->srv_lookups && !ast_sockaddr_parse(&address, current_string, 0)) { - results = ip_identify_match_srv_lookup(identify, "_sip._udp", current_string); + results = ip_identify_match_srv_lookup(identify, "_sip._udp", current_string, + results); if (results != -1) { - results += ip_identify_match_srv_lookup(identify, "_sip._tcp", current_string); + results = ip_identify_match_srv_lookup(identify, "_sip._tcp", + current_string, results); } if (results != -1) { - results += ip_identify_match_srv_lookup(identify, "_sips._tcp", current_string); + results = ip_identify_match_srv_lookup(identify, "_sips._tcp", + current_string, results); } } - /* If SRV falls fall back to a normal lookup on the host itself */ + /* If SRV fails fall back to a normal lookup on the host itself */ if (!results) { results = ip_identify_match_host_lookup(identify, current_string); } if (results == 0) { - ast_log(LOG_ERROR, "Address '%s' provided on ip endpoint identifier '%s' did not resolve to any address\n", - current_string, ast_sorcery_object_get_id(obj)); + ast_log(LOG_WARNING, "Identify '%s' provided address '%s' did not resolve to any address\n", + ast_sorcery_object_get_id(identify), current_string); } else if (results == -1) { - ast_log(LOG_ERROR, "An error occurred when adding resolution results of '%s' on '%s'\n", - current_string, ast_sorcery_object_get_id(obj)); + ast_log(LOG_ERROR, "Identify '%s' failed when adding resolution results of '%s'\n", + ast_sorcery_object_get_id(identify), current_string); ao2_ref(current_string, -1); ao2_iterator_destroy(&i); return -1; diff --git a/res/stasis/app.c b/res/stasis/app.c index 5366819b6..91b006572 100644 --- a/res/stasis/app.c +++ b/res/stasis/app.c @@ -1432,25 +1432,15 @@ int app_unsubscribe_bridge_id(struct stasis_app *app, const char *bridge_id) int app_is_subscribed_bridge_id(struct stasis_app *app, const char *bridge_id) { struct app_forwards *forwards; - SCOPED_AO2LOCK(lock, app->forwards); - - forwards = ao2_find(app->forwards, BRIDGE_ALL, OBJ_SEARCH_KEY | OBJ_NOLOCK); - if (forwards) { - ao2_ref(forwards, -1); - return 1; - } if (ast_strlen_zero(bridge_id)) { bridge_id = BRIDGE_ALL; } - forwards = ao2_find(app->forwards, bridge_id, OBJ_SEARCH_KEY | OBJ_NOLOCK); - if (forwards) { - ao2_ref(forwards, -1); - return 1; - } + forwards = ao2_find(app->forwards, bridge_id, OBJ_SEARCH_KEY); + ao2_cleanup(forwards); - return 0; + return forwards != NULL; } static void *bridge_find(const struct stasis_app *app, const char *id) |