Dear friends of NaviServer,

on sourceforge is a release candidate for NaviServer 4.99.12.
If everything goes well, the release should follow end of this week.
Below are the changes since 4.99.11:

best regards

-gustaf

=======================================
NaviServer 4.99.12, released 2016-08-XX
=======================================

  195 files changed, 19904 insertions(+), 13118 deletions(-)

New Features:
   * OpenSSL support integrated with NaviServer core
     - ns_http can handle now http and https urls
     - added backward_compatibility stub for ns_ssl
     - added configure switch --with-openssl?=path?

   * Improved crypto support (through OpenSSL)
     New commands:
       - ns_hmac
       - ns_md (generalization of ns_md4 and ns_sha1,
         but supports by default 14 different digest algorithms)
       - ns_hotp (one-time passwords as defined in RFC 4226)
       - ns_totp (time-based one-time passwords as defined in RFC 6238)

     StartTLS support (contributed by Constantin Șerban-Rădoi)
      - "ns_sendmail" is now able to connect to servers via StartTLS
         (requires the Tcl "tls" package, since ns_sendmail is
         implemented in Tcl)
       - Client and server support for StartTLS in the nssmtpd module.

   * New Command "ns_rlimit" to get/set various resource limits from
     the operating system. A typical use case for this command is to
     query or set e.g. the core size via the NaviServer startup file or
     to change it at runtime in a syntax independent from the naming
     and conventions in the various startup scripts (e.g. upstart,
     systemd, ...). This is e.g. useful when a core dump should be
     created from the running state (e.g. in combination with the
     "ns_crash" command).
   
   * Improvements for "ns_connchan":
      - Supports now client functionality via
           ns_connchan open ...
        (works for http:// and https:// URLs)
      - New subcommand "ns_connchan exists /channel/"
      - Added runtime switchable debug severity "Debug(connchan)"

Performance Improvements:

Bug Fixes:
   * Fix ns_set management of headers (which was broken since the
     introduction of the leftover management when requests are
     pipelined in 4.99.11). The problem was that the "static" ns_set for 
headers is
     was freed to early in the pipelined case.

   * Fix for a serious bug in cookie management which could lead to false
     positives in ns_getcookie:

       - Previous versions of NaviServer searched the "Cookie" and
        "Set-Cookie" header files for a string "NAME=" and returned
        the value provided after this string, when found.

       - However, the "Cookie" and "Set-Cookie" header fields have
        contents in a different a different syntax (see
        https://tools.ietf.org/html/rfc6265 section 4.1.1 vs. 4.2.1),
        such as e.g. Cookie: cookie1="value1"; cookie2="value2";
        style=null; ... Set-Cookie: cookie1="new- value"; Expires=Fri,
        01-Jan-2035 01:00:00 GMT; Path=/; HttpOnly

       - Therefore, searching in the "Cookie" header field e.g. for a
         cookie named "tyle" lead to a success as well as a search in
         "Set-Cookies" for e.g. a cookie named "Expires".

   * Improved handling of erroneous requests (some where treated as
     HTTP/0.9 requests before, leading to strange behavior/error
     messages).

   * Fix potential memory leak for "ns_mutex eval"

   * Long standing bug when exiting "make test" should be fixed by now.
     The problem was that the the Tcl exit handler was kicking in when
     the end-of file was reached, interfering with the NaviServer
     shutdown steps.

   * Improved portability for *BSD systems and recent Windows
     build environments (e.g. Visual Studio 2015)
        

Documentation improvements:
   * New man pages for ns_hmac, hs_md, ns_hotp, ns_totp
   * Various man pages updated/improved
   * Improved sample config files
   

C API Changes:

   *  Introduction of Ns_ReturnCode: use an enumeration type instead of
      preprocessor based constants + int. The change revealed several
      places, where NS_OK/NS_ERROR and TCL_OK/TCL_ERROR were intermixed.

   * New functions

     - Ns_GetBinaryString() to obtain from a Tcl_Obj the binary
       representation if available, otherwise the string representation.
       
     - Ns_SetRecreate() which is a combination of a create and a move
       operation, but avoiding malloc operations on all keys/values.

     - Ns_DStringAppendTime() to ease uniform printing of
       Ns_Time structs into DStrings

     - Ns_SubcmdObjv(): New infrastructure support for commands with
       subcommands: instead of long switch statements with nested
       structures with often many returns, one can now register
       Tcl_ObjCmdProcs for subcommands in an Ns_SubCmdSpec structure.
       
     - New argv checkers Ns_ObjvUShort() and ObjvQueue()
     

Configuration Changes:
     - added configure switch --with-openssl?=path?


Code Changes:
   * Improved naming of Mutexes: much more mutexes are named now.
   
   * Code cleanup:
     - Modernized argv parsing by using Ns_ParseObjv() for
       many functions.
     - Introduced enumeration types Ns_ReturnCode
       and NsWriterStreamState
     - New macro INTCHAR to pass "char" values to library
     - Use "unsigned short" consistently for port numbers
       functions requiring "int" to avoid code smells
     - Use boolean types on more occasions
     - Use more often typedef-ed function definitions
     - Reduced number of multiple returns per function
     - Removed all calls to deprecated Tcl API Function
       Tcl_AppendElement()
     - Reduced calls to Tcl_AppendResult() and use explicit
       Tcl_Objs instead for results
     - Generation of error messages made more consistent
     - Removed useless calls to Ns_DStringFree() after Tcl_DStringResult()
     - Replaced deprecated atoll() by strtoll()
     - Reduced variable scopes
     - Added more const declarations
     - Don't use boolean values as arguments of comparison operators
     - Many large functions split into smaller units

   * Made testing more robust when IPv6 is available, but
     turned off in the kernel
     
   * NaviServer driver:
     - Added (clientInitProc, protocol and default port) to info record
     - Bumped driver version to 4
     
   * Ignore less soft error conditions, but report in the error.log


------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity 
planning reports. http://sdm.link/zohodev2dev
_______________________________________________
naviserver-devel mailing list
naviserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/naviserver-devel

Reply via email to