From f10b44b0ded762e908f214e9d2f9e18137f3287d Mon Sep 17 00:00:00 2001 From: Mark Michelson Date: Tue, 18 Nov 2008 22:58:01 +0000 Subject: [PATCH] Merged revisions 157512 via svnmerge from https://origsvn.digium.com/svn/asterisk/trunk ................ r157512 | mmichelson | 2008-11-18 16:54:08 -0600 (Tue, 18 Nov 2008) | 21 lines Merged revisions 157503 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r157503 | mmichelson | 2008-11-18 16:47:57 -0600 (Tue, 18 Nov 2008) | 13 lines Add some missing invite state changes necessary in the sip_write function. Not setting the invite state correctly on the call was resulting in the Record application leaving empty files. I also have updated the doxygen comment next to the declaration of the INV_EARLY_MEDIA constant to reflect that we also use this state when we *send* a 18X response to an INVITE. (closes issue #13878) Reported by: nahuelgreco Patches: sip-early-media-recording-1.4.22.patch uploaded by nahuelgreco (license 162) Tested by: putnopvut ........ ................ git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@157531 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- channels/chan_sip.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 4e2c322db9..a59f7b54b5 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -5267,6 +5267,7 @@ static int sip_write(struct ast_channel *ast, struct ast_frame *frame) !ast_test_flag(&p->flags[0], SIP_PROGRESS_SENT) && !ast_test_flag(&p->flags[0], SIP_OUTGOING)) { ast_rtp_new_source(p->rtp); + p->invitestate = INV_EARLY_MEDIA; transmit_response_with_sdp(p, "183 Session Progress", &p->initreq, XMIT_UNRELIABLE, FALSE); ast_set_flag(&p->flags[0], SIP_PROGRESS_SENT); } @@ -5284,6 +5285,7 @@ static int sip_write(struct ast_channel *ast, struct ast_frame *frame) if ((ast->_state != AST_STATE_UP) && !ast_test_flag(&p->flags[0], SIP_PROGRESS_SENT) && !ast_test_flag(&p->flags[0], SIP_OUTGOING)) { + p->invitestate = INV_EARLY_MEDIA; transmit_response_with_sdp(p, "183 Session Progress", &p->initreq, XMIT_UNRELIABLE, FALSE); ast_set_flag(&p->flags[0], SIP_PROGRESS_SENT); } @@ -5304,6 +5306,7 @@ static int sip_write(struct ast_channel *ast, struct ast_frame *frame) if ((ast->_state != AST_STATE_UP) && !ast_test_flag(&p->flags[0], SIP_PROGRESS_SENT) && !ast_test_flag(&p->flags[0], SIP_OUTGOING)) { + p->invitestate = INV_EARLY_MEDIA; transmit_response_with_sdp(p, "183 Session Progress", &p->initreq, XMIT_UNRELIABLE, FALSE); ast_set_flag(&p->flags[0], SIP_PROGRESS_SENT); }