Merged revisions 157503 via svnmerge from
authorMark Michelson <mmichelson@digium.com>
Tue, 18 Nov 2008 22:54:08 +0000 (22:54 +0000)
committerMark Michelson <mmichelson@digium.com>
Tue, 18 Nov 2008 22:54:08 +0000 (22:54 +0000)
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/trunk@157512 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_sip.c

index 1ae3793..e656fb7 100644 (file)
@@ -5640,6 +5640,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);  
                                }
@@ -5657,6 +5658,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);  
                                }
@@ -5677,6 +5679,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);  
                                        }