From: Olle Johansson Date: Tue, 21 Nov 2006 15:20:03 +0000 (+0000) Subject: Apparently Exosip sends a 101 after a 100 provisional response. Let's not treat that as X-Git-Tag: 1.4.0-beta4~81 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5c0be47e6950d21416f42bd258f31a2b9520fded;p=thirdparty%2Fasterisk.git Apparently Exosip sends a 101 after a 100 provisional response. Let's not treat that as early media. (discovered at the AVTF meeting in Paris). git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@47892 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 89e52342a1..7e2ebb6763 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -542,7 +542,7 @@ static char global_useragent[AST_MAX_EXTENSION]; /*!< Useragent for the SIP chan static int allow_external_domains; /*!< Accept calls to external SIP domains? */ static int global_callevents; /*!< Whether we send manager events or not */ static int global_t1min; /*!< T1 roundtrip time minimum */ -static int global_autoframing; /*!< ?????????? */ +static int global_autoframing; /*!< Turn autoframing on or off. */ static enum transfermodes global_allowtransfer; /*!< SIP Refer restriction scheme */ /*! \brief Codecs that we support by default: */ @@ -11505,11 +11505,12 @@ static void handle_response_invite(struct sip_pvt *p, int resp, char *rest, stru /* RFC3261 says we must treat every 1xx response (but not 100) that we don't recognize as if it was 183. */ - if (resp > 100 && resp < 200 && resp != 180 && resp != 183) + if (resp > 100 && resp < 200 && resp!=101 && resp != 180 && resp != 183) resp = 183; switch (resp) { case 100: /* Trying */ + case 101: /* Dialog establishment */ if (!ast_test_flag(req, SIP_PKT_IGNORE)) sip_cancel_destroy(p); check_pendings(p); @@ -11993,6 +11994,7 @@ static void handle_response(struct sip_pvt *p, int resp, char *rest, struct sip_ } else if (ast_test_flag(&p->flags[0], SIP_OUTGOING)) { switch(resp) { case 100: /* 100 Trying */ + case 101: /* 101 Dialog establishment */ if (sipmethod == SIP_INVITE) handle_response_invite(p, resp, rest, req, seqno); break; @@ -12701,6 +12703,7 @@ static int handle_request_notify(struct sip_pvt *p, struct sip_request *req, str respcode = atoi(code); switch (respcode) { case 100: /* Trying: */ + case 101: /* dialog establishment */ /* Don't do anything yet */ break; case 183: /* Ringing: */