WebHub Release Notes for v2.009 and v2.010
This file was last updated 24-February-2003 21:05 California time.
Any letters after "v2.009" (e.g. "c", "d", "e") are for customers testing the pre-release
builds. The public version includes ALL items on this page.
Improvements to WebHub Components
- Fix for suspended apps v2.009
Fixed bug where apps wouldn't
suspend correctly because the FActive field was
declared as protected in a super class and as
private in a sub class. Removed the declaration
from the sub class.
- TWebCommandLine.Active is again a stored property v2.009
In v2.005 to v.2008, TWebCommandLine.Active was not stored in the Delphi Form file (.dfm). Now, it is.
This means that if you set TWebCommandLine.Active := True in your data module or form in Delphi, then
the application will immediately connect to the Hub when it runs. (In v2.008, you had to set it active
in Delphi code at run-time.)
- Fix to WHTML parsing for files ending in CrLf v2.009
Fixed bug in ReadChunkFile method. The bug would occur if the file ended with a CrLf. The bug
included the CrLf on the line that was already processed
- Fantastic web robot handling v2.009
This feature is for use with the StreamCatcher ISAPI filter.
If you haven't already read about it, do so now!.
WebHub v2.009 is able to treat a given session number as being reserved for web robots, e.g. session #1001.
When the current session is a web robot session, WebHub automatically simplifies the output
from JUMP, GO, HIDE and other URL macros such that they
- use blank instead of a session number (and no random session portion, either)
- do not contain an application handle
- do not have any colon after the PageID unless there is a command
This change is implemented through the GetAppID, GetRandomSession and aSession properties and methods
on TWebBasicApp. The UpdateRobotSettings function is called to load the designated web robot session number,
on startup and on pWebApp Refresh. There is a new function on TWebBasicApp, isWebRobotRequest,
which returns true when the current session number equals the designated web robot session number; it
is public and you may use it in your own additional logic.
Here is a comparison of a JUMP to the a page before and after implementing this feature:
The HTML document received by the web robot will only contain "clean" links (i.e. the After column).
This leads to optimal indexing of a site by spiders AND dramatically reduces the load on production
servers because all web robots share a single session number instead of receiving an unlimited number
of new ones. HREF saved $150/month in bandwidth fees in November and December 2001 after implementing
this change on its public servers, presumably because its sites were so heavily (and redundantly) indexed.
- TWebHttp adds proxy support v2.009
The TWebHttp component now supports the use of a proxy as long as the Protocol property is
set to 'HTTP/1.1' (not the default HTTP/1.0).
- TWebSock adds host headers v2.009
In accordance with the HTTP 1.1 specification, TWebSock now automatically fills in a Headers line
host: www.adomain.com with the appropriate domain name when Protocol equals HTTP/1.1.
This enables components using TWebSock (e.g. TWebHTTP) to contact a site running multi-homed
on an IP number.
Also the "advise" feature echos back the port number in addition to the domain name when connection
- AdjustForMacros feature v2.009
Fixed security hole in InputBox procedure used
by INPUTTEXT macro where macros written
inside textboxes were expanded inside the
textbox and shown to the user.
- ThtWebApp.HubCapacity v2.009
Fixed the bug where TWebApp would use the wrong registry key to read the
- File Upload enhancement v2.009
Added internal SetUploadTempFilePath procedure to enable developers to customize the
file-upload-path. It had been defaulting to c:\winnt\, essentially due to a bug in the
WinTempPath function (in tpack) which appears to stem from a lack of permissions when getting
environment variables from runisa.dll context.
Developers should make a file named
WebHubRunner_KeyBox.cfg in same dir
as the runisa.dll (should also work if in same dir
as runwin.exe). (Note: configuration file was renamed to WebHubRunner.cfg in v2.014.)
That file should contain this to customize the
- Fix to SendFileIIS v2.009
Problem description: Files were opened exclusively,
and if another app tried to open the
file at the same time, it would fail, but not detect
the error. Instead it would send garbage chars
back. The method has been changed to read share
the files, and retry multiple times if it fails to open
- Fixed compiler warnings v2.009
Several units had Delphi 5 compiler warnings which were essentially due to not precisely typing
certain variables. Of possible importance
to fix in your own Delphi units, all variables and properties relating to GetTickCount were changed to
use DWORD (not integer) to avoid potential errors in data comparison relating to timeout.
Changed units: apistat, webmail, websock, webstlst, htavg, htedfile, htobjmem, webinfou.
- AsDDHHMMSS function fixed v2.009 v2.009
Fixed the bug in AsDDHHMMSS that resulted in the wrong elapsed times in the Hub display.
This function resides in the TPack file ucinteg.pas.
- TWebListMaster component: fixed SetListAlias method v2.009
A bug in v2.000 through v2.008 caused the TWebListMaster component to fail to load configuration
data successfully. This has been fixed.
- For use with Apache and cgi-bin v2.009d
HttpColon Hub Options|Default Added
If present on the Hub's Options|Defaults page, a new entry named 'HttpColon' will determine
the setting for TWebOutput.HttpColon. The default value is FALSE. It should be set to
TRUE for use with the cgi-bin runner and Apache or Netscape web servers.
This new setting replaces the use of the optional /HttpColon parameter which had been
implemented in dmWebHub.pas. The reason for the change is that the setting is usable when
the Hub is run as a service (and command line parameters are not).
UseHttpHeader Hub Options|Default Added v2.009e
If present on the Hub's Options|Defaults page, a new entry named 'UseHttpHeader' will determine
the setting for TWebOutput.UseHttpHeader. The default value is TRUE. If you are
using Apache (or Netscape) web server with cgi-bin, try setting it to FALSE. This will
cause TWebOutput to avoid sending a normal HTTP header ("HTTP/1.0 200 OK") and
instead send "Status: 200 OK'. The web server software is expected to then look at the status
code and make its own HTTP header. If you set UseHttpHeader to FALSE then the etting
for HttpColon is never used.
- FilePathAndNameForModule function added to ucString v2.010
- tpLogMessage procedure added to ucLogFil v2.010
The procedure takes one parameter (message string) and logs it to
a file with .info.log extension, in same directory as
the current application (EXE or DLL).
- functions ElapsedMillisecondsSince and ElapsedMillisecondsBetween in ucWinAPI v2.010
These functions use DWORD, which is the datatype used by Windows GetTickCount.
Improvements to WebHub Panels
- HTML|Files panel (W-HTML Editor) now has a RED _RESET icon v2.009
We have changed the color of the reset button in the HTML editor from green to red. The green color made
it look like the usual "refresh" button, which was very misleading because the button action is to UNDO
all changes by reloading the W-HTML file from disk.
For anyone wanting to make this fix in an earlier version of WebHub, in the htedmemo.DFM file,
change the hint to say _RESET as shown here.
object btnReloadFile: TtpToolButton
'_RESET~Reload this file from disk and undo all changes made in the editor'
- Fixed issue on refreshing files list v2.009
Fixed bug that would somtimes trigger when
refreshing the app, and file number three was
selected in the W-HTML editor. The problem was
that the app would try to position the grid before the grid was
- dmWebHub.pas optimized for web robots v2.009
RejectSession is no longer called when IsWebRobotRequest is True. This was done to prevent
bouncing web robots to another session number.
- dmWebHub.dfm: set tpOptions =  v2.009
tpOptions had included tpUpdateOnGet; now it does not.
This avoids having pWebApp initialize to the first AppID in [WebSetups] when the form is loaded.
It also means that the developer needs to explicitly set pWebApp.TheAppID and then call pWebApp.Refresh
(which most developers, and all the demos, do anyway).
- dmWebHub.pas optimized for new sessions v2.009
procedure TdmWebHubCore.WebAppNewSession(Sender:TObject; Session:Integer; const Command:String);
if Session = 0 then exit; // ADDED THIS LINE OF CODE to avoid doing work for session #0.
- Minor simplification to utMainFm.pas v2.009
In the uses clause -- removed webcall unit name because utMainFm was designed to avoid requiring WebHub (just tPack).
Improvements to The Hub
- WebHub Control Panel: W-HTML improved v2.009
Include non-breaking-space in
every cell so that the line drawing looks good in MS IE.
- Session Panel: DirectoryListBox is active v2.009
It can now be used to browse for session files. Note that by default, the directory list box
is disabled. Click the "Show list of session files" button on the toolbar to enable it. The idea
is that most of the time, one would not want the overhead of monitoring session files.
- WebHub_Central_Registered.exe v2.009
This installation file used by Pro and Enterprise customers now properly includes
the W-HTML shortcut file (wizard\editor\ShortCut.txt).
- Documentation note: Options|Defaults in Hub v2 uses only SessionsDir v2.x
In v1, SessionDir was used in hubmain.ini. If you are running both 1.x and 2.x products, be
sure to set BOTH values to the SAME directory.
- Disabled NoHubExec feature v2.009
This feature was known to lead to performance problems in certain situations and
we decided to disable it until such time as we have sufficient time to fully re-implement it.
The feature was meant to let the runner launch the Hub if the Hub wasn't already running.
Improvements to Runners
- cgi-bin runner fixed v2.009d
The cgi-bin runner has been tested to work well with multiple quick requests (e.g. large framesets)
and is no longer getting stuck with a "stop reloading" message.
- Version info added v2.009
The runisa.dll file should now have a version property which accurately gives the version,
and the echo page now provides the same version number.
- esoteric fix of trailing blank going to runisa.dll v2.009
Problem description: in rare cases, a trailing space got into the cgiQueryString. This makes StrToIntDef fail,
and then the surfer is endlessly bounced to a new session, with the same problem repeating. Here is the fixed code:
Improvements to Installation
- Readonly attribute removed for all files v2.010
Due to a change in the procedure for building WebHub, v2.009 (only) had the readonly
attribute set on some files, making it difficult for customers to upgrade from prior builds.
- System message files
The message files that are meant to be stored in ...\webhub\system\ (e.g.
hubnoapp.txt, hubtime.txt, etc.) are (again) included within
the WebHub VCL components installation file
and the standalone WebHub Central installation file.
- if hub.exe is locked, it is renamed to hub.exedeleteme.
- WebHub ISAPI runner installation
When installing the runner, if runisa.dll already exists, it is renamed to runisa.deleteme
so that the new file can be copied in.
That will work with IIS running. The next time IIS is stopped and started, the new runner will be loaded.
- Installing components into Delphi, search path length issue
Fixed problem in installation script where the length of the Delphi library search path exceeded 1024 characters.
- webhub.GID and tpack.GID removed from the help directory
Reason: If during installation you have the help file open, the .GID file is locked and would trigger a similar
error as the locked hub or runner. Note: GID files are always built by winhelp anyway.
- Updated The Fish Store Demo v2.010
Updated Delphi code and w-html for v2.x compatibility.
Back to the top of the release notes
- The WebHub component installation automatically updates your
Delphi Tools|Environment Library path to include the location of
your latest components. If this location differs from your prior
version, and the prior version is still on disk, your compiled
projects will USE THE PRIOR components. Therefore, please
check your library path manually and make sure that it is only
using your intended version of the components.