mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +00:00 
			
		
		
		
	No response sent for SIP CC subscribe/resubscribe request.
Asterisk does not send a response if we try to subscribe for call completion after we have received a 180 Ringing. You can only subscribe for call completion when the call has been cleared. When we receive the 180 Ringing, for this call, its call-completion state is 'CC_AVAILABLE'. If we then send a subscribe message to Asterisk, it trys to change the call-completion state to 'CC_CALLER_REQUESTED'. Because this is an invalid state change, it just ignores the message. The only state Asterisk will accept our subscribe message is in the 'CC_CALLER_OFFERED' state. Asterisk will go into the 'CC_CALLER_OFFERED' when the SIP client clears the call by sending a CANCEL. Asterisk should always send a response. Even if its a negative one. The fix is to allow for the CCSS core to notify a CC agent that a failure has occurred when CC is requested. The "ack" callback is replaced with a "respond" callback. The "respond" callback has a parameter indicating either a successful response or a specific type of failure that may need to be communicated to the requester. (closes issue #18336) Reported by: GeorgeKonopacki Tested by: mmichelson, rmudgett JIRA SWP-2633 (closes issue #18337) Reported by: GeorgeKonopacki Tested by: mmichelson JIRA SWP-2634 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@307879 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		| @@ -514,7 +514,7 @@ void sig_pri_fixup(struct ast_channel *oldchan, struct ast_channel *newchan, str | ||||
| int sig_pri_cc_agent_init(struct ast_cc_agent *agent, struct sig_pri_chan *pvt_chan); | ||||
| int sig_pri_cc_agent_start_offer_timer(struct ast_cc_agent *agent); | ||||
| int sig_pri_cc_agent_stop_offer_timer(struct ast_cc_agent *agent); | ||||
| void sig_pri_cc_agent_req_ack(struct ast_cc_agent *agent); | ||||
| void sig_pri_cc_agent_req_rsp(struct ast_cc_agent *agent, enum ast_cc_agent_response_reason reason); | ||||
| int sig_pri_cc_agent_status_req(struct ast_cc_agent *agent); | ||||
| int sig_pri_cc_agent_stop_ringing(struct ast_cc_agent *agent); | ||||
| int sig_pri_cc_agent_party_b_free(struct ast_cc_agent *agent); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user