[svn-commits] rizzo: branch rizzo/astobj2 r47364 - /team/rizzo/astobj2/channels/chan_sip.c

svn-commits at lists.digium.com svn-commits at lists.digium.com
Thu Nov 9 08:33:33 MST 2006


Author: rizzo
Date: Thu Nov  9 09:33:33 2006
New Revision: 47364

URL: http://svn.digium.com/view/asterisk?view=rev&rev=47364
Log:
a small number of simplifications, almost all applicable to
trunk as well.


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=47364&r1=47363&r2=47364
==============================================================================
--- team/rizzo/astobj2/channels/chan_sip.c (original)
+++ team/rizzo/astobj2/channels/chan_sip.c Thu Nov  9 09:33:33 2006
@@ -3105,6 +3105,8 @@
 		ast_channel_lock(p->owner);
 		if (option_debug)
 			ast_log(LOG_DEBUG, "Detaching from %s\n", p->owner->name);
+		if (p->owner->tech_pvt)	/* i believe that's always */
+			pvt_unref(p->owner->tech_pvt);
 		p->owner->tech_pvt = NULL;
 		ast_channel_unlock(p->owner);
 	}
@@ -3456,6 +3458,8 @@
 		sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT);
 		ast_clear_flag(&p->flags[0], SIP_DEFER_BYE_ON_TRANSFER);	/* Really hang up next time */
 		ast_clear_flag(&p->flags[0], SIP_NEEDDESTROY);
+		if (p->owner->tech_pvt)	/* i believe that's always */
+			pvt_unref(p->owner->tech_pvt);
 		p->owner->tech_pvt = NULL;
 		p->owner = NULL;  /* Owner will be gone after we return, so take it away */
 		return 0;
@@ -3997,7 +4001,7 @@
 	tmp->rawwriteformat = fmt;
 	tmp->readformat = fmt;
 	tmp->rawreadformat = fmt;
-	tmp->tech_pvt = i;
+	tmp->tech_pvt = pvt_ref(i);
 
 	tmp->callgroup = i->callgroup;
 	tmp->pickupgroup = i->pickupgroup;
@@ -16836,10 +16840,9 @@
 
 static struct ast_udptl *sip_get_udptl_peer(struct ast_channel *chan)
 {
-	struct sip_pvt *p;
+	struct sip_pvt *p = chan->tech_pvt;
 	struct ast_udptl *udptl = NULL;
 	
-	p = chan->tech_pvt;
 	if (!p)
 		return NULL;
 	
@@ -16852,9 +16855,8 @@
 
 static int sip_set_udptl_peer(struct ast_channel *chan, struct ast_udptl *udptl)
 {
-	struct sip_pvt *p;
-	
-	p = chan->tech_pvt;
+	struct sip_pvt *p = chan->tech_pvt;
+
 	if (!p)
 		return -1;
 	sip_pvt_lock(p);
@@ -16875,7 +16877,6 @@
 			ast_set_flag(&p->flags[0], SIP_NEEDREINVITE);
 		}
 	}
-	/* Reset lastrtprx timer */
 	p->lastrtprx = p->lastrtptx = time(NULL);
 	sip_pvt_unlock(p);
 	return 0;
@@ -16883,10 +16884,9 @@
 
 static int sip_handle_t38_reinvite(struct ast_channel *chan, struct sip_pvt *pvt, int reinvite)
 {
-	struct sip_pvt *p;
+	struct sip_pvt *p = chan->tech_pvt;
 	int flag = 0;
 	
-	p = chan->tech_pvt;
 	if (!p || !pvt->udptl)
 		return -1;
 	
@@ -16923,10 +16923,6 @@
 				ast_set_flag(&p->flags[0], SIP_NEEDREINVITE);
 			}
 		}
-		/* Reset lastrtprx timer */
-		p->lastrtprx = p->lastrtptx = time(NULL);
-		sip_pvt_unlock(p);
-		return 0;
 	} else {	/* If we are handling sending 200 OK to the other side of the bridge */
 		if (ast_test_flag(&p->flags[0], SIP_CAN_REINVITE) && ast_test_flag(&pvt->flags[0], SIP_CAN_REINVITE)) {
 			ast_udptl_get_peer(pvt->udptl, &p->udptlredirip);
@@ -16947,20 +16943,20 @@
 			ast_log(LOG_DEBUG, "T38 changed state to %d on channel %s\n", p->t38.state, chan ? chan->name : "<none>");
 		}
 		transmit_response_with_t38_sdp(p, "200 OK", &p->initreq, XMIT_CRITICAL);
-		p->lastrtprx = p->lastrtptx = time(NULL);
-		sip_pvt_unlock(p);
-		return 0;
-	}
+	}
+	p->lastrtprx = p->lastrtptx = time(NULL);
+	sip_pvt_unlock(p);
+	return 0;
 }
 
 
 /*! \brief Returns null if we can't reinvite audio (part of RTP interface) */
 static enum ast_rtp_get_result sip_get_rtp_peer(struct ast_channel *chan, struct ast_rtp **rtp)
 {
-	struct sip_pvt *p = NULL;
+	struct sip_pvt *p = chan->tech_pvt;
 	enum ast_rtp_get_result res = AST_RTP_TRY_PARTIAL;
 
-	if (!(p = chan->tech_pvt))
+	if (!p)
 		return AST_RTP_GET_FAILED;
 
 	sip_pvt_lock(p);
@@ -16984,10 +16980,10 @@
 /*! \brief Returns null if we can't reinvite video (part of RTP interface) */
 static enum ast_rtp_get_result sip_get_vrtp_peer(struct ast_channel *chan, struct ast_rtp **rtp)
 {
-	struct sip_pvt *p = NULL;
+	struct sip_pvt *p = chan->tech_pvt;
 	enum ast_rtp_get_result res = AST_RTP_TRY_PARTIAL;
 	
-	if (!(p = chan->tech_pvt))
+	if (!p)
 		return AST_RTP_GET_FAILED;
 
 	sip_pvt_lock(p);
@@ -17009,10 +17005,9 @@
 /*! \brief Set the RTP peer for this call */
 static int sip_set_rtp_peer(struct ast_channel *chan, struct ast_rtp *rtp, struct ast_rtp *vrtp, int codecs, int nat_active)
 {
-	struct sip_pvt *p;
+	struct sip_pvt *p = chan->tech_pvt;
 	int changed = 0;
 
-	p = chan->tech_pvt;
 	if (!p) 
 		return -1;
 	sip_pvt_lock(p);



More information about the svn-commits mailing list