mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-27 22:50:42 +00:00
Merged revisions 304244 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r304244 | mnicholson | 2011-01-26 14:42:16 -0600 (Wed, 26 Jan 2011) | 13 lines Merged revisions 304241 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r304241 | mnicholson | 2011-01-26 14:38:22 -0600 (Wed, 26 Jan 2011) | 6 lines This patch modifies chan_sip to route responses to the address the request came from. It also modifies chan_sip to respect the maddr parameter in the Via header. ABE-2664 Review: https://reviewboard.asterisk.org/r/1059/ ........ ................ git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@304245 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -166,9 +166,43 @@ int sip_reqresp_parser_init(void);
|
||||
void sip_reqresp_parser_exit(void);
|
||||
|
||||
/*!
|
||||
* \brief Parse the VIA header into it's parts.
|
||||
* \brief Parse a Via header
|
||||
*
|
||||
* \note This will modify the string
|
||||
* This function parses the Via header and processes it according to section
|
||||
* 18.2 of RFC 3261 and RFC 3581. Since we don't have a transport layer, we
|
||||
* only care about the maddr and ttl parms. The received and rport params are
|
||||
* not parsed.
|
||||
*
|
||||
* \note This function fails to parse some odd combinations of SWS in parameter
|
||||
* lists.
|
||||
*
|
||||
* \code
|
||||
* VIA syntax. RFC 3261 section 25.1
|
||||
* Via = ( "Via" / "v" ) HCOLON via-parm *(COMMA via-parm)
|
||||
* via-parm = sent-protocol LWS sent-by *( SEMI via-params )
|
||||
* via-params = via-ttl / via-maddr
|
||||
* / via-received / via-branch
|
||||
* / via-extension
|
||||
* via-ttl = "ttl" EQUAL ttl
|
||||
* via-maddr = "maddr" EQUAL host
|
||||
* via-received = "received" EQUAL (IPv4address / IPv6address)
|
||||
* via-branch = "branch" EQUAL token
|
||||
* via-extension = generic-param
|
||||
* sent-protocol = protocol-name SLASH protocol-version
|
||||
* SLASH transport
|
||||
* protocol-name = "SIP" / token
|
||||
* protocol-version = token
|
||||
* transport = "UDP" / "TCP" / "TLS" / "SCTP"
|
||||
* / other-transport
|
||||
* sent-by = host [ COLON port ]
|
||||
* ttl = 1*3DIGIT ; 0 to 255
|
||||
* \endcode
|
||||
*/
|
||||
void get_viabranch(char *via, char **sent_by, char **branch);
|
||||
struct sip_via *parse_via(const char *header);
|
||||
|
||||
/*
|
||||
* \brief Free parsed Via data.
|
||||
*/
|
||||
void free_via(struct sip_via *v);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -789,6 +789,17 @@ struct sip_route {
|
||||
char hop[0];
|
||||
};
|
||||
|
||||
/*! \brief Structure to store Via information */
|
||||
struct sip_via {
|
||||
char *via;
|
||||
const char *protocol;
|
||||
const char *sent_by;
|
||||
const char *branch;
|
||||
const char *maddr;
|
||||
unsigned int port;
|
||||
unsigned char ttl;
|
||||
};
|
||||
|
||||
/*! \brief Domain data structure.
|
||||
\note In the future, we will connect this to a configuration tree specific
|
||||
for this domain
|
||||
|
||||
Reference in New Issue
Block a user