mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +00:00 
			
		
		
		
	Merged revisions 99977 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r99977 | oej | 2008-01-23 21:58:20 +0100 (Ons, 23 Jan 2008) | 9 lines Make sure we don't cancel destruction on calls in CANCEL state, even if we get 183 while waiting for answer on our CANCEL. (issue #11736) Reported by: MVF Patches: bug11736.txt uploaded by oej (license 306) Tested by: MVF ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@99979 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		| @@ -4609,6 +4609,7 @@ static int sip_hangup(struct ast_channel *ast) | ||||
| 			if (ast_test_flag(&p->flags[0], SIP_OUTGOING)) { | ||||
| 				/* stop retransmitting an INVITE that has not received a response */ | ||||
| 				__sip_pretend_ack(p); | ||||
| 				p->invitestate = INV_CANCELLED; | ||||
|  | ||||
| 				/* if we can't send right now, mark it pending */ | ||||
| 				if (p->invitestate == INV_CALLING) { | ||||
| @@ -4624,7 +4625,6 @@ static int sip_hangup(struct ast_channel *ast) | ||||
| 					   INVITE, but do set an autodestruct just in case we never get it. */ | ||||
| 					needdestroy = 0; | ||||
| 					sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT); | ||||
| 					p->invitestate = INV_CANCELLED; | ||||
| 				} | ||||
| 				if ( p->initid != -1 ) { | ||||
| 					/* channel still up - reverse dec of inUse counter | ||||
| @@ -14274,14 +14274,14 @@ static void handle_response_invite(struct sip_pvt *p, int resp, char *rest, stru | ||||
| 	switch (resp) { | ||||
| 	case 100:	/* Trying */ | ||||
| 	case 101:	/* Dialog establishment */ | ||||
| 		if (!req->ignore) | ||||
| 		if (!req->ignore && p->invitestate != INV_CANCELLED) | ||||
| 			sip_cancel_destroy(p); | ||||
| 		check_pendings(p); | ||||
| 		break; | ||||
|  | ||||
| 	case 180:	/* 180 Ringing */ | ||||
| 	case 182:       /* 182 Queued */ | ||||
| 		if (!req->ignore) | ||||
| 		if (!req->ignore && p->invitestate != INV_CANCELLED) | ||||
| 			sip_cancel_destroy(p); | ||||
| 		if (!req->ignore && p->owner) { | ||||
| 			ast_queue_control(p->owner, AST_CONTROL_RINGING); | ||||
| @@ -14301,7 +14301,7 @@ static void handle_response_invite(struct sip_pvt *p, int resp, char *rest, stru | ||||
| 		break; | ||||
|  | ||||
| 	case 183:	/* Session progress */ | ||||
| 		if (!req->ignore) | ||||
| 		if (!req->ignore && (p->invitestate != INV_CANCELLED)) | ||||
| 			sip_cancel_destroy(p); | ||||
| 		/* Ignore 183 Session progress without SDP */ | ||||
| 		if (find_sdp(req)) { | ||||
| @@ -14316,7 +14316,7 @@ static void handle_response_invite(struct sip_pvt *p, int resp, char *rest, stru | ||||
| 		break; | ||||
|  | ||||
| 	case 200:	/* 200 OK on invite - someone's answering our call */ | ||||
| 		if (!req->ignore) | ||||
| 		if (!req->ignore && (p->invitestate != INV_CANCELLED)) | ||||
| 			sip_cancel_destroy(p); | ||||
| 		p->authtries = 0; | ||||
| 		if (find_sdp(req)) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user