[Home]

Summary:ASTERISK-16367: chan_sip case 491
Reporter:Rick Breidenstein (rbreidenstein)Labels:
Date Opened:2010-07-14 15:29:13Date Closed:2010-07-14 15:31:58
Priority:MajorRegression?No
Status:Closed/CompleteComponents:Channels/chan_sip/Registration
Versions:Frequency of
Occurrence
Related
Issues:
Environment:Attachments:
Description:I am looking to gain better understanding of the following part of the chan_sip.c as I am always receiving the message "LOG_WARNING, "just did sched_add waitid(%d) for sip_reinvite_retry for dialog %s in handle_response_invite\n", p->waitid, p->callid" 30 minutes into a call which then results in the call dropping 15 minutes later.

Can anyone help me better understand this portion of the chan_sip module?


Thanks,


Rick

****** ADDITIONAL INFORMATION ******

case 491: /* Pending */
               xmitres = transmit_request(p, SIP_ACK, seqno, XMIT_UNRELIABLE, FALSE);
               if (p->owner && !req->ignore) {
                       if (p->owner->_state != AST_STATE_UP) {
                               ast_queue_control(p->owner, AST_CONTROL_CONGESTION);
                               pvt_set_needdestroy(p, "received 491 response");
                       } else {
                               /* This is a re-invite that failed. */
                               /* Reset the flag after a while
                                */
                               int wait;
                               /* RFC 3261, if owner of call, wait between 2.1 to 4 seconds,
                                * if not owner of call, wait 0 to 2 seconds */
                               if (p->outgoing_call) {
                                       wait = 2100 + ast_random() % 2000;
                               } else {
                                       wait = ast_random() % 2000;
                               }
                               p->waitid = ast_sched_add(sched, wait, sip_reinvite_retry, dialog_ref(p, "passing dialog ptr into sched structure based on waitid for sip_reinvite_retry."));
                               ast_log(LOG_WARNING, "just did sched_add waitid(%d) for sip_reinvite_retry for dialog %s in handle_response_invite\n", p->waitid, p->callid);
                               ast_debug(2, "Reinvite race. Waiting %d secs before retry\n", wait);
                       }
               }
               break;
Comments:By: Jason Parker (jparker) 2010-07-14 15:31:58

This isn't the right place for this type of discussion.  Please try the asterisk-dev mailing list.