ColdFusion 4.0.1 Release Notes
Updated April 7, 1999
Upgrading to ColdFusion 4.0.1
ColdFusion 4.0.1 is primarily a maintenance release that provides a number of bug fixes. We have also introduced some new functionality in ColdFusion 4.0.1. You should review the ColdFusion 4.0.1 new features documentation to see what new features have been added to 4.0.1. The section "Fixed in version 4.0.1" will give you a list of what bugs were fixed in ColdFusion 4.0.1.
A Note on the euro
ColdFusion 4.0.1 supports the euro currency on both the NT and the Solaris platforms. Two special functions, LSEuroCurrencyFormat() and LSParseEuroCurrency() have been added to CFML for this purpose. The euro currency symbol in a .cfm file will be parsed correctly by the ColdFusion Application Server. For the euro currency symbol to be properly displayed, the system needs to be euro-enabled. Visit Microsoft's Web site for information on configuring your system for euro currency symbol input and display.
See the ColdFusion Features and Enhancements document for information about the many new features enabled for this release.
See ColdFusion 4.0.1 Documentation Updates for a listing of corrections and additions to the product document set.
Known Issues in this Release
- If you access a Cluster Member via a browser using the URL "localhost" or equivalent IP address "127.0.0.1", the cluster becomes inoperable and stays inoperable.
- If you are using DateCompare to compare two dates and both dates are exactly the same except that the first date passed is earlier by x seconds, you would expect a return value of -1 if you passed "s" as the 3rd parameter. In fact, it returns 1. (9339).
- Developers should avoid using CFSCRIPT keywords as variables in their code. The Evaluate function will handle some of them currently, but this behavior may be changed in a future release.
- If you install this version on NT 3.51 you will encounter the following error:
The application or DLL
\DosDevices\C:\Winnt351\System32\cfftp30.ocx
is not a valid windowsNT image.
Please check this against your installation diskette.
The product will install successfully. You can ignore this error for now. It will be fixed in the next release.
- Passing numeric data to the ColdFusion IsDate and ParseDateTime functions can yield unexpected results. For example, IsDate may return TRUE for numeric data that are not dates. This may be attributable to the underlying Windows API functions on which these ColdFusion functions are based. We are investigating this issue. This behavior occurs when passing data ColdFusion interprets as numeric. For example, single decimal point numeric data such as "0.1," "21.6667", multiple decimal point numeric data, such as "1.2.3", and comma separated data, such as "0,1" create unexpected results.
To work around this behavior, it is always advisable to only pass string data in a supported format to the IsDate and ParseDateTime functions, or, generate date-time data using the Now or CreateDate functions.
- Only one instance of ColdFusion can be run on any given system at a time.
- An error that occurs in an MS SQLServer stored procedure called through SQLOLEDB will cause ColdFusion to hang. This only happens when using SQLOLEDB and when the error is in the stored procedure itself or if the stored procedure doesn't exist. (7329)
- During the install, IIS 4 (only) has multiple .cfm mappings created in the application mapping section. Usually, just one entry should point to the ISCF.dll. The install has been observed by some to create at least 11 and, in some instances, over 100. This seems to cause performance degradation. The temporary workaround is to manually remove these. (4788)
- The CFFTP tag incorporates Microsoft WinInet functionality. Recently, Microsoft published several knowledge base articles detailing limitations in WinInet that could result in problems in specific areas. These areas are as follows:
- Problems connecting to some VAX/VMS FTP servers.
- Problems with CERN-based proxies. Microsoft is not specific as to whether OS-level pre-configured gateway access will work. This means that gateways or proxies cannot be chosen dynamically in CFFTP.
Because these issues came to light after our implementation of WinInet in CFFTP, we have not had an opportunity to find ways around these potential problems. For more detailed information, consult the following Microsoft knowledge base articles:
- HOWTO: FTP with CERN-Based proxy using WinInet
Article ID: Q166961 10/3/97
This refers to potential problems using CERN-BASED proxy server to communicate with FTP servers.
- INFO: Limitations of the WinInet FTP Functions
Article ID: Q172712 9/29/97
This refers to functionality of FTP that may not be available with the use of WinInet.
- PRB: FTP WinInet APIs Report Error 12003
Article ID: Q168492 9/29/97
This refers to potential problems with VAX/VMS FTP servers.
- The CFFTP tag is only supported in Windows NT 4.0 and Windows 95 with COM/DCOM support. CFFTP will not work properly in Windows NT 3.51 environments. A patch for Windows95 can be found at http://www.microsoft.com/msdn.
(DCOM for Windows Version 1.1).
- A previous bug in the CFREGISTRY tag would default the TYPE attribute to "ANY." The result would be that an ACTION of "GET" or "GETALL" without the TYPE attribute filled in would return registry entries of any type. The TYPE attribute now defaults correctly to "STRING." If you do not explicitly set the TYPE attribute, only registry entries of type string will be returned. This would only affect those who had previous versions of the ColdFusion Server 4.0.1 beta and used the CFREGISTRY tag without the TYPE attribute explicitly set.
- The data source name "Registry" should not be used when creating an external data source for client variables. A data store named "Registry" already exists for the option of storing client variables in the registry.
- In the ColdFusion Administrator a limitation in the Verity implementation may cause problems if you repair a Verity collection and then attempt another action such as a purge before the repair has completed processing. In the event that a problem does occur, you should delete the affected collection, re-create it, and then re-populate the collection with the original content. The safest approach is this: During a repair, NO OTHER ACTION should be taken.
- Verity stemming does not work in all situations. This issue will be addressed as soon as a fix is available from Verity. (944)
- When creating a Verity collection, make sure the collection directory name contains no spaces.
- Using brackets ([ ]) in the CRITERIA attribute of CFSEARCH causes an error in CFSEARCH. (7183)
- If you try to DELETE, REPAIR, or OPTIMIZE a collection that does not exist with CFCOLLECTION you get the attached error message. This error message needs to be made more user-friendly. (4594)
Error Diagnostic Information
CRegistryException: unknown cause
CFMLInterpreterImp::process
- Attempting to re-map to an existing collection after un-install and re-install of ColdFusion Server produces an error when you try to index the collection. (6778)
- CFPOP throws an error when reading email messages that have a certain date/time convention. This appears to be related to messages from Netscape's InboxDirect or some other email that uses MDT instead of GMT.
The error message is (1858):
Error Occurred While Processing Request
Error Diagnostic Information
An error has occurred while processing the expression:
DateFormat(ParseDateTime(Mail.Date,"POP"),"ddd, d mmm yyyy")
- CFPOP crashes when retrieving messages with action="GetAll" that contain Content-Type: multipart/mixed or multipart/related. (6235)
- CFPOP doesn't recognize 8-bit attachment headers encoded by MIME. (6880)
- If an attachment's name is base64 encoded, CFPOP can not retrieve the message, it times out. CPU usage pegs to 100%, and the memory use climbs. After it times out not all memory is released. (7233)
- The CFMAIL tag currently supports a maximum of 40 recipients per mail message. An error message is generated if this number is exceeded. This limitation will be addressed in a future release. (4435)
- On Crystal Report generation with pie charts, strange behavior has been noted under Windows 95. Either the system will freeze or the following error occurs: (377)
Error Occurred While Processing Request
Error Diagnostic Information
Error occurred while processing CFREPORT
An unexpected error occurred while using the Crystal Engine.
Error number 534 occurred (Error detected by database DLL.).
Crystal Library = C:\WINDOWS\SYSTEM\CRPE32.DLL (2/19/1997 15:12)
DLL Version = 5.0, Engine Version = 5.0</pre>
- The NumberFormat function returns **** when used as follows (468):
#NumberFormat(1000, "0000")#
Apparently, there is no way to always display four digits with leading zeros. The suggested workaround: Add a plus in the mask to force sign printing and then select everything after the sign:
Right(NumberFormat(1000, "___+0"), 4)
- Due to a limitation in the Win32 API date formatter, the DateFormat function will not work on dates prior to 1/1/1601. If you try passing a date earlier than this to the ColdFusion DateFormat function you will get the following error:
Error Occurred While Processing Request
Error Diagnostic Information
An error has occurred while processing the expression:
DateFormat(date,"mmm dd yyyy")
The reason for the error is unknown.
We will address the Win32 API limitation in a subsequent release of ColdFusion. (1056)
- The _eurodate and the _date form field suffixes for server side validation do not work properly. The problem allows dates like 01/25/1997 in the _eurodate field and dates like 25/01/1997 in the _date field. This is due to the behavior of the Microsoft class that we currently use for date/time parsing.(1173)
- The MOD operator returns an invalid negative number when using large numbers (10 digits). For example, the statement, "#Evaluate(3013228971 MOD 256)#", should return 171 but instead returns -85. This works on some, but not all 10 digit numbers. (2588)
- When using an updateable CFGRID, editing grid values and clicking the Submit button can result in a Microsoft JScript error. This appears to occur only on systems where a preview version of Internet Explorer 4.0.1 was removed in favor of IE 3.02. Traces of the IE 4.0.1 configuration appear to be responsible for this problem.
- If you include a CFHEADER and a CFLOCATION in the same template and run it, you will get "Document contains no data" even though the URL in the CFLOCATION, when run by itself, results in page output. (2356)
- COM/DCOM support for Intel platforms is available only under NT 4.0 or greater, and DCOM enabled Windows 95. This feature is not available under NT 3.51.
An error message with the following text will be displayed when running
under platforms that do not support it:
This OS does not support COM/DCOM. Please verify that you are running
NT4.0.1 or DCOM enabled Windows 95. CoInitialize has not been called
A patch for Windows 95 can be found at http://www.microsoft.com/msdn.
(DCOM for Windows Version 1.1).
There could still be some problems reported when using objects that do
not have a threading model, and potentially have not been made
thread-safe. Some of these objects have been generated using older
versions of Delphi (3.0), and VB.
To work around these issues, change the threading model to "Free" by
using "OleView", or have the vendor of the object/development tool
provide you with an updated conforming object.
- If the www server is a secured site (using SSL) and doesn't have an alternate unsecured port (80) the execution of a CFHTTP tag fails using https protocol. This is a known problem with the Microsoft wininet.dll. Knowledge Base Article (1096) outlines a workaround for this. (3005)
- The CFCASE tag is now case-insensitive. This means that VALUE="STEVE" and VALUE="steve" both specify the same switch target and will issue the referenced diagnostic message for duplicate switch targets. This may be an issue for application pages built with beta versions of ColdFusion, when CFSWITCH was case-sensitive. For example, the following code compiled and executed different logic paths for "steve", "STEVE", and "StEvE" in 4.0 beta, but will now issue a diagnostic message about duplicate cases:
<CFSWITCH EXPRESSION=#sval#>
<CFCASE VALUE="STEVE">Found STEVE</CFCASE>
<CFCASE VALUE="steve">Found steve</CFCASE>
<CFDEFAULTCASE>Found something:
<CFOUTPUT>#sval#</cfoutput></CFDEFAULTCASE>
</CFSWITCH>
All three values, "steve", "STEVE", and "StEvE" now match <CFCASE VALUE="STEVE">.
- Currently, <CFSETTING SHOWDEBUGOUTPUT="Yes"> simply restores the original level of debugging (which is usually none). We hope to fix this in a future release, but there is a workaround for ColdFusion 4.0.1. Use the ColdFusion Administrator to turn on debugging output, then include <CFSETTING SHOWDEBUGOUTPUT="No"> in an Application.cfm file. This will build the necessary high-level data structures to collect debugging output, but it will suppress the display unless a subsequent <CFSETTING SHOWDEBUGOUTPUT="Yes"> tag is processed.
- In the CFX API, used for building C++ custom tags, two functions have been deprecated. Introduced in ColdFusion 2.0, but never implemented, SetQueryString and SetTotalTime have both now been deprecated.
- Using an ODBC driver, CFUPDATE does not update datetime fields correctly for SQL Server 6.5 or Sybase System 11. It inputs a time portion of 00:00:00 no matter what time you provide. This does not happen with CFQUERY or CFGRIDUPDATE. (7162)
- Submitting a form from a directory protected with NT challenge/response has been observed to produce the error, "HTTP/1.1 500 Server Error". This did not happen if the directory was using basic authentication. This should no longer occur. This can not be reproduced with NT 4.0/SP4 however. (6714)
- The value of the TEMPLATE attribute of CFINCLUDE doesn't work unless surrounded by quotes. The following form does not work:
<CFINCLUDE TEMPLATE=cf40/test.cfm>
This form worked in earlier releases but now causes an error. (6790)
- The SiteMinder service used in CFAS 4.0.1 advanced security features does not run on WinNT WorkStation, currently this will run only on WinNT Server. You will see the feature in the list during installation, this restriction may be removed in future releases.
- If you experience difficulty opening an Adobe Acrobat file from the ColdFusion Documentation page, just open the file directly in Acrobat Reader from the cfdocs/AcrobatDocs directory. This appears to be a browser-related issue.
The Summary of Outstanding Product Issues page on the Allaire Web site contains information on technical support issues for all Allaire products. It currently lists issues for version 3.x and earlier but will reference 4.0.1 issues after its release. You may want to bookmark the page for future use.
Fixed in version 4.0.1
- A problem has been resolved with ColdFusion's ability to handle the returned variable type of VARIANT containing a SAFEARRAY of VARIANTS for COM method calls. For example, in the following code, the getColumnNames method returns a VARIANT variable containing a SAFEARRAY of VARIANTS. ColdFusion was generating an error attempting to convert between object and ColdFusion data types.
<!-- Instantiate the WDDX RecordSet COM Object -->
<cfobject type="COM"
name="WDDXRecordSet"
class="WDDX.RecordSet.1"
action="CREATE">
<cfset MyArray = ArrayNew(1)>
<cfset MyArray = WDDXRecordSet.getColumnNames()>
This has been fixed to handle the actual types contained within the VARIANT.
- Problems with the BASETAG attribute were corrected. (9008)
- Advanced Security should now install on NT 4.0 Workstation. (8906)
- CFCATCH.TYPE output now displays in all upper case. (7914)
- ColdFusion now installs correctly with Netscape 3.6 on NT. (8173)
- The CF 4.0 behavior when using CFABORT with the SHOWERROR attribute has been reinstated. (9045)
- When trying to add a user to a security policy if no User Directories are available for the security context, an appropriate message is displayed. (9060)
- If you created a task with the CFSCHEDULE tag and did not specify an ENDDATE parameter (which is supposed to be optional), an error would occur when you brough this task up in the administrator. This no longer occurs. (8634)
- ColdFusion program items and groups are now removed with the uninstall. (Note, this will only work with clean installs.)(4147)
- The ListChangeDelims function added an extra delimiter to the end of the list. This no longer occurs. (7687)
- Due to internal considerations, CFCATCH.TYPE now returns its value in uppercase (as opposed to mixed-case). This will not affect existing applications given that testing for the value of CFCATCH.TYPE is case-insensitive.
- Exception handling was causing some memory leaks via the CFCATCH variables. This no longer occurs. (6715)
- Erroneously using an "=" rather than an "EQ" in a boolean statement in a CFIF tag was not being caught in 4.0 as it was in 3.1.1. This now works as it did in 3.1.1. (7472)
- Turning on TraceODBC in the allaire/server settings in the registry now writes the odbc trace file rather than just creating it and not writing to it. (7633)
- The DEFAULT attribute on CFPARAM only allowed for simple values. You can now include complex values like arrays. (7639)
- A memory leak occurred when you used the CFGRIDROW tag. This has been fixed. ((7658)
- The ONVALIDATE attribute of CFGRID did not work properly in 4.0. This has been fixed. (7659)
- When using WDDX to convert CFML to JavaScript there was a problem working when appending an index to an array which was part of a structure. This should now work properly. (7797)
- If you set client variable to a value that had an "=" in it and you tried to reload the page after the client variable had been defined, you would get an error message that the client variable did not exist. This no longer occurs. (7826)
- CFCONTENT behavior changed in 4.0. In earlier versions, all output prior to a CFCONTENT tag was discarded. Version 4.0 retained that output. (This only applied when CFCONTENT did not use the FILE attribute.) CFCONTENT is now returned to pre-4.0 behavior. In addition, a RESET attribute has been added to allow overriding (RESET=NO) for 4.0.x behavior. (7937)
- In ColdFusion 4.0 CFTRANSACTION defaulted to ISOLATION="READ_COMMITTED". In pre-4.0 versions no isolation level was explicitly set if this attribute was not provided. Also in 4.0, when the transaction was completed the default isolation was not being reset. This has been changed to reset the default isolation level when the transaction is completed. This is the 3.1 behavior.(7966)
- Selection formulas were not being evaluated inside the CFREPORT tag. IT was necessary to enclose them inside CFOUTPUT tags. The new ColdFusion 4.0 parser did not know that CFREPORT should allow dynamic evaluation between the tags, so it worked with hard-coded selection formulas, but not dynamic ones. It should now work with dynamic formulas, as well. (8015)
- In 4.0 the following boolean expressions returned YES and NO, respectively. ColdFusion is now more lenient about parsing directory names with the DirectoryExists function whether or not there is a trailing "\." (5591)
<cfoutput> #DirectoryExists("c:\cfusion")#</cfoutput>
<cfoutput> #DirectoryExists("c:\cfusion\")#</cfoutput>
- Load Balancing and Advanced Security are disabled on the installation on NT Workstation since they are not intended to run in this environment. (7277)
- You could not specify the STYLE, ID or CLASS attributes for the CFFORM, CFINPUT or CFSELECT tags. We have added pass through support for these attributes. The fix affects the CFFORM, CFINPUT ( all action types ) and CFSELECT tags.(7859)
- The installer of ColdFusion Server no longer overrides what account the service is using. (687)
- CFOUTPUT within a CFMAIL tag no longer causes an exception. (8317)
- ColdFusion now has a ListQualify function. Check the New Features doc for specifics. (1246)
- The DateCompare function now has an additional argument which allows you the portion of the date you wish to compare. (1301)
- A significant change has been made to the scheduler. It used to be single threaded, so if a particular scheduled request hung, nothing else would ever run. Now, each task is invoked separately. This would manifest in the past when if the schedule log indicated success of a task (i.e. the task was handed off to the scheduler), but the template never actually ran. (4974)
- Submitting fields in a form with enctype="multipart/form-data" no longer results in the field name parameters actually containing the data (values) of the fields submitted, and not the name. (6053)
- In certain cases Crystal Report graphs produced the following error: "Initialization of the Dynamic link library C:\WINNT\system32\user32.dll failed. The process is terminating abnormally." This should no longer occur in 4.0.1. (6798)
- CFSWITCH value="" is now recognized as a zero-length string. (7929)
- Certain user syntax errors with "CFLOOP CONDITION = ...." or "#( ..complex expression.. )#" would result in an unfriendly exception error. This has been fixed to produce an informative error message. (7955)
- CFREPORT'S FORMULA attribute now handles formulas that include semicolons by escaping them. You can now escape semicolons by "doubling" them. Here's an example of the syntax (8093):
<CFREPORT ... Formula="Name1=Val_1a;;Val_1b;Name2=Val2;">
- Short-circuit boolean evaluation has been added. (6718)
- CFCACHE now supports a PORT attribute so that ports other than 80 can be used. (7421)
- Mail log files now show dates with 4 digits as the year to avoid any Y2K confusion. In general our log files were showing 3 digits in the year after 1999 (e.g. 1/1/2000 would appear as 1/1/100). This has also been corrected. (8186, 8187)
- Scheduler screens in the administrator now support 4 digits in the year to avoid any Y2K confusion. (8188)
- When you update a scheduled item, it replaced the HTTP URL to
"/CFIDE/administrator/scheduler/action.cfm" every time. It also replaced the current URL(s) with this on install. This no longer occurs. (8059)
- If you turned off access to the CFREGISTRY tag in the administrator you would get an error if you tried using the scheduler page. (8080)
- The attribute passed in as part of the attributecollection structure no longer overrides the attribute passed in 'manually' if the attribute is of lower alphabetical order. (8099)
- When using LDAP as your user directory, you can now remove users from Policies. Users that have been added manually to a policy can now be removed through the ADD/Remotheage. You can also now select LDAP groups which contain "," in the distinguished name from the select box to add them with the "<==" button. (8150)
- Setting the ACCEPT attribute of CFFILE to "image/gif" and/or "image/jpeg" MIME formats, would still allow for the uploading of all file types. This no longer occurs. (8191)
- Setting a value of a query created using the QueryNew function using the syntax "<CFSET myQuery.phone[2]=1>" yielded an error in Beta 1 of 4.0.1. This has been fixed. (8260)
- Because of delayed evaluation of the text parameter from CFCOL, the CFTABLE tag can only contain CFCOL tags as children. In a case were CFLOOP was used immediately under a CFTABLE (and CFCOL was used within the loop), an access violation resulted. This will now display an appropriate error message. (8265)
- CFHTTP's FileContent variable used to give erroneous results when using CFHTTP within a CFLOOP. The workaround was to wrap this code in a custom tag. But this is no longer the case. FileContent now returns the correct value every time. (7368)
- When uploading binary file (using the CFFILE tag) from a MAC (tested with IE4.0a for PPC) to NT the file became corrupt. As it turned out, an extra two bytes (0x0d and 0x0a) were being appended to the file each time it was uploaded. These bytes are included by the Mac version of IE4 at the end of every file package. (Netscape's Mac browsers don't have this problem.) In order to minimize the chance that we'll run into a similar problem we check to see if the browser is IE on the Mac. If this is the case and the last two bytes are 0x0d 0x0a we ignore them. (8316)
- Previously, when using the CachedWithin attribute of CFQUERY was use, there was no way to reset (uncache) the MaxRows attribute of the query. This is no longer the case. (8369)
- ColdFusion now accepts HTTP file uploads sent using NTLM authentication. (8416)
- The 'Show SQL and data source name' Debug option now shows the SQL statement. It was not doing this previously (8644)
- Previously if admin security was turned on and the current user was a restricted user, they could still browse the entire drive if they used the file browser to search for example, an Access database. Now no controlled Browse resource buttons appear if you are a restricted or privileged user. You must have administrative privileges. (8648)
- There was a problem concerning return code values greater than 32767 from CFSTOREPROC which resulted in data type overflow errors or numeric value out of range errors depending on the RDBMS. This should no longer occur. (8787)
- The OLEDB Interface Data Source page in the CF admin now has a place to put the system database if the provider is Microsoft.Jet.OLEDB.3.51. (8588)
- CFTRANSACTION now works as expected when the data source is of type OLE DB. (8807)
- Advanced Security is now supported on NT 4.0 Workstation. (8906)
- If you used the refresh option on cfquery cache by setting the cachedwithin attribute to 0, it did not work if the time between queries was one second or less. This has been fixed. (8847)
- Arrays of output parameters no longer fail with date arrays in Oracle. (8756)
- The CFX wizard is now compatible with Visual C++ 6.0. (7222)
- The NT installation now automatically recognizes the Netscape 3.6 web server. (8173)
- The OLEDB data sources now appear in the list when choosing a client variable back end store. (9218)
- Under certain load conditions, unrelated to ColdFusion, operating system timing issues could generate the following message:
"An error occurred while attempting to establish a connection to the service. The most likely cause of this problem is that the service is not currently running. You can use the 'Services' Control Panel to verify that the service is running and to restart it if necessary. Windows NT error number 2 occurred."
Changes were made in ColdFusion to avoid these timing issues, making this a much more meaningful error. (8798)
- Problems with the formatting of the APPLICATION.LOG log file have been fixed. (8231)
Fixed in version 4.0
- The problem with IIS 4 creating many multiple .cfm mappings in the application mapping section has been fixed. (4788)
- In certain cases the encrypt and decrypt functions caused Dr. Watson errors and unknown exceptions. These have been resolved. (7238,7239)
- With debugging mode enabled, with the machine's IP that is your server, you could not have a page scheduled because it would output system variables on the bottom of the page. This should no longer be a problem. (1579)
- When using the CFCONTENT tag to download a text file generated, the text file contained certain HTML codes and error messages which did not appear in ColdFusion Server 3.0.1. This should no longer occur. (2464)
- Configuring an Excel data source did not retain the version when set to Excel 3.0. It always showed Excel 5.0. Excel 4.0.1 worked, but is spelled Excel4.0.1. This is now corrected. (2573)
- There was a problem with a particular functionality with the CFFTP OCX. If the directory attribute was set as follows DIRECTORY="/Evaluations", the URL value was incorrect. This has been fixed. (3080)
- CFGRIDUPDATE used to fail with IE 3.02 if you set the ENABLECAB attribute to "yes" in your cfform tag. This should no longer occur. (3359)
- When using CFGRID, if the user tabs to a column, changed the value, clicked on another cell in the grid, then went back and changed the value again, the new value was not being saved. This has been corrected. (3833)
- ColdFusion no longer keeps HTTP reply header data set on the same page as a CFLOCATION directed to the same server. (3873)
- In some instances under load, the Netscape 3.5.1 ColdFusion NSAPI module would report the following error in the webserver.log file and back to the client browser:
An error occurred while attempting to establish a connection to the server
Unix error 150: Operation in progress
This could adversely affect the stability of the ColdFusion server.
This has been fixed.
CFOBJECT and Windows NT 3.51
Since Windows NT 3.51 does not support DCOM, the CFOBJECT tag is not supported in this environment.
Load Balancing and Failover with ClusterCATS
To use load balancing you need to be running Microsoft IIS. ClusterCATS consists of two components, the ClusterCATS Server and the ClusterCATS Explorer. ClusterCATS Server provides fail-over support, load balancing, and other features to help you guarantee the availability of your ColdFusion applications.
For more information about configuring Web server clusters, refer to Administering the ColdFusion Server.
- When creating a cluster using ClusterCats for ColdFusion, enter the license key "GoColdFusion"
- ClusterCats for ColdFusion, which provides load balancing support for clustered servers, is not supported on Windows NT 3.51.
To configure your cluster members for IP Failover the following items must be in place:
- WinNT Service Pack 4 must be installed on each member.
- The Streams Environment must be added to Network Protocols.
- Right mouse on the network neighborhood
- Select Protocols
- Click Add
- Select Streams Environment, and click OK
- When installing CFAS4.0.1 select High Availability for all servers designated to be failover machines.
CFML Code Validation
ColdFusion 4.0.1 introduces two modes of attribute checking for template processing: strict and relaxed. All native CFML tags are associated with an XML description of their attribute types and the combinations of attributes that are allowed. For backward compatibility, the default processing attribute validation mode in 4.0.1 will be relaxed checking.
It is important to remember that the code validator inspects at all code before execution begins. You will run problems if you spread the opening and closing of tag across conditional branches. For instance, the following example is invalid CFML and will generate a compilation error for having an extraneous </cfform> tag:
<CFIF 1 is 1>
<CFFORM ACTION="samsara.cfm" METHOD="post">
<INPUT TYPE="text" NAME="nirvana" SIZE="12">
<CFELSEIF 1 IS 2>
<CFFORM ACTION="nebraska.cfm" METHOD="post">
<INPUT TYPE="text" NAME="lincoln" SIZE="20">
</CFIF>
<INPUT TYPE="submit" VALUE="submit">
</CFFORM>
Correct CFML requires that you terminate the <cfform> in both conditional branches.
<CFIF 1 IS 1>
<CFFORM ACTION="Samsara.cfm" METHOD="Post">
<INPUT TYPE="Text" NAME="nirvana" SIZE="12">
<INPUT TYPE="Submit" VALUE="Submit">
</CFFORM>
<CFELSEIF 1 IS 2>
<CFFORM ACTION="Nebraska.cfm" METHOD="Post">
<INPUT TYPE="Text" NAME="Lincoln" SIZE="20">
<INPUT TYPE="Submit" VALUE="Submit">
</CFFORM>
</CFIF>
Here are some specifics on the syntax change:
- All tags must be strictly nested in 4.0.1. The following code example is no longer valid:
<CFIF "1" EQ "1">
<CFTRANSACTION>
</CFIF>
<CFIF "1" EQ "1">
</CFTRANSACTION>
</CFIF>
- The validation of CFDEFAULTCASE has been made more rigorous; CFDEFAULTCASE must now be the last tag on its level (that is, the last child of a CFSWITCH).
- Use of CFQUERY with the SQL attribute is deprecated. Before running ColdFusion 4.0.1, remove the end tags from templates containing CFQUERY with the SQL attribute. An example of the correct usage is:
<CFQUERY NAME="GetList"
DATASOURCE="Coffee Valley"
SQL="SELECT * FROM Subscribers">
The syntax for CFQUERY with SQL statements in the tag body is unchanged and is the recommended usage.
- If you retain end tags in "empty" tags, such as CFUPDATE, CFINSERT, CFINDEX, and CFSEARCH, make sure there are no characters (including white space) between the start and end tags.
- Attribute names that are a combination of literal strings and variable names must be enclosed in double quotes. The following code will pass in ColdFusion 3.1.1 but will throw an error in ColdFusion 4.0.1:
<CFQUERY NAME=Get#variablename# DATASOURCE="Datasource">
The correct syntax is:
<CFQUERY NAME="Get#variablename#" DATASOURCE="Datatsource">
- In extremely rare cases some forms of invalid tag nesting and/or missing end tags were accepted by previous versions of ColdFusion and produced undefined behavior. In version 4.0.1, all invalid tag nesting and missing required end tags produce errors.
- The CFSET, CFIF, and CFELSEIF tags have no attributes but do take additional input. You will get an error message if the required input is not provided. For CFSET, the message reads:
"Attribute set validation error in tag CFSET
The tag has an invalid attribute combination:
The following required attributes have not been provided: (INSIDETEXT)."
INSIDETEXT is the "internal" attribute for these tags.
- When attribute combinations are not checked using strict validation, any combination of irrelevant attributes can be provided together with correctly formed combinations of relevant attributes. For any tag action there may be a set of required attributes and a set of optional attributes that make sense only for the particular action.
- Previous versions of ColdFusion sometimes allowed invalid CFML syntax in blocks of code that were not executed. This led to very subtle bugs that were difficult to track down and fix. ColdFusion 4.0.1 correctly validates syntax, even in blocks of code that never get executed, such as those inside <CFIF false> ... </CFIF>.
- Some tags in ColdFusion 3.x allowed the presence of superfluous attributes. In this release, superfluous attributes will generate errors even when strict attribute checking is disabled. A later test release will correct this situation.
- The BODY attribute of CFINDEX is extraneous when the ACTION=Delete. With strict checking enabled, the result will be an error message when trying to run an existing template that contains one of these two conditions.
- In CFDIRECTORY, when ACTION=List, the NAME attribute is required and the FILTER and SORT attributes are optional. The MODE attribute is allowed in CFDIRECTORY ACTION=Create but can in no way influence the processing of CFDIRECTORY ACTION=List. Mode is an irrelevant attribute as far as CFDIRECTORY ACTION=List is concerned. When strict attribute validation is enabled, the presence of MODE will generate a validation error.
- ColdFusion 4.0.1 now catches errors such as the unbalanced '#'s' in the "NAME" variable reference below and throws an "Invalid parser construct found" message:
<CFSET NAME="xyz">
<CFOUTPUT>
<FONT FACE="Times New Roman" SIZE="2">
The directory <U>'name#'</U> was not deleted.</FONT>
</CFOUTPUT>
- Duplicate attributes will generate a "bad attribute" error message.
- In previous versions of CF, the mathematical operation included in the following code would be processed:
<cfoutput>#variables.start-5#</cfoutput>
This type of syntax will now halt processing of the template and generate an error message.
Validation of dynamic values
Attribute validation is generally performed at p-code time and not at execution. The exceptions to this rule are tags with a "switch" attribute like ACTION= or METHOD= for which the value is provided at runtime. These instances will be validated at runtime. This means that there will be a slight performance penalty due to runtime attribute validation and that the CFML syntax checker will not be able to detect an invalid attribute combination, in this case because it does not execute the CFML template it checks. Although dynamically providing an action can save a few lines of code, we recommend that you avoid this practice in the interest of a more complete validation and faster application performance.
Enabling strict validation
We recommend that you enable strict checking unless you absolutely need existing templates to run with the conditions described above. If this is the case, you should plan to clean up existing templates at as soon as you can.
To enable strict validation, open the ColdFusion Administrator Server page and check the "Enable Strict Attribute Validation" box.
Syntax validation utility
Click here to run the checker. The application pages are installed in the doc_root\cfdocs directory.
As a side note to this, there is a possibility that any commercially purchased custom tags that you are using may result in a syntax error due to stricter syntax checking. If a commercially purchased custom tags fails to run under ColdFusion Server 4.0.1 you should first turn off the "Enforce Strict Attribute Validation" setting in the ColdFusion Administrator. If the tag continues to generate errors, you should contact the tag's vendor in that it may require a correction to invalid syntax in order to run under 4.0.1.
Attribute value processing in 4.0.1
In previous versions, ColdFusion used a "two-pass" attribute value evaluation method. Consider the use of single and double quotes in expressions embedded in strings, such as
<CFSET ANATTRIB="foo of five is: #foo("5")#">
This says, evaluate foo("5") and embed the resulting value inside the string "foo of ... ". Note that the double quotes inside the #s are not "escaped". This is the expected behavior since the expression we want to evaluate is 'foo("5")' and not 'foo(""5"")'. In ColdFusion 4.0.1 this can be written as
<CFSOMETAG ANATTRIB="Foo of five is: #foo("5")#">
CFSOMETAG ANATTRIB="foo" will have the same value as CFSET ANATTRIB="foo". This shows that expression evaluation syntax is the same inside attribute values as it is in CFIF, CFELSEIF, CFSET, and other tags. However, the snippet above will not run under previous versions of ColdFusion because of the two step evaluation of attribute values. First, all escaped quotes were un-escaped, regardless of their position with respect to expressions. The resulting string was then evaluated. Since the double quotes around 5 are not escaped, the above snippet would throw an error in previous versions of ColdFusion. The "backward compatible" syntax is:
<CFSOMETAG ANATTRIB="foo of five is: #foo(""5"")#">
Upgrading to ColdFusion 4.0.1
- A special note to developers: the CFCATCH TYPE="Any" tag will catch any exception short of an internal error. This is a very powerful capability, in that it gives an application a chance to initiate a graceful shutdown in the event of an unexpected error. But it also demands great care, since many of the CFML interpreter's operations can be affected.
There are two recommended strategies for using CFCATCH TYPE="Any":
- At the outermost layer of a CFML subsystem, a CFCATCH TYPE="Any" can be used to intercept unexpected exceptions and begin graceful shutdown.
- In cases where an application must use CFCATCH TYPE="Any" to trap an exception, the application MUST examine the contents of CFCATCH.MESSAGE and CFCATCH.DETAIL to ensure that it's safe to continue processing. If an unexpected exception has occurred, the application should use a CFTHROW or CFABORT tag to continue notifying enclosing tag contexts about the error.
- The NAME attribute of the CFAPPLICATION tag is now required so that you can have two separate applications with different sessions for the same user. If you don't use the NAME attribute you'll get an error in your template that the name attribute was not supplied.
- The Enterprise version of ColdFusion offers a range of security services. It currently runs only on NT 4.0 Server. See the Complete Security section of the New Features document for details.
- When running the advanced security services, to authenticate a user that is in domain/computer_name the SiteMinder service must be running on domain/computer_name.
- ColdFusion uses a special version of Netegrity's SiteMinder software to support advanced security features. SiteMinder bundles Netscape's Directory Server for user authentication data. The Directory Server license applies only to ColdFusion applications that use SiteMinder. To comply with the limited use license for this software, please observe the following restrictions:
- do not store data for applications other than ColdFusion (with or without schema changes)
- do not use a non-SiteMinder API to access Directory Server
If every user in the directory can be authenticated by SiteMinder and all schema changes are also used by SiteMinder, then the CF user is abiding by the limited use license.
- CFFILE now supports an "AddNewLine" attribute for the "Write" and "Append" actions. Set it to "No" to suppress adding a trailing newline character to the output. It defaults to "Yes" for backward-compatibility.
- CF now parses datetimes with the POP option using the English (US) locale.
- To see a usage prompt which lists the command line options for CFSTAT, the performance monitor utility, type cfstat -usage. Its display is designed to work within a typical 24 x 80 column ASCII terminal.
- In structures, assignment (a=b) is by reference. For example, if a structure, depts, is created and another structure, tmp, is assigned to it (tmp = depts) any changes in depts will be reflected in tmp and vice versa. In effect, tmp becomes an alias for depts.
When building nested structs, any assignment of a struct as a member of another struct does not make a copy; instead a reference or pointer is passed. For example, if you use StructInsert(parent,"Member",child), parent contains a reference to child as a value with key "Member". Any changes to child will affect the structure pointed to by parent.Member and vice versa.
If a physical copy is needed, the StructCopy() function can be used. Using the same structure variables as above, if depts is a structure and tmp is set to the value returned by StructCopy of depts (tmp = StructCopy(depts)), then tmp will have its own copy of the key value pairs of depts. Making changes to depts will not affect tmp and vice versa.
- The <CFSQL SQL="..."> tag is no longer supported in ColdFusion. The CFQUERY tag offers this functionality. See the CFML Language Reference for information on using CFQUERY.
- CF_SQL_BIT is a valid CFSQLTYPE for CFPROCPARAM and it is bound to the Bit datatype of MS SQLServer.
- Previous versions of ColdFusion did not allow a template to be included more than once. That is, recinc.cfm contains a <cfinclude template="recinc.cfm"> tag, or a template included by recinc.cfm includes recinc.cfm in a cyclical manner. This restriction has been eliminated in ColdFusion 4.0.1.
Note: Use caution when including a template in a recursive manner, as this type of processing may consume large amounts of system resources.
- When using "Application" as a variable name, always set its scope to avoid errors. For example, a form field called Application should be referenced as Form.Application. This change reflects the new 4.0.1 application structure, in which an application is an object containing all the application variables present.
- A new variable, EXECUTIONTIME, is available for CFQUERY and for the new CFSTOREDPROC tag. CFQUERY.EXECUTIONTIME returns the time it took for the tag to execute. CFSTOREDPROC.EXECUTIONTIME returns the cumulative time for all recordset generation and sql execution.
- ColdFusion now supports only Apache version 1.3.2 and above.
- The Optimize action of the CFINDEX tag is deprecated. Use the new CFCOLLECTION tag's Optimize action instead.
- The Verity SCORE operator can now optionally report up to four decimal places.
- CFSEARCH will now return the actual document title for PDF and Office documents in the TITLE attribute, if Verity stored a title, otherwise it returns CF_TITLE.
- An error message "Context validation error in tag CFINPUT" displays if any content, even white space, is contained between the opening and closing tags. The easiest way to correct this is to eliminate the </CFINPUT> tag from your code. It is not needed.
- The new FORMULA attribute of the CFREPORT tag replaces the @FormulaName attribute. FORMULA requires a formula name, the "=" delimiter and the ";" terminator. For example,
<CFREPORT REPORT="c:\MyReport.rpt"
FORMULA="MyFormulaName1=MyFormula1;MyFormulaName2=MyFormula2;">
- The CFTRANSACTION ISOLATION attribute no longer supports the "Versioning" value. Support for this setting was removed from ODBC, and no substitute for its behavior is available. ColdFusion will display an error message for CFTRANSACTION ISOLATION="VERSIONING".
- IIS 2.0 is no longer supported. The ISCFFLT.DLL that defines an IIS filter is not part of the 4.0.1 installation.
- The check box for enabling the "Limit simultaneous requests" option has been removed from the ColdFusion Administrator Server page. A maximum number of simultaneous requests is now always enforced. This change was made in response to degraded operating system performance experienced by users when an unlimited number of simultaneous requests was allowed.
- Comparison problems may occur from external storage of certain string values for a Boolean operation. In previous versions, the following FILE variables returned either "Yes" or "No" in mixed case from CFFILE (ACTION=UPLOAD):
FileWasSaved
FileWas OverWritten
FileWas Appended
FileWasRenamed
They now return "YES" or "NO" in upper case. In CFML "YES" == "yes" == "Yes".
- If you inserted CFABORT tags in application pages during debugging, you should now use CFML comments instead. Optimized JIT p-coding requires CFML document integrity, so syntax validity cannot be dependent upon application page flow control at runtime. For example, in previous releases the CFABORT tag in the example below stops the processing even though there is a syntax error on the last line.
<CFSET MyVar1="abc">
<CFSET MyVar2="def">
<CFSET MyVar3="hij">
<CFOUTPUT>#MyVar1#</CFOUTPUT>
<CFABORT>
<CFOUTPUT>#MyVar2#</CFOUTPUT>
<CFOUTPUT>#MyVar3</CFOUTPUT>
In 4.0.1, this application page displays an error message listing the location of the syntax error.
- The URL and Form scopes are no longer read-only. This change supports the use of CFPARAM on URL and Form variables. The CGI scope remains read-only.
Native Database Drivers (Enterprise only)
- The native Sybase Driver in ColdFusion 4.0.1, requires Version 11.1.1 of the Sybase client libraries. Sybase patch ebf 7729 is recommended.
- For Oracle, the required client libraries are: 7.3.4.0.0 or 8.0.4.0.0.
- Inserting and updating columns of type "date" currently do not work for the native Sybase and Oracle drivers for the CFINSERT, CFUPDATE, and CFGRIDUPDATE tags. (4195).
- You cannot use the Oracle 7 client libraries and the Oracle 8 client libraries at the same time. You may use one or the other client libraries to talk to both servers. See your Oracle documentation for details.
- The Microsoft OLEDB Provider for MSSQL Server has been added. Since there is no underlying data source for the interface, the connection attributes must be entered in the CF Administrator or in a tag. The OLEDB page now accepts a server attribute and a default database attribute. Users should fill these in when setting up a DSN for SQLOLEDB. Programmatically these values can be entered through the DBNAME and DBSERVER attributes of CFGRIDUPDATE, CFINSERT, CFUPDATE, CFSTOREDPROC and CFQUERY. These attributes do not currently apply to any other providers.
Be aware of the following case-sensitivity requirements when running queries through the native drivers:
Note: For Sybase SQL Server the syntax for calling a stored procedure with CFQUERY is different for ODBC and the Sybase native driver. ODBC requires brackets and the word "call". The native driver does not have this requirement.
ODBC syntax:
<CFQUERY DATASOURCE=""Name="">
{call dbo.stored_procedure_name}
</CFQUERY>
Native driver syntax:
<CFQUERY DATASOURCE=""Name="">
dbo.stored_procedure_name
</CFQUERY>
Running Allaire Forums under ColdFusion 4.0.1
If you are running Allaire Forums with ColdFusion Server 4.0.1 you should be running with Allaire Forums 2.0.4. You should download Allaire Forums 2.0.4 from our product page if you are running an earlier version.
Configuring the Apache Web Server
ColdFusion Server for Windows supports Apache version 1.3.6 with the module shipped with ColdFusion. For information about support for earlier releases of Apache Web Server, please visit the Allaire Support page. To obtain Apache free of charge, go to the Apache group web site at www.apache.org.
Adding the ColdFusion module
The ColdFusion Module can be found in the installation directory (usually c:\cfusion\bin
).
We assume below that your Apache installation is found in c:\Apache
.
- Copy the module (ApacheModuleColdFusion.dll) to your modules directory under the Apache source directory.
ex. c:\Apache\modules\ApacheModuleColdFusion.dll
- Edit the "httpd.conf" configuration file to contain the following line, this can be found in
c:\Apache\conf
:
LoadModule coldfusion_module modules/ApacheModuleColdFusion.dll
Back to top