WebHub Release Notes for v2.089, v2.090, v2.091, v2.092, v2.093, v2.094, v2.095
This file was last updated 28-Jul-2008

Skip to: WebHub Object Pascal Components    The Hub    Runners   

The Hub

High traffic sites: session var file deletion fixed v2.089
Since WebHub v2.010 (at least) there has been a problem where, the more *.var files one had, the longer it would take to get them deleted.
Also, since WebHub v2.079, the sweep delay setting had been incorrectly read from configuration and had been defaulting to 1 minute regardless of the setting.
Both issues were fixed in WebHub v2.089.
Slightly better error messages from Hub regarding configuratio errors v2.092
The hub can now report when it detects no ZaphodsMap environment variable, and when the root path does not even exist. These two problems can occur when beginners experiment with their settings without understanding the complete system. Previously the hub reported only an access violation and did not pinpoint the problem.
Known issue: jump to secure page v2.091
If you need to use JUMP or ACTION to transfer to a secure server profile, use a later version of WebHub or request a workaround from tech support for v2.091.
Reference: PH 2010-01-25.
New XSD: WebHubNetworkInfo200805.xsd v2.094
Added AllowDynamicAuthority flag for local Server Profiles.
If you are using HTTPS and the secure subdomain is NOT www, you should set this flag to FALSE for your secure server profile. Example: secure.earthwaverecords.com
Added nameOverride for http software, which enables you to set a custom server name for all pages served by WebHub. (07-May-2008 11:45am gmt)
ZMAdmin runs better on Vista v2.094 (19-May-2008)
There had been a problem when folders under the ZaphodsMap root folder were marked readonly. Fixed.

WebHub Object Pascal Components

New XSD: WebHubAppConfiguration200805.xsd v2.094 (19-May-2008 23:40 gmt)
Added ComponentConfig for TwhWebAction class.
Example configuration, as used by the web action defined in whAppOut.pas:
  <whWebAction componentName="waLinkW3Validation">
    <Setting id="URLToVirtualPath" value="http://demos.href.com/w3validation/adv" context="DEMOS" />
    <Setting id="DiskFolder" value="D:\temp\w3validation\adv\" context="DEMOS" />
EMail: ReplyTo feature added v2.090
If you use TwhMailForm, you can a ReplyTo setting to the XML configuration and that will be used when generating the email.
As usual with TwhMailForm, you may use a ^ symbol to indicate a StringVar, e.g. ReplyTo value="inEmail^"
To validate this setting, be sure to use WebHubAppConfiguration200707.xsd or later
Warning: if you are using TwhMailForm, please use v2.090 not v2.089 because ReplyTo was set as a required field in v2.089.
Icons and captions better when running multiple instances v2.089
In earlier versions, problems with MainFormCaption and ToolTip appeared when running multiple instances of the same EXE as an application, with icons in the taskbar area. These problems have been resolved by adding a new unit, tpCaptionChanger, to TPack. Now the main application form TfmMainForm supports the interface IGetCaptionChanger, which allows coordination and tracking of Caption changes by any number of clients. Multiple clients access this interface via the TCaptionObserver class instances. This new interface is used in tpApplic, whsample_EvtHandlers and utTrayFm.
If you are using standard WebHub units for your main form, you do not need to do anything to take advantage of this fix.
whsample_EvtHandlers.pas changed v2.094
If you have modified this file, please compare new version against your original in case you want/need any of the latest changes.
ASSIGNED macro now supports checking local variables v2.089
Example: ASSIGNED|localvar.temp|the local var is non-blank
WebHub site index feature now available to use within existing pages v2.089
There is a new function on the app object, BuiltInIndex, which returns the content used when generating the built-in pages named Index and IndexT. The single boolean parameter determines whether the list is generated using a UL tag (AsList = True), or using a TABLE tag (AsList = False).
Example web action which brings in the site index content:
procedure TfmAppPanel.waSiteIndexExecute(Sender: TObject);
OnSetPageID event is called in many more cases now v2.091
Previously, OnSetPageID was called only when the PageID changed relative to the most recent request, even if that request was from a different surfer. Now it is called in all cases except exceptions.
Be careful -- in your event handler, if you reference pWebApp.WebPage, be sure to start with
  if Assigned(pWebApp.WebPage) then    // be careful to reference WebPage only if not-nil
Removed dependency on whsample_EvtHandlers.pas from whMain.pas v2.091
The use of whsample_EvtHandlers.pas should be OPTIONAL.
Added verb to app object: Open ErrorLog Folder v2.091
Use this from any WebHub application menu: WebHubApp > Open ErrorLog Folder. This will open Windows File Explorer, in the directory that would contain error logs if there were any for your AppID.
Input and Output panels optionally show details for up to 10 requests v2.091
Previously, the output panel only showed the most recent request, which was not always enough to troubleshoot complicated sequences involving bounces and multiple surfers. Now, the output panel shows information about up to 10 requests, rotating them to always show the most recent replies.
TPack bug fix regarding undocked panels v2.091
Bug description: when the WebHub input or output panel was undocked from the main form, an access violation appeared. The error was in utPanFrm.pas unit. Fixed 12-Sep-2007.
Maestro and Solo cards detected by ccValid v2.092
The credit card validation routines have been updated to properly detect Maestro and Solo cards (thank you Sigi).
The webCCard unit was also updated to include these cards.
If you were making use of the GUI functions in ccValid for testing credit card numbers and/or dates, you must add the CCTEST compiler directive to your project; otherwise those functions do nothing (because web applicatios usually do not want to be popping up dialogs on the server).
SendFileIIS supports sending of files from network shares v2.092
Added SaveWebHubCentralInfoSetting to whutil_ZaphodsMap.pas v2.092
This function enables you to save settings into the CentralInfo file. Be sure to call pWebApp.Refresh after making any changes.
New AppID Wizard gets lowercase AppID correct v2.092
When it writes the AppID definition to WHCentralInfo.xml, the wizard now uses all lowercase as it should. Previously it capitalized the first letter.
MasterDataSetReset procedure added to web data source components v2.092
Use MasterDataSetReset in order to change the source/master dataset (typically a query component) after having already used a different one.
This allows for far greater flexibility with the Scan and Grid components, and can save instantiating dozens of webdatasource and datasource pairs.
Please ask for details if you are interested.
Automatic FileID always f plus 3 digits v2.092
If a fileID attribute is not provided for a .whteko file in the application-level config file, then an automatic one is created, e.g. f001. Previously, the id was f1, which led to bad sorting for sites with more than 9 .whteko files.
TwhListScan: configuration technique updated v2.092, 12-Nov-2007
TwhListScan now loads Captions, ButtonSpecs and Delimiters from a combination of XML and WHTEKO files, consistent with the TwhdbScan component. The application-level XML file is used to store macro prefixes, which are combined with keywords to come up with the final macro names loaded from WHTEKO content. This enables you to share the navigation keywords etc. among many TwhListScan components.
Requires: WebHubAppConfiguration200711.xsd or later
AppSettings: now loaded correctly on machine with blank ZMDefaultMapContext v2.093, 10-Dec-2007
There had been a serious problem where, given an application-level configuration file with AppSettings that varied by context AND a BLANK context on the server, values would be loaded from the last AppSetting instead of matching blank context. This was a bug.
Now, when the server context is blank, the AppSettings correctly load from nodes where context is not specified.
OnBadBrowser event no longer called for OPTIONS nor HEAD requests v2.093, 21-Feb-2008
When using SendFileIIS to send csv files which are automatically opened by Microsoft Office, the user agent can change when in essence, the session is continuing and is still valid. OnBadBrowser should not fire in those cases (HEAD and OPTIONS requests).
See info on Microsoft Office Protocol Discovery at http://support.microsoft.com/?id=838028
Html > Error panel has new [Test Log] button v2.093
Use this button to make sure that the application has permission to write to the error log file.
See also: on the menu, WebHubApp > Open ErrorLog Folder
See also: ZMAdmin, definition of the ErrorLog folder for the AppID
AJAXTimedEvent supports autostart parameter v2.093
Default value is true. When false, a manual click is required to start the timed event.
Reference: HTAJ Ajax demo on http://demos.href.com
Small memory leaks fixed v2.094
htObjMem.pas - when this unit was used ThtObjectStore class instance were never released.
whsample_EvtHandlers.pas - DataModuleDestroy method was not executed because of dfm error.
whMain - icon objects (MAINICON, PING, BUSY, etc) were not destroyed on application terminate.
Thank you to Matthias at www.my-next-home.de for the alert on this issue.
New property: ServerProfile.AuthorityActive v2.094
ServerProfiles now have both Authority and AuthorityActive properties. The Authority property (still) returns the exact string specified as the Authority in WHNetworkInfo.xml. The AuthorityActive property returns the active Request.Hostname and port, as long as AllowDynamicAuthority is true.
This enables WebHub applications to serve pages on multiple domains, and be able to switch easily between http and https.
New reserved Server Profile IDs: apphttp and apphttps v2.094
apphttp means: look in the application-level config file and use the standard server profile id, which is the one used on http
apphttps means: look in the application-level config file and use the secure server profile id, which is the one used on https
The benefit to using these reserved identifiers instead of customized ones is, for developers supporting WebHub applications for multiple customers with different naming schemes, it avoids the needs to make all server profile identifiers exactly the same. For example, one customer might want the secure profile named "ssl" and another might need it named "secure". By referencing apphttps, the developer does not need to worry what the actual name is, or for that matter, whether the name changes in the future.
Usage: JUMP|pgCheckout(apphttps)|check out
Usage: pageid="pgCheckout" remap="(apphttps)"
Example: BounceIfNotScheme|HTTPS
Example: ActivateServerProfile|defprofile
Example: ActivateServerProfile|customprofile
Example: ActivateServerProfile|apphttp In this example, 'apphttp' is a reserved profile and means "the standard server profile used for the application when running over http".
Example: ActivateServerProfile|apphttps In this example, 'apphttps' is a reserved profile and means "the secure server profile used for the application when running over https/ssl".
BOUNCEIFNOTSCHEME command improved v2.094
Previously WebHub was not loading the ServerProfileID meant for use with SSL connections; it was using the Standard one for SSL mode, which of course did not work. The configuration is loaded from XML correctly now.
Slight performance improvement.
[SET]CGIHTTP commands and properties are obsolete v2.094
This command has been removed because it was too unclear. Use DynURL.LocSMU property instead.
If you want to force the use of http or https while keeping the current domain, use the new BOUNCEIFNOTSCHEME command.
If you want to force the use of an authority (domain + port) specified by a Server Profile, use the new ACTIVATESERVERPROFILE command.
pWebApp.DynURL.CgiAddress moved to pWebApp.Request.CgiAddress v2.094
This method is now on the Request object because it returns the scheme, authority, virtual path and runner based on the REQUEST (NOT based on the current server profile).
pWebApp.DynURL.CgiCaller deprecated v2.094
If you use this property in a WHTEKO file, an error will be logged.
Use properties on the Request object instead.
Pieces of WebHub URLs identified and given one-letter abbreviations v2.094
We are moving toward complete consistency in all naming of properties, etc. relating to parts of URLs generated by WebHub.
Letter Part Example Notes Used in Short Format
S scheme HTTP or HTTPS False
M delimiter :// constant string False
H host href.com or www.href.com False
M delimiter : only used when port is not 80 False
T port 8001 only used when not http on 80 and not https on 443 False
M / True
V virtual path scripts path to the runner False
M / False
R runner runisa.dll or runbin.exe filename with extension False
M ? False
Y hyphen - used when switching AppIDs usually not
A appid adv lowercase! usually not
W . dot before processid usually not
O processid 3222 unique to the running EXE instance usually not
W : or / usually not based on server profile
G pageid welcome use blank when on homepage True
W : or / True
N session number 38297333 True
W . dot before random True
X Random 9823 optional random number to prevent caching True
W : or / True
C command mygrid.next True
- - - - -
U authority www.href.com:8000 combines host plus delimiter plus port False
Fixed memory leak v2.094 (16-Apr-2008 04:00 gmt)
webList.pas: TwhStringList.DeleteAndFreeFirst
This leak has been in WebHub for years and manifested under high traffic conditions.
Fixed error message about session component already existing v2.094
webCore.pas: TwhSessionApp.DoUpdate, Fixed: (ERROR) SetName TwhSession the component called whSession already exists
Exporting: rules simplified v2.094
Pages that have an exportfilename can be exported, and during exporting, links TO those pages will use the appropriate static filenames. Links to other pages (where exportfilename is blank), will by dynamic links, e.g. /scripts/runisa.dll?hrefsite:menu NOT /menu.html.
Thus, for people using WebHub to build static sites, the exportfilename should be filled in manually, in the .whteko file.
In earlier versions of WebHub, it had been possible for the filenames to be generated automatically. However, designers had to use a special keyword to indicate their dynamic pages.
Session number corrected, on tray icon hint v2.094 (29-Apr-2008)
In some earlier versions, the session number always displayed as zero ('0') in the mouse-over hint on WebHub tray icons. The correct most-recent session number is now displayed.
Launch method: Do not display an error message box if an error occurs v2.094 (29-Apr-2008)
This is in the ucShell.pas unit, in tpack.
New event: TwhNetworkHttpServers.OnCalcHttpServerSoftwareName v2.094
The HttpServerSoftwareName property of TwhNetworkHttpServerDetail is used to generate the [Server: xxxx] header in the HTTP prologue of all dynamic WebHub pages.
The HttpServerSoftwareName is based on (a) the name provided by the Http server, e.g. Microsoft IIS and (b) the override name provided in WHNetworkInfo.xml. If you need to override it further, use this new event.
New event: TwhNetworkServerProfiles.OnCalcVirtualPath v2.094
In long WebHub URLs, the VirtualPath property of the Server Profile is used before the runner name, e.g. scripts.
In short WebHub URLs, the VirtualPath property is normally blank. However it can be a lingvo code if URLUseLingvo is true. In that case it would be a value such as 'eng' for English.
Use the new OnCalcVirtualPath event to override it further.
If you are using short URLs, you will need to alter the rules in your filter to make sure that the filter knows how to recognize your prefixes. In StreamCatcher, this is done by enumerating the lingvo list.
webInfoU.CentralInfo is obsolete v2.094 (09:00 14-May-2008)
Please use pWebApp.CentralInfo or webInfoU.BestCentralInfo. The latter is slower.
Controlled HTML with checkbox fixed v2.095
In v2.091, controlled HTML with a checkbox was generating the keyword BoolVars instead of Checked. Fixed.
New: DynURL properties v2.095
DynURL.ToSessionIDW gives an appropriate URL based on the current AppID, PageID and SessionID, and includes the trailing WebHub delimiter.
DynURL.ToSessionID is the same, without the trailing WebHub delimiter.
DynURL.CgiApp is obsolete; use DynURL.ToAppID plus a delimiter.
DynURL.CgiCaller is obsolete.
DynURL.CgiHttp is DynURL.ToAuthorityM.
There are several others available... full docs should be online soon.... meanwhile please see source in whcfg_App.pas.


Upload folder: limited retries on upload path v2.090
Runner tries 3x to work with the configured upload path, as long as the folder exists (else it gives up after 1x).
Note: you can reload the runner configuration using http://localhost/scripts/runisa.dll?refresh, without stopping IIS
401 Authentication dialog supported v2.090
Support added for basic authentication with IIS
File upload respects maximum file size v2.092
To use this feature, add two configuration entries to your WHNetworkInfo.xml file, under the appropriate runner id definition(s):
Use the following XSD file to validate WHNetworkInfo.xml when using this feature: WebHubNetworkInfo200710.xsd
NB: you can use ZMAdmin v1.0.0.7 to edit these new runner properties, as long as WHNetworkInfo.xml contains the latest XSD reference (200710).
The default maximum file size is 100kbytes.
If no error page id is specified, the runner will provide a default error message when the maximum upload filesize is exceeded.
The ISAPI runner has been fully tested. The cgi-bin runner includes the feature but has not been tested. [02-Nov-2007]
Temporary upload filenames use process id v2.092
In order to help differentiate the temporary filenames used during file upload, especially under high traffic, the runner's process id is now included as part of the filename.
You do NOT need to change your WebHub application code to take advantage of this.
PathInfo respected for non-soap usage v2.093
Given URL http://demos.href.com/scripts/runisa.dll/fred?echo, where the PathInfo is /fred, the runner now correctly passes that information through, unless 'fred' matches an AppID exactly.
The problem had been that 'fred' was always taken to be the AppID when there were no further / symbols prior to the ? symbol.
AllSituationsDefault error message file takes precedence v2.094
The logic has been fixed so that the presence of an AllSituationsDefault message file for a specific AppID will take precedence when no specific situation message has been defined for the AppID.
This makes it easier to set up a good general message file for a particular application, without impacting any of the other apps running on the machine.

Installation Program

WHCentralInfo's DataPath var respected v2.091
Now, if you have customized the variable named DataPath within WHCentralInfo.xml, the runtime setup will use that value as the datapath (WebHubRuntimeDataPath).

FYI: Valid DTDs on w3.org
FYI: Valid DTDs on w3.org
FYI: Reasonable source for Kylix licenses: Kylix 3 Pro
Copyright © 2007 HREF Tools Corp. All Rights Reserved. TPACK and STREAMCATCHER are registered trademarks of HREF Tools Corp.