<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Thanks to Nathan for his reviews and suggestions.&nbsp; Here's the
    revised patch...<br>
    <hr size="2" width="100%">Reduce the number of DN normalization<br>
    <br>
    . Adding SLAPI_TARGET_SDN as well as its macros,
    SLAPI_SEARCH_TARGET_<br>
    &nbsp; SDN SLAPI_ADD_TARGET_SDN, SLAPI_MODIFY_TARGET_SDN, etc.<br>
    . Adding SLAPI_MODRDN_NEWSUPERIOR_SDN.<br>
    . SLAPI_TARGET_DN and SLAPI_MODRDN_NEWSUPERIOR are kept for the
    back-<br>
    &nbsp; ward compatibility.&nbsp; But they are marked as deprecated.&nbsp; They are<br>
    &nbsp; pointing dn in SLAPI_TARGET_SDN and SLAPI_MODRDN_NEWSUPERIOR_SDN,<br>
    &nbsp; respectively.<br>
    . slapi_pblock_set(.., SLAPI_TARGET_DN/SLAPI_MODRDN_NEWSUPERIOR, dn)<br>
    &nbsp; takes dn string and reset Slapi_DN to
    SLAPI_TARGET_SDN/SLAPI_MODRDN_<br>
    &nbsp; NEWSUPERIOR_SDN.&nbsp; <br>
    . slapi_pblock_get(.., SLAPI_TARGET_DN/SLAPI_MODRDN_NEWSUPERIOR,
    &amp;dn)<br>
    &nbsp; retrieves dn out of SLAPI_TARGET_SDN/SLAPI_MODRDN_NEWSUPERIOR_SDN.<br>
    . Replacing slapi_dn_normalization_ext call with generating Slapi_DN<br>
    &nbsp; APIs (e.g., slapi_sdn_new_dn_...) as much as possible and stash it<br>
    &nbsp; in pblock using SLAPI_TARGET_SDN.<br>
    . When a normalized DN string is needed, get it using
    slapi_sdn_get_[n]dn<br>
    &nbsp; from the stashed Slapi_DN.<br>
    . Introduced a new field to Slapi_DN. <br>
    &nbsp; "udn" for the original DN; "dn" is a normalized DN; "ndn" is a
    case-<br>
    &nbsp; ignored normalized DN.<br>
    &nbsp; Taking advantage of the knowledge of the stage of the DN, call the<br>
    &nbsp; most efficient DN creating API (e.g., slapi_sdn_new_dn_... vs.<br>
    &nbsp; slapi_sdn_new_normdn_... vs. slapi_sdn_new_ndn_...)<br>
    <br>
    Others&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
    . Replacing inefficient array assignment with memset (acl.c) and
    memcpy (idl_common.c).<br>
    . Fixing invalid memory access in LASDnsBuild
    (lib/libaccess/lasdns.cpp).<br>
    . Fixing compiler warnings. <br>
    <br>
  </body>
</html>