Chilkat 9.0.0 Release Notes


Crypt2

  • Added “UU” and “Base32” to the encoding and decoding capabilities.  Any method ending in “ENC” may now encode to/from UU and Base32.   The encoding is controlled by the EncodingMode property, which allows for these new encodings, as well as all of the existing ones — Hex, Base64, Quoted-Printable, URL, etc.
  • Added EncodeString and DecodeString methods.
  • Added UuMode and UuFilename properties for UU encoding.

HTTP

  • Added SOCKS4/SOCKS5 support.
  • Added support for Digest Authentication.

Email

  • The default boundary string generated for Email / MIME changed to be the same style as used by Mozilla Thunderbird.  The word “Chilkat” is no longer used within the boundary string.  This is part of a number of changes intended to make email / MIME produced by Chilkat as generic as possible.
  • The X-Mailer header field is no longer automatically added to new emails.
  • The auto-generated Message-ID header field is now formatted similar to this:  8ED6C040290CC34B8DC638B43AE6D40F053D7B0A@myhostname
    It is a string of hex digits followed by ‘@’, followed by the local hostname/domain of the computer where the application is running.  Previously, the Message-ID was a UID-like string containing the keyword “Chilkat” ending with “@myhostname”.  The new format is more generic and has the same style as that produced by Mozilla Thunderbird.
  • Email.LoadEml now handles binary MIME with embedded NULLs
  • MIME continuation lines will use SPACE instead of TAB for 1st char in continuation.
  • Tries to avoid folding lines unnecessarily if total header field length is 78 chars or less.

FTP2

  • If the server does not recognize the extended passive command (EPSV), the FTP2 component/lib will automatically re-try with the PASV command.
  • Fixed directory parsing problem for old Mac FTP directory listings.
  • FTP2 SendBufferSize property now defaults to 512K for improved performance.
  • FTP2 automatically skips “lost+found” directory when downloading directory tree.

IMAP

  • StartTls property added. Default is false/0.
  • SslProtocol property added.  Default is “TLS 1.0”

MIME

  • Added a new DKIM component/class for creating and verifying DKIM-Signature and DomainKey-Signature MIME headers.
  • Very rare MIME crash bug fixed.
  • MIME continuation lines will use SPACE instead of TAB for 1st char in continuation.
  • Tries to avoid folding lines unnecessarily if total header field length is 78 chars or less.

MHT

  • HTTP responses that include the Set-Cookie header are now cached (if caching is enabled via the UpdateCache property).   (Note: The HTTP component does not cache responses that include the Set-Cookie header.)

RSA

  • Added new methods: SignHash, SignHashENC, VerifyHash, VerifyHashENC.

Socket

  • HeartbeatMs default property value changed from 1000ms to 0 (no AbortCheck event).

SSH / SFTP

  • (SFTP) ResumeUploadFileByName — if the remote file does not exist, it simply uploads the entire file (instead of failing on attempt to get remote file size).
  • (SFTP) Now handles “filename-charset” extensions sent by SFTP server.
  • (SFTP) Added the FilenameCharset property to allow an application to explicitly indicate the charset of filenames returned by the SFTP server.
  • (SSH) RSA Key fingerprint calculation fixed.
  • Connection problem with Mocana SSH server fixed (SSH-2.0-Mocana SSH)
  • UploadFileByName/DownloadFileByName fixed for SFTP v4 servers.

TAR

  • Added support for POSIX, GNU, and USTAR formats.
  • Added the ability to create TAR archives in any of the above formats.
  • Added the ability to create compressed TAR archives in the above formats using Bzip2, Z, or Gzip — i.e. extensions such as .tar.tgz, .tar.bz2, .tar.Z, .tar.gz, etc..

Zip

  • (self-extractor) Added the ability to delete extracted files after the setup.exe within the self-extractor runs.  To create a self-extracting EXE that automatically deletes files, call zipObject.SetExeConfigParam(“Cleanup”,”1″)
  • Bug fixed with WinZip compatible AES encryption for 0-length files.
  • Fixed: Zip component incorrectly indicated that password (for Zip 2.0 legacy encryption) was invalid for some .zips (this was rare).

C++

  • Added wchar_t * Unicode C++ classes.  For any Chilkat C++ classes that have methods returning a const char * or with const char * arguments, you will now find a class of the same name ending in “W” with wchar_t * type declarations.  For example, the CkEmailW class is the wchar_t * version of the CkEmail class.  It is found in CkEmailW.h  The wide-char classes derive from the non-wide-char class.  Wide-char methods are named the same as non-wide-char methods, but with a “W” appended to the method name.  For example, CkEmail contains the method
    bool setFromMimeText(const char *mimeText)
    ,
    whereas CkEmailW contains
    bool setFromMimeTextW(const wchar_t *mimeText)
  • Removed last dependency on wininet.lib.  (The only code within Chilkat that depends on Microsoft’s wininet.lib is the freeware FTP component/lib.)

Java

  • Added build for Windows 64-bit OS (x64).

Perl

  • Added build for Windows 64-bit OS (x64), for both Perl 5.8 and Perl 5.10.

Python

  • Added build for Windows 64-bit OS (x64) for Python 2.6.

General Improvements

  • Internally, 8bit Western-European chars are interpreted according to Windows-1252 by default instead of iso-8859-1.  These charsets are virtually identical, except that byte values in the range of 0x80-0x9F are defined by Windows-1252 whereas in iso-8859-1 no chars are represented by these values.  This helps in rare cases where chars in this range are “dropped”.  Note: This fixes problems that are very rarely seen.
  • VerboseLogging property added to many classes/components to provide more detailed logging when diagnosing problems.
  • Added the TcpNoDelay property to SSH, SshTunnel, and Socket components to enable/disable Nagle algorithm.  This improves performance for cases where many small messages are sent back and forth.
    Note from user: “I must admit that I was skeptical whether turning Nagle off would make a difference, since theoretically Nagle only deals with how long to wait before sending a packet when the prior one was unanswered, and in the protocol I was testing, the application was enforcing the wait for an application-level response to packet N before sending packet N+1. (And the packets were small enough that there was no likelihood of them being split.) But indeed, the new version is definitely faster than the previous one, and in fact is slightly faster than my previous tunneling implementation, so I would call that a success.”
  • For DNS lookups, internal caching is implemented to avoid creating a background thread for duplicate DNS lookups.  This improvement applies to many components wherever a DNS lookup is required.
  • HeartbeatMs property default changed to 0 for SshTunnel, SocksProxy, HttpProxy, Upload.
  • Fixed SOCKS5 w/ no authentication.  This applies to all components supporting SOCKS5 proxies.
Tags :