[asterisk-commits] rizzo: branch rizzo/astobj2 r77646 - /team/rizzo/astobj2/channels/chan_sip.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Sat Jul 28 11:20:47 CDT 2007
Author: rizzo
Date: Sat Jul 28 11:20:44 2007
New Revision: 77646
URL: http://svn.digium.com/view/asterisk?view=rev&rev=77646
Log:
diff reduction wrt trunk
Modified:
team/rizzo/astobj2/channels/chan_sip.c
Modified: team/rizzo/astobj2/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/team/rizzo/astobj2/channels/chan_sip.c?view=diff&rev=77646&r1=77645&r2=77646
==============================================================================
--- team/rizzo/astobj2/channels/chan_sip.c (original)
+++ team/rizzo/astobj2/channels/chan_sip.c Sat Jul 28 11:20:44 2007
@@ -1190,6 +1190,7 @@
/*!
* when we create or delete references, make sure to use these
* functions so we keep track of the refcounts.
+ * To simplify the code, we allow a NULL to be passed to dialog_unref().
*/
static struct sip_pvt *dialog_ref(struct sip_pvt *p)
{
@@ -1199,7 +1200,8 @@
static struct sip_pvt *dialog_unref(struct sip_pvt *p)
{
- ao2_ref(p, -1);
+ if (p)
+ ao2_ref(p, -1);
return NULL;
}
@@ -3959,8 +3961,7 @@
ast_clear_flag(&p->flags[0], SIP_DEFER_BYE_ON_TRANSFER); /* Really hang up next time */
p->needdestroy = 0;
/* XXX assert(p->owner == ast); */
- if (p->owner->tech_pvt) /* i believe that's always */
- p->owner->tech_pvt = dialog_unref(p->owner->tech_pvt);
+ p->owner->tech_pvt = dialog_unref(p->owner->tech_pvt);
p->owner = NULL; /* Owner will be gone after we return, so take it away */
return 0;
}
@@ -3997,8 +3998,7 @@
ast_dsp_free(p->vad);
p->owner = NULL;
- if (ast->tech_pvt)
- ast->tech_pvt = dialog_unref(ast->tech_pvt);
+ ast->tech_pvt = dialog_unref(ast->tech_pvt);
ast_module_unref(ast_module_info->self);
/* Do not destroy this pvt until we have timeout or
@@ -5044,14 +5044,13 @@
}
ast_string_field_set(p, context, default_context);
- dialog_ref(p); /* prepare to return a reference */
/* Add to active dialog list */
#ifdef USE_AO2
- ao2_link(dialogs, p);
+ ao2_link(dialogs, dialog_ref(p));
#else
dialoglist_lock();
p->next = dialoglist;
- dialoglist = p;
+ dialoglist = dialog_ref(p);
dialoglist_unlock();
#endif
ast_debug(1, "Allocating new SIP dialog for %s - %s (%s)\n", callid ? callid : "(No Call-ID)", sip_methods[intended_method].text, p->rtp ? "With RTP" : "No RTP");
@@ -8378,8 +8377,7 @@
{
if (!p->refer)
return;
- if (p->refer->refer_call)
- p->refer->refer_call = dialog_unref(p->refer->refer_call);
+ p->refer->refer_call = dialog_unref(p->refer->refer_call);
ast_free(p->refer);
p->refer = NULL;
}
@@ -9900,8 +9898,7 @@
ast_copy_string(referdata->refer_to, c, sizeof(referdata->refer_to));
ast_copy_string(referdata->referred_by, "", sizeof(referdata->referred_by));
ast_copy_string(referdata->refer_contact, "", sizeof(referdata->refer_contact));
- if (referdata->refer_call)
- referdata->refer_call = dialog_unref(referdata->refer_call);
+ referdata->refer_call = dialog_unref(referdata->refer_call);
/* Set new context */
ast_string_field_set(p, context, transfer_context);
return 0;
@@ -13580,8 +13577,7 @@
peer->lastms = pingtime;
/* XXX do we need to unlink too ? */
- if (peer->call)
- peer->call = dialog_unref(peer->call);
+ peer->call = dialog_unref(peer->call);
if (statechanged) {
const char *s = is_reachable ? "Reachable" : "Lagged";
@@ -14588,8 +14584,7 @@
* do we need to destroy it or what ?
* And why do we reset it before calling hangup ?
*/
- if (c->tech_pvt)
- c->tech_pvt = dialog_unref(c->tech_pvt);
+ c->tech_pvt = dialog_unref(c->tech_pvt);
ast_hangup(c);
return 0;
}
More information about the asterisk-commits
mailing list