WebHub Object Pascal Components

MAILTO v3.230
The mailto target is URLEncoded for HTML5 compliance.
If you have been using the final parameter in MAILTO as 'True' for so-called numeric encoding, it might be time to stop because that type of encoding is contraindicated by the W3.org standards.
The ?subject syntax is supported now.
Example for HTML5: MAILTO|info@href.com?subject=request sales quotation
Example for obfuscation of email addresses: MAILTO|info@href.com||true
Old: pWebApp.Response.SendMailTo has changed slightly, to: pWebApp.SendMailTo
BDE support with XE8 (D22) v3.230
HREF Tools is not supporting the BDE with XE7 for WebHub, but it is supporting it for XE8.
Embarcadero has shipped a separate installer for the BDE files for XE8.
Tag used as NativeInt not Integer v3.231
Usage changed in source: wdbGrid.pas, wdbSSrc.pas, wdbSource.pas
Usage changed in core TPack units and property editors, in: restEdit, docProps, tpActionGUI
Usage changed in core WebHub units and property editors, in: htAvg, htListOf, htEdCode, htStream, webVars, webListGUI, webCollGUI
There is no practical difference on win32. On win64 with more RAM, there can be a difference when pointers happen to reference memory located in addresses where an Int32 would have a negative number but a Pointer (NativeUInt / Int64) would have a positive number.
In places where a Tag holds a Pointer, the Pointer is cast to NativeUInt. Source: webListGUI, webCollGUI
In places where a Tag holds a TComponent or Parent, the TComponent is cast to NativeInt. Source: utPanFrm, tpActionGUI, tpMenu
If you are deploying the Hub, runner or custom compiled apps as win64 binaries, please test carefully before going into production with v3.231.
CLR support removed from TPack source v3.231
IFDEF CLR code has been cleaned out of TPack source.
Fix relating to SESSION DELETE v3.231
This symptom has been fixed: if you called SESSION Delete and also had an OnNewSession event handler, the handler would be called twice, once when the page started and again after the page finished executing. This could lead to a BOUNCE if your OnNewSession handler had some SessionReject code.
This has been fixed in webCall.pas and the change is theoretically one that can be patched into earlier versions of WebHub.
Strip invisible whitespace v3.231
ucMetaChars.pas has a new routine: SanitizeInvisibleWhitespace. This strips zero width space from incoming form data.
DX 10 v3.231
Support for Delphi 10 Seattle
Win64 v3.232
An issue has been fixed that had prevented win64 EXEs from running once a certain amount of *.whteko code was involved. Source: QuickObjectSort in webStLst.pas
ucPos standalone unit v3.232
The TPack unit ucPos.pas has been changed such that the functions that required other units (notably ucString for UTF8String processing) are now isolated in ucPos8.pas. The latter ships with full-source for WebHub.
tpProj simplified a little v3.232
The ManageExit code within tpProj.pas has been simplified a little. The overall effect is the same.
NexusDB app object added v3.233
A NexusDB application object exists now with similar features to the BDE app object. In particular, it includes an interface for supplying some or all of the WHTEKO content from a database table.
Core Fix for Hub auto-start of App v3.233
Symptom: a WebHub EXE compiled as-service starts and connects and serves pages fine when started manually, but when the same EXE is auto-started by the Hub noticing that an instance was lacking, the EXE starts but fails to connect or serve pages. Furthermore, connection-status messages after that point can be spurious.
Fix: after recompiling with v3.233, the EXE connects fine in all circumstances.
Logging v3.234
New method: LogSendNote uses either CodeSite logging or HREFTestLog disk file logging depending on how you compile.
Overloaded method: LogSendInfo can take an optional first parameter which is the message "type" code. This is relevant when compiling with CodeSite because it determines the color of the message in the viewer utility.
Quicker Shutdown v3.235
Tiny changes were made to the logic in tpApplic.pas and tpProj.pas to enable faster shutdown of WebHub EXEs.
Last release for D16 v3.235
WebHub v3.235 is the last release for Delphi XE2 (D16).
No support for old-ipc v3.236
If you have this include statement in your code, {$I WebHub_Comms.inc}, you must erase it because that WebHub_Comms.inc file is no longer provided nor relevant.
If you have any IFDEF statements involving WEBHUBACE, those must be removed. Example IFDEF WEBHUBACE or IFNDEF WEBHUBACE. Keep only the positive IFDEF WEBHUBACE code.
The following units are no longer shipping with WebHub because they are not relevant for new-ipc. Erase from your uses clause if you have them listed. apiStat, apiBuilt, apiCall, cgiVars, ipcMail.
This method is obsolete - erase references to it: InitMenuActionsForConnection
No support for Dot Net v3.236
A significant amount of code was in WebHub in order to support Delphi for Dot Net "CLR", which has been discontinued. Those unused code blocks have been removed from all units except NativeXml.pas.
HTTP/HTTPS neutral URLs supported in whmacros v3.237
For graphics, javascript, css files and other static resources, using a URL that is either fixed on HTTPS or one that picks up on the base protocol of the main page is required for making pages that browsers see as fully secure. (Firefox, for example, gives a different icon if you do not have 100% https resources on a page.) A great explanation about the protocol-relative URL is here. The protocol-relative syntax could be used in WebHub within a droplet but not in a whmacro or at the beginning of a parameter to a WebHub command such as MATCH, through WebHub v3.236, because the double-slash was seen to indicate a comment. As of v3.237, // with the space indicates a comment and '//' itself can be used for a protocol-relative web address.
This means that if you used double-slash to indicate comments in your WHTEKO code, you should make sure that you have at least one space after the // symbols in all your files. Without the space, the code following the double-slash will be sent through to the dynamic web pages. This is great if you want to use protocol-relative URLs but not if you meant to hide some notes to yourself.
This is a helpful RegEx to look for // that are worth review: [^:"']//[^ ]
Fix for rare slow file i/o v3.238
On some systems, sometimes, the input data file has not be ready by the time the app was ready to use it. The app now allows for this with an extra delay only when the situation occurs.
If your application log files showed warnings with "suspect bad cookie encoding" then this adjustment should help you.
Evaluation Nag Screen Removed v3.238
These units are obsolete: webMind, webInfoUGUI

The Hub

Binary compiled with D23 v3.232
Hub.exe is compiled with Delphi DX10
IPC Fix v3.233
A problem has been fixed which showed up when more than one custom WebHub EXE connected to the Hub and the Hub started the additional instance as-service.
IPC Fix v3.234
A problem has been fixed which showed up when the Guardian feature of the Hub was used to start service instances. The count of active instances was 1 too high after the Hub launched a service; after that, the Guardian did not restart instances for the AppID correctly.
IPC Fix v3.235
If a WebHub EXE is end-tasked or otherwise terminates without gracefully disconnecting from the Hub, and any AppIDs are being guarded for minimum instance counts, then the Hub will notice that the EXE is gone when it runs through its guardian cycle, e.g. every N seconds where N is configurable between 14 and 360 seconds.
Last old-ipc binary v2.235
WebHub v2.235 is the last old-ipc release.
Details about how to convert from 2.x to 3.x are in the README file for the Components, under v2.150, 20-Oct-2011.
IPC Optimization v3.236
A substantial internal change has been made to the way apps and runners connect to The Hub as of v3.236.
The Hub v3.236 MUST be used with runners v3.236 and custom WebHub EXEs compiled with components v3.236.
Active/Inactive optional; XSD change v3.236
AppIDs and RunnerIDs can be optionally marked inactive. This results in a tiny memory saving in the Hub and is only relevant on systems with a high proportion of apps that are on-hold/inactive.
The xsd date for WHCentralInfo.xml and WHNetworkInfo.xml is 201511.
Binaries compiled 64-bit v3.238
Hub.exe and WebHubAdmin.exe are compiled with Delphi DX10 for win64.
HREF Tools has been using the 64-bit Hub on its servers for more than 6 months. Now it will be shipped by default for all customers.
Binaries elevated v3.238
WebHubAdmin.exe will automatically request elevated permission due to the inclusion of a manifest.
Hub configuration v3.238
You can enable logging within the Hub by setting the LoggingLevel. By default, the logging level is 'none'. Any logging requires that CodeSite Dispatcher runs before The Hub starts. The keywords for logging level are those defined in ucCodeSiteInterface and available for custom WebHub applications. The recommendation for production servers is "none" or "errors,exceptions". (To install CSDispatcher as a service: CSDispatcher.exe -install. It will start automatically when Windows reboots, but not when first installed.)
The HubAppID is no longer displayed in ZMAdmin. It is not used in WebHub v3.
The xsd date for WHCentralInfo.xml is 201512.
WH Runtime Setup v3.239
No attempt is made to reset the XSD file date for inactive AppIDs.

WebHub Runners

Anti-phishing v3.231
Invisible whitespace is stripped from all incoming data processed through the runner as of v3.231.
This cleans up intentional or accidental data entry errors that can propagate when a source document contains an invisible space symbol (e.g. email address contained in PDF on Mac copy+paste to HTML field in Safari on Mac).
status 403 changed to 211 v3.231
WebHub situation messages are no longer sent with status 403. They are now sent with status 211.
A positive side-effect is that IIS errors do not need to be "Detailed" in order to see the situation message. This makes it possible to have Custom IIS errors such as overrides for 404 Not Found, etc.
Binary compiled with D23 v3.232
The ISAPI and cgi-bin runners are compiled with Delphi DX10 Seattle.
File upload over long distance/time v3.239
A problem has been fixed where uploads taking longer than the timeout failed to reach the app. For example, if the timeout were 30 seconds, and a 6.2MB file took 80 seconds to upload (going long distance or very slow pipe), the file would end up in the upload folder but the app would never receive a call and the browser would receive a timeout message.