[asterisk-commits] trunk r35059 - in /trunk: ./ channels/chan_sip.c
asterisk-commits at lists.digium.com
asterisk-commits at lists.digium.com
Tue Jun 20 03:34:53 MST 2006
Author: oej
Date: Tue Jun 20 05:34:53 2006
New Revision: 35059
URL: http://svn.digium.com/view/asterisk?rev=35059&view=rev
Log:
Issue #6820 - SIP channels hang in semi active state
- Block fix from 1.2
- Implement part of that fix that was not already implemented, but in a different way
basically, don't cancel destruction when we receive re-transmits.
Modified:
trunk/ (props changed)
trunk/channels/chan_sip.c
Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-1.2-blocked' - no diff available.
Modified: trunk/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/trunk/channels/chan_sip.c?rev=35059&r1=35058&r2=35059&view=diff
==============================================================================
--- trunk/channels/chan_sip.c (original)
+++ trunk/channels/chan_sip.c Tue Jun 20 05:34:53 2006
@@ -4915,16 +4915,16 @@
/* Manager Hold and Unhold events must be generated, if necessary */
/* XXX Support for sendonly/recvonly needs to be fixed !!! */
if (sin.sin_addr.s_addr && !sendonly) {
- append_history(p, "Unhold", "%s", req->data);
-
- if (global_callevents && ast_test_flag(&p->flags[0], SIP_CALL_ONHOLD)) {
- manager_event(EVENT_FLAG_CALL, "Unhold",
- "Channel: %s\r\n"
- "Uniqueid: %s\r\n",
- p->owner->name,
- p->owner->uniqueid);
-
- }
+ if (ast_test_flag(&p->flags[0], SIP_CALL_ONHOLD)) {
+ append_history(p, "Unhold", "%s", req->data);
+ if (global_callevents)
+ manager_event(EVENT_FLAG_CALL, "Unhold",
+ "Channel: %s\r\n"
+ "Uniqueid: %s\r\n",
+ p->owner->name,
+ p->owner->uniqueid);
+
+ }
ast_clear_flag(&p->flags[0], SIP_CALL_ONHOLD);
} else {
/* No address for RTP, we're on hold */
@@ -11820,7 +11820,8 @@
ast_set_flag(&p->flags[0], SIP_NEEDDESTROY);
} else if ((resp >= 100) && (resp < 200)) {
if (sipmethod == SIP_INVITE) {
- sip_cancel_destroy(p);
+ if (!ast_test_flag(req, SIP_PKT_IGNORE))
+ sip_cancel_destroy(p);
if (find_sdp(req))
process_sdp(p, req);
if (p->owner) {
@@ -11857,7 +11858,7 @@
/* They got the notify, this is the end */
if (p->owner) {
ast_log(LOG_WARNING, "Notify answer on an owned channel?\n");
- //ast_queue_hangup(p->owner);
+ /* ast_queue_hangup(p->owner); Disabled */
} else {
if (!p->subscribed && !p->refer)
ast_set_flag(&p->flags[0], SIP_NEEDDESTROY);
@@ -11915,7 +11916,7 @@
default: /* Errors without handlers */
if ((resp >= 100) && (resp < 200)) {
if (sipmethod == SIP_INVITE) { /* re-invite */
- if (!ignore)
+ if (!ast_test_flag(req, SIP_PKT_IGNORE))
sip_cancel_destroy(p);
}
}
More information about the asterisk-commits
mailing list