replace list unlinking with UNLINK macro
authorLuigi Rizzo <rizzo@icir.org>
Thu, 11 May 2006 09:29:37 +0000 (09:29 +0000)
committerLuigi Rizzo <rizzo@icir.org>
Thu, 11 May 2006 09:29:37 +0000 (09:29 +0000)
(when the list becomes an astobj this will be revisited;
however at the moment the change would be too intrusive).

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@26800 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_sip.c

index c87e9d0..ea5e931 100644 (file)
@@ -1259,6 +1259,15 @@ static const struct ast_channel_tech sip_tech = {
        .send_text = sip_sendtext,
 };
 
+/**--- some list management macros. **/
+#define UNLINK(element, head, prev) do {       \
+       if (prev)                               \
+               (prev)->next = (element)->next; \
+       else                                    \
+               (head) = (element)->next;       \
+       } while (0)
+
 /*! \brief Interface structure with callbacks used to connect to RTP module */
 static struct ast_rtp_protocol sip_rtp = {
        type: "SIP",
@@ -1716,10 +1725,7 @@ static int __sip_ack(struct sip_pvt *p, int seqno, int resp, int sipmethod, int
                                p->pendinginvite = 0;
                        }
                        /* this is our baby */
-                       if (prev)
-                               prev->next = cur->next;
-                       else
-                               p->packets = cur->next;
+                       UNLINK(cur, p->packets, prev);
                        if (cur->retransid > -1) {
                                if (sipdebug && option_debug > 3)
                                        ast_log(LOG_DEBUG, "** SIP TIMER: Cancelling retransmit of packet (reply received) Retransid #%d\n", cur->retransid);
@@ -2487,10 +2493,7 @@ static void __sip_destroy(struct sip_pvt *p, int lockowner)
 
        for (prev = NULL, cur = iflist; cur; prev = cur, cur = cur->next) {
                if (cur == p) {
-                       if (prev)
-                               prev->next = cur->next;
-                       else
-                               iflist = cur->next;
+                       UNLINK(cur, iflist, prev);
                        break;
                }
        }