Chilkat v9.4.0 Release Notes

(The version previous to v9.4.0 was v9.3.2.)

  1. (backward compatibility) Removed the deprecated CkCrypt and CkFtp C++ classes.  (CkCrypt2 and CkFtp2 have been the primary C++ classes for encryption and FTP for many years.)
  2. (backward compatibility) Removed the deprecated Chilkat.Crypt and Chilkat.Ftp .NET classes.  (The primary Chilkat .NET classes for encryption and FTP have been Chilkat.Crypt2 and Chilkat.Ftp2 for many years.)
  3. (backward compatibility) Removed the “Blacklist” class wherever it may have been present.  This class has been deprecated for many years, and the online documentation for it was removed many years ago.
  4. (backward compatibility, C++ API) All C++ method arguments that were pointers to objects have now become references to objects.  For example, if a method argument was “CkCert *”, it is now “CkCert &”.  This cause a compilation error, but the coding fix is very simple (just dereference the pointer that is passed).   There are two exceptions.  One is for CkXml::Search* methods where the 1st argument may be NULL, and therefore the pointer argument (CkXml *) was maintained.    The second is for event callback objects (see below).
  5. (backward compatibility, C++ Zip) The standard way of setting an progress monitoring callback object is via the put_EventCallbackObject method.   This applies to all Chilkat C++ classes.  The event callback object can be set by passing a pointer to the event callback object, or passing a NULL to suppress event callbacks.  Previous to v9.4.0, the CkZip class had two versions of many methods: one where the last argument was a “CkZipProgress *”, and the other where it did not exist.  The methods having the last argument of “CkZipProgress *” have been dropped.  The event callback must be strictly set via the put_EventCallbackObject method.
  6. (backward compatibility, C++ Zip) The CkZipEntry::InflateToString and CkZipEntry::InflateToString2 methods are replaced with a single UnzipToString method: bool CkZipEntry::UnzipToString(int lineEndingBehavior, const char *srcCharset, CkString &outStr);The line ending behavior can have one of three values: 0 = leave line endings unchanged, 1 = convert all line endings to bare LF’s, 2 = convert all line endings to CRLF’s.    The source charset is required to tell the method how to interpret the bytes of the text data.  For example, it could be “ansi” or “utf-8”, or “windows-1252”, etc.
  7. (FTP2) CreatePlan/PutPlan forward slash/backslash problems fixed.  On Windows systems, items in the “already done” log were unnecessarily re-uploaded because of these differences.
  8. (XMP) Fixed a problem in ChilkatXmp.NewXmp in the ActiveX build.  There was no problem in NewXmp in other builds.
  9. (Email/MailMan) Fixed problem w/ using ReplacePatterns where replacements were not made for recipient email addresses.
  10. (backward-compatibility, HTTP) Changed the default value of the HttpRequest.Charset property from utf-8 to ANSI.
  11. (HTTP) SynchronousRequest returned NULL if the HTTP response code was 404.  Instead will return the response object so that the full response information is available to the application.
  12. (IMAP) Added CloseMailbox and CheckForNewEmail methods.  These will be in the online reference documentation soon.
  13. (ALL) If “?” char is in the file path, then it’s automatically replaced with an underscore when
    saving / opening files on the Windows OS.  (The ‘?’ character is not allowed to be in a filename or path on the Windows OS)
  14. (IMAP) Added the ListSubscribed method.  It is the same as ListMailboxes, but returns the subset of subscribed mailboxes.
  15. (ActiveX) Chilkat ActiveX’s are fully disabled when used within the context of Internet Explorer (i.e. as a client-side ActiveX running within the browser).  They are now entirely incapable of doing anything when existing within the context of IE (for example, when embedded within VBScript or Javascript inside HTML and running within the browser).
  16. (FTP2) A date/time parsing problem w/ Microsoft FTP server directory listings was fixed.
  17. (Objective-C) Any occurance of “CkoString” in method arguments was replaced with “NSString”.  (The use of “CkoString” was a code generation error.)  There is no actual “CkoString” object in the Chilkat Objective-C API.
  18. (HTML-to-Text) The DecodeHtmlEntities property defaulted to false when it should’ve been true (as documented).
  19. (Crypt, HTTP, etc.) Default URL encoding is now according to RFC 3986.
  20. (Unicode C++) The Ck*W.h header files were missing “#pragma pack (pop)”  at the end of each file.
  21. (Zip) The OpenZip will scan forward for the actual start of a .zip.  However, the zip must begin on a 4-byte boundary.  A typical .zip archive obviously begins at the 1st byte (location 0).  However, this makes it possible for OpenZip to be used with self-extracting EXE’s where the zip is stored unmodified within the .exe.
  22. (EMail) Email.UnpackHtml will automatically add a META tag to indicate the charset if it does not yet exist.
  23. (VC++ Libraries) Add SP1 builds for C++ libs for VS2005, VS2008, and VS2010.
  24. (HTTP) Added the HttpResponse.FullMime property to get the full MIME of the response.
  25. (HTTP) Added the HttpResponse.UrlEncParamValue method to make it easy to parse a param’s value out of a URL-encoded param string, such as “oauth_token=QJVM8QxMVuw7YXz8xfkPXlsuk7vfqlWBnm0UgRpsMc&oauth_token_secret=wEo5Y3xJb82fKP1Q3FnItchnFj6T0rOr2zmyUnHVg&oauth_callback_confirmed=true”
  26. (IMAP) Added the SearchCharset property.  Defaults to “UTF-8”.  May be set to “AUTO” to get old behavior that examines criteria chars and automatically selects an appropriate multibyte charset.  (no charset is specified in IMAP searches if the criteria string is entirely 7bit)
  27. (Socket) IPv6 is now supported for server sockets (listening / accepting connections) via the ListenIpv6 Socket property.
  28. (HTTP) Fixed a problem with HttpRequest.AddFileForUpload2 where content-type was ignored.
  29. (HTTP) For some HTTP methods, the automatically added “Host” header did not include the port number for non-standard ports (i.e. ports that are not 80 or 443).  This was fixed.
  30. (SFTP) The CloseHandle method incorrectly returned true if the status response was received but non-OK.
  31. (Socket-Related) Added SoSndBuf and SoRcvBuf properties to Ssh, SFtp, SshTunnel, Imap, MailMan, Http.  See https://cknotes.com/?p=446
  32. (Socket) The ConvertToSsl method now allows for both server-side and client-side to convert to SSL/TLS on an already established connection.  The server side would need to call InitSslServer prior to calling ConvertToSsl.  Both sides can revert back to non-SSL/TLS by calling ConvertFromSsl.
  33. (backward compatibility, C++) The CkCSP C++ class name changed to CkCsp.  The difference is in the case-sensitivity.  (CkCsp is a seldom-used Windows-only class.)
  34. (C++) #pragma pack (pop)   was missing in CkMultiByteBase.h
  35. (SSH/SFTP) Added the HostKeyAlg string property to SSH/SFTP.  The default is “DSS”.  May be changed to “RSA” if needed.  Chilkat recommends not changing this unless a problem warrants the change.
  36. (All) Fixed problems w/ opening large files (>4GB) on some non-Windows systems (such as 32-bit Linux)
  37. (HTTP) Percentage completion monitoring for HTTPS downloads fixed.
  38. (backward compatibility) A few C++ methods were such that the very last argument was an “output” argument that was a reference to another Chilkat object, such as a CkXml or CkStringArray. For consistency and for other important reasons, these methods were changed to conform with the other language implementations (.NET, ActiveX) such that the function instead returns a new instance of the object and the last argument is removed. For example, bool CkXmp::GetArray(CkXml &xml, const char *propName, CkStringArray &outArray) changes to CkStringArray *GetArray(CkXml &xml, const char *propName);
Tags :