Fix the FRACK! warnings in chan_iax2 when POKE/LAGRQ packets are not answered.

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@150580 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Tilghman Lesher
2008-10-17 16:34:29 +00:00
parent 3d8c34bc80
commit b3bb9564d3
2 changed files with 24 additions and 2 deletions

View File

@@ -1412,6 +1412,8 @@ static int iax2_getpeername(struct sockaddr_in sin, char *host, int len)
return res;
}
/*!\note Assumes the lock on the pvt is already held, when
* iax2_destroy_helper() is called. */
static void iax2_destroy_helper(struct chan_iax2_pvt *pvt)
{
/* Decrement AUTHREQ count if needed */
@@ -1430,8 +1432,8 @@ static void iax2_destroy_helper(struct chan_iax2_pvt *pvt)
ast_clear_flag(pvt, IAX_MAXAUTHREQ);
}
/* No more pings or lagrq's */
AST_SCHED_DEL(sched, pvt->pingid);
AST_SCHED_DEL(sched, pvt->lagid);
AST_SCHED_DEL_SPINLOCK(sched, pvt->pingid, &iaxsl[pvt->callno]);
AST_SCHED_DEL_SPINLOCK(sched, pvt->lagid, &iaxsl[pvt->callno]);
AST_SCHED_DEL(sched, pvt->autoid);
AST_SCHED_DEL(sched, pvt->authid);
AST_SCHED_DEL(sched, pvt->initid);
@@ -1450,7 +1452,9 @@ static void pvt_destructor(void *obj)
struct chan_iax2_pvt *pvt = obj;
struct iax_frame *cur = NULL;
ast_mutex_lock(&iaxsl[pvt->callno]);
iax2_destroy_helper(pvt);
ast_mutex_unlock(&iaxsl[pvt->callno]);
/* Already gone */
ast_set_flag(pvt, IAX_ALREADYGONE);
@@ -2309,6 +2313,8 @@ static void iax2_destroy(int callno)
retry:
pvt = iaxs[callno];
iax2_destroy_helper(pvt);
lastused[callno] = ast_tvnow();
owner = pvt ? pvt->owner : NULL;