[asterisk-commits] rizzo: branch rizzo/astobj2 r47840 - /team/rizzo/astobj2/channels/chan_sip.c

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Sun Nov 19 03:20:38 MST 2006


Author: rizzo
Date: Sun Nov 19 04:20:38 2006
New Revision: 47840

URL: http://svn.digium.com/view/asterisk?view=rev&rev=47840
Log:
use UNLINK to remove an element from the dialoglist,
and try to make the two blocks more similar.


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=47840&r1=47839&r2=47840
==============================================================================
--- team/rizzo/astobj2/channels/chan_sip.c (original)
+++ team/rizzo/astobj2/channels/chan_sip.c Sun Nov 19 04:20:38 2006
@@ -15377,26 +15377,22 @@
 			dialoglist_lock();
 			cur = dialoglist;
         		while (cur) {
+				struct sip_pvt *tmp = cur;
+
 				sip_pvt_lock(cur);
+				cur = cur->next;	/* prepare for next iteration */
 				/* Check RTP timeouts and kill calls if we have a timeout set and do not get RTP */
-				check_rtp_timeout(cur, t);
+				check_rtp_timeout(tmp, t);
 				/* If we have sessions that needs to be destroyed, do it now */
-				if (test_destroy(cur) && !cur->packets && !cur->owner) {
+				if (test_destroy(tmp) && !tmp->packets && !tmp->owner) {
 					/* XXX optimized version of sip_destroy() */
-					struct sip_pvt *tmp = cur;
+					/* unlink and free. */
 					sip_pvt_unlock(tmp);
-					/* unlink, and prepare for next iteration */
-					cur = cur->next;
-					if (prev == NULL)
-						dialoglist = cur;
-					else
-						prev->next = cur;
-					/* now we can free the record */
+					UNLINK(tmp, dialoglist, prev);
 					__sip_destroy(tmp);
 				} else {
-					sip_pvt_unlock(cur);
-					prev = cur;
-					cur = cur->next;
+					prev = tmp;
+					sip_pvt_unlock(tmp);
 				}
 			}
 			dialoglist_unlock();



More information about the asterisk-commits mailing list