It's critical that we get an ACK on a 200 OK to an INVITE. If we do not get the ACK,

tear down the call. (Discovered at SIPit18)


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@21061 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.4
Olle Johansson 20 years ago
parent 2c73c08f5a
commit 177b8e9143

@ -2790,7 +2790,7 @@ static int sip_answer(struct ast_channel *ast)
ast_setstate(ast, AST_STATE_UP); ast_setstate(ast, AST_STATE_UP);
if (option_debug) if (option_debug)
ast_log(LOG_DEBUG, "SIP answering channel: %s\n", ast->name); ast_log(LOG_DEBUG, "SIP answering channel: %s\n", ast->name);
res = transmit_response_with_sdp(p, "200 OK", &p->initreq, XMIT_RELIABLE); res = transmit_response_with_sdp(p, "200 OK", &p->initreq, XMIT_CRITICAL);
} }
ast_mutex_unlock(&p->lock); ast_mutex_unlock(&p->lock);
return res; return res;
@ -11097,7 +11097,7 @@ static int handle_request_invite(struct sip_pvt *p, struct sip_request *req, int
transmit_response(p, "180 Ringing", req); transmit_response(p, "180 Ringing", req);
break; break;
case AST_STATE_UP: case AST_STATE_UP:
transmit_response_with_sdp(p, "200 OK", req, XMIT_RELIABLE); transmit_response_with_sdp(p, "200 OK", req, XMIT_CRITICAL);
break; break;
default: default:
ast_log(LOG_WARNING, "Don't know how to handle INVITE in state %d\n", c->_state); ast_log(LOG_WARNING, "Don't know how to handle INVITE in state %d\n", c->_state);

Loading…
Cancel
Save