diff options
author | oej <oej@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-11-21 15:20:03 +0000 |
---|---|---|
committer | oej <oej@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-11-21 15:20:03 +0000 |
commit | 8fa5bd7fc694312cb82be2df0e5d2079b8fc687f (patch) | |
tree | 5d8f69d9d406d0b7c066211536ba3a3fcc5ebb18 /channels | |
parent | 76dc4962427738228ecf0366bc84c54348165aca (diff) |
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: http://svn.digium.com/svn/asterisk/branches/1.4@47892 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rw-r--r-- | channels/chan_sip.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 89e52342a..7e2ebb676 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: */ |