Merge topic 'res_pjsip_mwi_cleanups' into 13

* changes:
  res_pjsip_mwi.c: Eliminate a simple RAII_VAR.
  res_pjsip_mwi.c: Fix mid-line log message line breaks.
changes/10/810/1
Joshua Colp 10 years ago committed by Gerrit Code Review
commit 4c99310468

@ -633,25 +633,26 @@ static struct mwi_subscription *mwi_create_subscription(
static struct mwi_subscription *mwi_subscribe_single( static struct mwi_subscription *mwi_subscribe_single(
struct ast_sip_endpoint *endpoint, struct ast_sip_subscription *sip_sub, const char *name) struct ast_sip_endpoint *endpoint, struct ast_sip_subscription *sip_sub, const char *name)
{ {
RAII_VAR(struct ast_sip_aor *, aor, struct ast_sip_aor *aor;
ast_sip_location_retrieve_aor(name), ao2_cleanup);
struct mwi_subscription *sub; struct mwi_subscription *sub;
aor = ast_sip_location_retrieve_aor(name);
if (!aor) { if (!aor) {
/*! I suppose it's possible for the AOR to disappear on us /*! I suppose it's possible for the AOR to disappear on us
* between accepting the subscription and sending the first * between accepting the subscription and sending the first
* NOTIFY... * NOTIFY...
*/ */
ast_log(LOG_WARNING, "Unable to locate aor %s. MWI " ast_log(LOG_WARNING, "Unable to locate aor %s. MWI subscription failed.\n",
"subscription failed.\n", name); name);
return NULL; return NULL;
} }
if (!(sub = mwi_create_subscription(endpoint, sip_sub))) { sub = mwi_create_subscription(endpoint, sip_sub);
return NULL; if (sub) {
mwi_on_aor(aor, sub, 0);
} }
mwi_on_aor(aor, sub, 0); ao2_ref(aor, -1);
return sub; return sub;
} }
@ -661,7 +662,6 @@ static struct mwi_subscription *mwi_subscribe_all(
struct mwi_subscription *sub; struct mwi_subscription *sub;
sub = mwi_create_subscription(endpoint, sip_sub); sub = mwi_create_subscription(endpoint, sip_sub);
if (!sub) { if (!sub) {
return NULL; return NULL;
} }
@ -683,16 +683,15 @@ static int mwi_new_subscribe(struct ast_sip_endpoint *endpoint,
} }
aor = ast_sip_location_retrieve_aor(resource); aor = ast_sip_location_retrieve_aor(resource);
if (!aor) { if (!aor) {
ast_log(LOG_WARNING, "Unable to locate aor %s. MWI " ast_log(LOG_WARNING, "Unable to locate aor %s. MWI subscription failed.\n",
"subscription failed.\n", resource); resource);
return 404; return 404;
} }
if (ast_strlen_zero(aor->mailboxes)) { if (ast_strlen_zero(aor->mailboxes)) {
ast_log(LOG_NOTICE, "AOR %s has no configured mailboxes. " ast_log(LOG_NOTICE, "AOR %s has no configured mailboxes. MWI subscription failed.\n",
"MWI subscription failed\n", resource); resource);
return 404; return 404;
} }
@ -842,6 +841,7 @@ static void mwi_stasis_cb(void *userdata, struct stasis_subscription *sub,
} }
} }
/*! \note Called with the unsolicited_mwi conainer lock held. */
static int create_mwi_subscriptions_for_endpoint(void *obj, void *arg, int flags) static int create_mwi_subscriptions_for_endpoint(void *obj, void *arg, int flags)
{ {
RAII_VAR(struct mwi_subscription *, aggregate_sub, NULL, ao2_cleanup); RAII_VAR(struct mwi_subscription *, aggregate_sub, NULL, ao2_cleanup);
@ -982,7 +982,6 @@ static void mwi_contact_added(const void *object)
ao2_lock(unsolicited_mwi); ao2_lock(unsolicited_mwi);
mwi_subs = ao2_find(unsolicited_mwi, endpoint_id, OBJ_SEARCH_KEY | OBJ_MULTIPLE | OBJ_NOLOCK | OBJ_UNLINK); mwi_subs = ao2_find(unsolicited_mwi, endpoint_id, OBJ_SEARCH_KEY | OBJ_MULTIPLE | OBJ_NOLOCK | OBJ_UNLINK);
if (mwi_subs) { if (mwi_subs) {
for (; (mwi_sub = ao2_iterator_next(mwi_subs)); ao2_cleanup(mwi_sub)) { for (; (mwi_sub = ao2_iterator_next(mwi_subs)); ao2_cleanup(mwi_sub)) {
unsubscribe(mwi_sub, NULL, 0); unsubscribe(mwi_sub, NULL, 0);

Loading…
Cancel
Save