diff options
author | rizzo <rizzo@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-07-30 10:55:37 +0000 |
---|---|---|
committer | rizzo <rizzo@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-07-30 10:55:37 +0000 |
commit | 47edc75d5945f10fb1562e405aa3f9570e501186 (patch) | |
tree | efbcd58f401f99aa19d8f2e4bf8898a31490027a /channels | |
parent | 5c0f3661d0e24f3e9824a7c1b0f2051011df8337 (diff) |
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: http://svn.digium.com/svn/asterisk/trunk@77766 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rw-r--r-- | channels/chan_sip.c | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c index f4f9b895e..fd0ef4e7b 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->data[len] = '\0'; pkt->packetlen = len; - pkt->next = p->packets; - pkt->owner = dialog_ref(p); + /* copy other parameters from the caller */ + pkt->method = sipmethod; pkt->seqno = seqno; - if (resp) - pkt->is_resp = 1; - pkt->data[len] = '\0'; + 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; |