New freeware class: Chilkat.Log / CkLog / CkoLog. This provides some logging capabilities similar to what is found in Chilkat’s LastErrorText property.
New bundle-only commercial class: JavaKeyStore. See the (soon-to-appear) online reference and examples. See http://cknotes.com/chilkat-licensing-changes/. Existing customers that have purchased a Bundle license within the last year, or who are currently under support for a Bundle license will receive a free unlock code upon email request.
Internal Change: FTP SSL/TLS data connections will automatically try to re-use the SSL/TLS session of the control channel.
HTML-to-XML: Fixed issue with lowercase attribute names that only occurred in multi-thread situations.
Change: If the TrustedRoots is explicitly empty, then no roots are implicitly trusted.
Fixed: Heap corruption bug which occurred when a socket read is aborted by an event callback (not always, but only in certain circumstances).
Change: The Socket API’s Close method now returns a boolean instead of void, and always returns true.
Important FTP2: The IsConnected and NumFilesAndDirs properties are deprecated. Applications should instead call the new CheckConnection and GetDirCount methods. The reason is that accessing a property should NOT trigger any sort of communications that can fail or take lengthy amounts of time.
New: Added the EmitBom property to Chilkat.Xml (CkXml)
New: Added the ExtractExe method to Chilkat.Zip (CkZip)
Change: The default value of the HTTP RedirectVerb property changed to “GET”.
Change: In the CSV API, the exact line-endings, such as CRLF or bare-LF, are now preserved within each cell. However, the line-endings used at end of each entire row are still controlled by the Crlf property.
FTP2 GetSizeByName and filename case sensitivity issue: The case-sensitivity depends on how the file information is retrieved. If the FTP server supports the SIZE command, then Chilkat will use it to retrieve the file size info (as opposed to downloading the entire directory listing over a separate data connection). In this scenario, the FTP server is likely be case-sensitive w.r.t. the filename passed in the SIZE command. If, however, the FTP server does not support the SIZE command, then Chilkat must obtain the directory information by fetching a directory listing. Chilkat will use a case-insensitive match on the filename. If two files have identical names except for case (which can happen on server-side filesystems that are case-sensitive, such as w/ Linux), then Chilkat will choose the exact match first over the inexact match. A program can avoid the internal usage of the SIZE command by fetching the directory listing first (via the GetDirCount method) and then calling GetSizeByName. In this case, the cached directory contents will be used and the matching will be case-insensitive.
Internal Change: Improved behavior for FTP Active-mode (non-passive) data connections. (1) Prevent hanging for full timeout when the server sends an immediate reply on the control connection (indicating failure).
(2) Potentially can do an internal automatic retry for Active mode data connections for some failure cases.
Python: The ucs4 versions for Chilkat modules for Python 3.2 and above will appear on the public download web page (at chilkatsoft.com) starting with v18.104.22.168
Fixed: The HTTP Digest-MD5 authentication did not work correctly when the algorithm indicated in the server’s response was “MD5-sess”.
Internal Update: Server Name Indication Extension added for all SSL/TLS connections. This is an internal enhancement/update only. There is no external property or method specific to it.
New: Added the SSH ChannelRelease method. Old channels will accumulate in memory, even after being closed because a program may still need to retrieve data from an already-closed channel. The ChannelRelease method allows for a program to specifically release the internal memory for a channel. It is not required to call ChannelRelease. When the SSH object itself is deleted/disposed/garbage collected, etc., then all internal memory (including for all internal channels) is automatically deleted. The only reason to call ChannelRelease is if an exceptionally large number of channels is opened/used/closed within the same Chilkat SSH object instance. The ChannelRelease method provides a means to prevent the accumulation of memory usage for this case.
Change: HTTP Basic authentication is implicitly allowed if the connection is SSL/TLS. If the connection is unencrypted, then an application must explicitly allow Basic Authentication by setting the BasicAuth property = true. (The HTTP Basic Authentication method/scheme sends the username/password in the HTTP request in plain text (unencrypted). This is OK if the HTTP communications itself is over a secure SSL/TLS channel, but is generally NOT OK if the connection is unencrypted.)
Internal Change: The HTTP S3_UploadFile method now streams data directly from the file rather than having to load it all in memory at once.
New: New self-extracting EXE config params are available. These have to do with the information that would be seen in Windows Explorer for the .exe file: CompanyName, FileDescription, InternalName, LegalCopyright, OriginalFilename, and ProductName. Each can be set via the zip.SetExeConfigParam method. For example: zip.SetExeConfigParam(“CompanyName”,”Acme Software, Inc.”);
New: Added the TrustedRoots.AddJavaKeyStore method.
New: Added the Ftp2.AutoSetUseEpsv method.
New: Added support for OAuth2 authentication for SMTP and IMAP. The MailMan.OAuth2AccessToken property is new. An OAuth2 access token may be passed in place of the password for the call to Imap.Login. Also added “XOAUTH2” as a valid choice for the Imap.AuthMethod property.
Fix: The 1st argument to email.AddRelatedData is the pathInHtml argument. The MIME related item’s Content-Location header was being set to only the filename part of the path, and not the entire path.