A user recently needed to query a DNS server for DNAME records, but found that TIdDNSResolver did not parse DNAME answers at all. The QueryResult collection would hold generic TResultRecord objects that did not have their RecType property assigned properly, so it would default to 0, which just happens to be qtA. So, a new […]
For a long time, TIdMessage would generate a “Message-ID” header if its MsgId property was not blank, but only when saving an email to a file, not when streamed or transmitted. Otherwise the MsgId was ignored and “Message-ID” was omitted. However, many modern email servers will reject an outgoing email as spam if it does […]
When TIdHTTP is using BASIC authentication with an HTTP server or HTTP proxy, it now supports the “charset” attribute defined in RFC 7617 for the “WWW-Authenticate” and “Proxy-Authenticate” challenge headers. If the server requests a “charset”, TIdBasicAuthentication will now use that charset when encoding its username/password values.
The TIdIOHandler.ReadStream() method now allows its AStream parameter to be set to nil. When nil, any received data that would have been written to the stream will be discarded instead.
Client-side support for the TLS SNI extension has been added to TIdSSLIOHandlerSocketOpenSSL. When TIdSSLIOHandlerSocketOpenSSL is making an outbound TLS connection, it now calls SSL_set_tlsext_host_name() to enable SNI. This extension is used on servers that host multiple hostnames on the same IP address. Use of this extension allows the server to know which hostname a client […]
Some additional support for Gmail IMAP extensions has been added to TIdIMAP4. Previously, the TIdIMAP4FetchDataItem enum was updated in preparation for allowing Gmail’s X-GM-MSGID, X-GM-THRID, and X-GM-LABELS values to be retreived from emails using FETCH commands, however no methods of TIdIMAP4 had been implemented yet to support those extended commands. The TIdIMAP4.ParseLastCmdResult() method has now […]
Three new flag have been added to the TIdHTTP.HTTPOptions property: hoNoParseXmlCharset: when receiving an XML response with an “application/…” Content-Type, the TIdHTTP.Response.Charset property will be set to the charset declared in the XML’s prolog, unless this flag is enabled, in which case TIdHTTP.Response.Charset will be set to the charset specified in the HTTP response’s Content-Type […]
A user reported a problem where Indy was not able to load OpenSSL on Ubuntu Server 15.04. The reason turned out to be because Ubuntu’s version of OpenSSL 1.x does not export the following three functions, which Indy’s IdSSLOpenSSLHeaders.Load() function deemed to be “critical” and would fail if they are not exported: SSLv2_method SSLv2_server_method SSLv2_client_method […]
The TIdMessage.LoadFrom…() methods only work reliably with EML files/streams that were created using one of the TIdMessage.SaveTo…() methods. The reason for this is because the SaveTo…() methods generate emails that are encoded with dot-transparency logic applied (a period at the front of a line is doubled, and a single period on a line by itself […]
A new IndyRaiseOuterException() function has been added to the IdGlobal unit: procedure IndyRaiseOuterException(AOuterException: Exception); This is a wrapper for the System.SysUtils.Exception.RaiseOuterException() class method, which is available on Windows only in Delphi/C++Builder 2009 and 2010, and for all platforms in Delphi/C++Builder XE and later. To summarize, when a runtime error causes an Exception to being raised, […]