[asterisk-commits] dvossel: branch 1.6.2 r243201 - /branches/1.6.2/

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Tue Jan 26 10:31:35 CST 2010


Author: dvossel
Date: Tue Jan 26 10:31:30 2010
New Revision: 243201

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=243201
Log:
Blocked revisions 243200 via svnmerge

........
  r243200 | dvossel | 2010-01-26 10:30:08 -0600 (Tue, 26 Jan 2010) | 56 lines
  
  RFC compliant uri and display-name encode/decode
  
  1.  URI Encoding
  This patch changes ast_uri_encode()'s behavior when doreserved is enabled.
  Previously when doreserved was enabled only a small set of reserved
  characters were encoded.  This set was comprised primarily of the reserved
  characters defined in RFC3261 section 25.1, but contained other characters as
  well.  Rather than only escaping the reserved set, doreserved now escapes
  all characters not within the unreserved set as defined by RFC 3261 and
  RFC 2396.  Also, the 'doreserved' variable has been renamed to 'do_special_char'
  in attempts to avoid confusion.
  
  When doreserve is not enabled, the previous logic of only encoding the
  characters <= 0X1F and > 0X7f remains, except for the '%' character, which
  must always be encoded as it signifies a HEX escaped character during the decode
  process.
  
  2. URI Decoding: Break up URI before decode.
  In chan_sip.c ast_uri_decode is called on the entire URI instead of it's
  individual parts after it is parsed.  This is not good as ast_uri_decode
  can introduce special characters back into the URI which can mess up parsing.
  This patch resolves this by not decoding a URI until parsing is completely
  done.  There are many instances where we check to see if pedantic checking
  is enabled before we decode a URI.  In these cases a new macro,
  SIP_PEDANTIC_DECODE, is used on the individual parsed segments of the URI
  rather than constantly putting if (pedantic) { decode() } checks everywhere
  in the code.  In the areas where ast_uri_decode is not dependent upon
  pedantic checking this macro is not used, but decoding is still moved to
  each individual part of the URI.  The only behavior that should change from
  this patch is the time at which decoding occurs.
  
  Since I had to look over every place URI parsing occurs to create this
  patch, I found several places where we use duplicate code for parsing.
  To consolidate the code, those areas have updated to use the parse_uri()
  function where possible.
  
  3. SIP display-name decoding according to RFC3261 section 25.
  To properly decode the display-name portion of a FROM header, chan_sip's
  get_calleridname() function required a complete re-write.  More information
  about this change can be found in the comments at the beginning of this function.
  
  4. Unit Tests.
  Unit tests for ast_uri_encode, ast_uri_decode, and get_calleridname() have been
  written.  This involved the addition of the test_utils.c file for testing the
  utils api.
  
  (closes issue #16299)
  Reported by: wdoekes
  Patches:
        astsvn-16299-get_calleridname.diff uploaded by wdoekes (license 717)
        get_calleridname_rewrite.diff uploaded by dvossel (license 671)
  Tested by: wdoekes, dvossel, Nick_Lewis
  
  Review: https://reviewboard.asterisk.org/r/469/
........

Modified:
    branches/1.6.2/   (props changed)

Propchange: branches/1.6.2/
------------------------------------------------------------------------------
Binary property 'trunk-blocked' - no diff available.




More information about the asterisk-commits mailing list