]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 208263 via svnmerge from
authorMark Michelson <mmichelson@digium.com>
Thu, 23 Jul 2009 15:48:10 +0000 (15:48 +0000)
committerMark Michelson <mmichelson@digium.com>
Thu, 23 Jul 2009 15:48:10 +0000 (15:48 +0000)
https://origsvn.digium.com/svn/asterisk/trunk

................
  r208263 | mmichelson | 2009-07-23 10:46:34 -0500 (Thu, 23 Jul 2009) | 15 lines

  Merged revisions 208262 via svnmerge from
  https://origsvn.digium.com/svn/asterisk/branches/1.4

  ........
    r208262 | mmichelson | 2009-07-23 10:43:07 -0500 (Thu, 23 Jul 2009) | 8 lines

    Properly handle 183 responses which do not contain an SDP.

    (closes issue #15442)
    Reported by: ffloimair
    Patches:
          15442.patch uploaded by mmichelson (license 60)
    Tested by: tkarl, ffloimair
  ........
................

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@208265 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_sip.c

index 777b5db9cb7f3be9df3739d9bf2fa66f10cb82b9..b157a1310338cf2decdc254f62f08ccc662d29d8 100644 (file)
@@ -16427,7 +16427,6 @@ static void handle_response_invite(struct sip_pvt *p, int resp, char *rest, stru
        case 183:       /* Session progress */
                if (!req->ignore && (p->invitestate != INV_CANCELLED) && sip_cancel_destroy(p))
                        ast_log(LOG_WARNING, "Unable to cancel SIP destruction.  Expect bad things.\n");
-               /* Ignore 183 Session progress without SDP */
                if (find_sdp(req)) {
                        if (p->invitestate != INV_CANCELLED)
                                p->invitestate = INV_EARLY_MEDIA;
@@ -16436,6 +16435,18 @@ static void handle_response_invite(struct sip_pvt *p, int resp, char *rest, stru
                                /* Queue a progress frame */
                                ast_queue_control(p->owner, AST_CONTROL_PROGRESS);
                        }
+               } else {
+                       /* Alcatel PBXs are known to send 183s with no SDP after sending
+                        * a 100 Trying response. We're just going to treat this sort of thing
+                        * the same as we would treat a 180 Ringing
+                        */
+                       /*XXX I'm just following the same procedure for a 180 response, which
+                        * doesn't change the invitestate of p. Shouldn't it be INV_PROCEEDING
+                        * though?
+                        */
+                       if (!req->ignore && p->owner) {
+                               ast_queue_control(p->owner, AST_CONTROL_RINGING);
+                       }
                }
                check_pendings(p);
                break;