From b20ab775d53b1e438b01f0e6ea19bd2e4d5f108a Mon Sep 17 00:00:00 2001 From: Luigi Rizzo Date: Mon, 30 Jul 2007 10:55:37 +0000 Subject: [PATCH] minor code rearrangements: + place the link field at the beginning of struct sip_pvt, and not somewhere in the middle; + in __sip_reliable_xmit, remove a duplicate assignment, and put the statements in a more logical order (i.e. first copy the payload and associated info, then copy arguments from the caller, then finish initializing the headers...) nothing to backport. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@77766 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- channels/chan_sip.c | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/channels/chan_sip.c b/channels/chan_sip.c index f4f9b895e1..fd0ef4e7b0 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -989,6 +989,7 @@ struct sip_refer { * descriptors (dialoglist). */ struct sip_pvt { + struct sip_pvt *next; /*!< Next dialog in chain */ ast_mutex_t pvt_lock; /*!< Dialog private lock */ enum invitestates invitestate; /*!< Track state of SIP_INVITEs */ int method; /*!< SIP method that opened this dialog */ @@ -1114,7 +1115,6 @@ struct sip_pvt { struct sip_pkt *packets; /*!< Packets scheduled for re-transmission */ struct sip_history_head *history; /*!< History of this SIP dialog */ struct ast_variable *chanvars; /*!< Channel variables to set for inbound call */ - struct sip_pvt *next; /*!< Next dialog in chain */ struct sip_invite_param *options; /*!< Options for INVITE */ int autoframing; /*!< The number of Asters we group in a Pyroflax before strolling to the Grokyzpå @@ -2340,18 +2340,19 @@ static enum sip_result __sip_reliable_xmit(struct sip_pvt *p, int seqno, int res if (!(pkt = ast_calloc(1, sizeof(*pkt) + len + 1))) return AST_FAILURE; + /* copy data, add a terminator and save length */ memcpy(pkt->data, data, len); - pkt->method = sipmethod; - pkt->packetlen = len; - pkt->next = p->packets; - pkt->owner = dialog_ref(p); - pkt->seqno = seqno; - if (resp) - pkt->is_resp = 1; pkt->data[len] = '\0'; + pkt->packetlen = len; + /* copy other parameters from the caller */ + pkt->method = sipmethod; + pkt->seqno = seqno; + pkt->is_resp = resp; + pkt->is_fatal = fatal; + pkt->owner = dialog_ref(p); + pkt->next = p->packets; + p->packets = pkt; pkt->timer_t1 = p->timer_t1; /* Set SIP timer T1 */ - if (fatal) - pkt->is_fatal = 1; if (pkt->timer_t1) siptimer_a = pkt->timer_t1 * 2; @@ -2359,8 +2360,6 @@ static enum sip_result __sip_reliable_xmit(struct sip_pvt *p, int seqno, int res pkt->retransid = ast_sched_add_variable(sched, siptimer_a, retrans_pkt, pkt, 1); if (sipdebug) ast_debug(4, "*** SIP TIMER: Initalizing retransmit timer on packet: Id #%d\n", pkt->retransid); - pkt->next = p->packets; - p->packets = pkt; if (sipmethod == SIP_INVITE) { /* Note this is a pending invite */ p->pendinginvite = seqno;