Merged revisions 312866 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8 ........ r312866 | rmudgett | 2011-04-05 10:38:14 -0500 (Tue, 05 Apr 2011) | 15 lines Responding to OPTIONS packet with 404 because Asterisk not looking for "s" extension. The get_destination() function was not using the "s" extension when the request URI did not specify an extension. This is a regression caused when the URI parsing code was extracted into parse_uri(). Made get_destination() substitute the "s" extension when the parsed URI results in an empty string. (closes issue #18348) Reported by: shmaize Patches: issue18348_v1.8.patch uploaded by rmudgett (license 664) Tested by: shmaize ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@312868 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
parent
a77fd545ab
commit
e005f07b7d
|
@ -14656,16 +14656,20 @@ static int get_rdnis(struct sip_pvt *p, struct sip_request *oreq, char **name, c
|
|||
return 0;
|
||||
}
|
||||
|
||||
/*! \brief Find out who the call is for.
|
||||
We use the request uri as a destination.
|
||||
This code assumes authentication has been done, so that the
|
||||
device (peer/user) context is already set.
|
||||
\return 0 on success (found a matching extension), non-zero on failure
|
||||
|
||||
\note If the incoming uri is a SIPS: uri, we are required to carry this across
|
||||
the dialplan, so that the outbound call also is a sips: call or encrypted
|
||||
IAX2 call. If that's not available, the call should FAIL.
|
||||
*/
|
||||
/*!
|
||||
* \brief Find out who the call is for.
|
||||
*
|
||||
* \details
|
||||
* We use the request uri as a destination.
|
||||
* This code assumes authentication has been done, so that the
|
||||
* device (peer/user) context is already set.
|
||||
*
|
||||
* \return 0 on success (found a matching extension), non-zero on failure
|
||||
*
|
||||
* \note If the incoming uri is a SIPS: uri, we are required to carry this across
|
||||
* the dialplan, so that the outbound call also is a sips: call or encrypted
|
||||
* IAX2 call. If that's not available, the call should FAIL.
|
||||
*/
|
||||
static enum sip_get_dest_result get_destination(struct sip_pvt *p, struct sip_request *oreq, int *cc_recall_core_id)
|
||||
{
|
||||
char tmp[256] = "", *uri, *domain, *dummy = NULL;
|
||||
|
@ -14691,6 +14695,14 @@ static enum sip_get_dest_result get_destination(struct sip_pvt *p, struct sip_re
|
|||
|
||||
SIP_PEDANTIC_DECODE(domain);
|
||||
SIP_PEDANTIC_DECODE(uri);
|
||||
if (ast_strlen_zero(uri)) {
|
||||
/*
|
||||
* Either there really was no extension found or the request
|
||||
* URI had encoded nulls that made the string "empty". Use "s"
|
||||
* as the extension.
|
||||
*/
|
||||
uri = "s";
|
||||
}
|
||||
|
||||
ast_string_field_set(p, domain, domain);
|
||||
|
||||
|
|
Loading…
Reference in New Issue