WebHub Object Pascal Components
- TtpSleeperThread Guaranteed Exit v3.280
- WebHub apps which have intermittent trouble exiting can use one of their OnDestroy event handlers in datamodule to call
AtomicExchange(iTPackApplicationTerminating, 1 ); // uses tpShareB and that will guarantee that all the sleeper threads exit when
the EXE closes down.
- Delphi 10.4.2 support v3.280
- Recompiled with 10.4.2
- Response Stream AutoCreate v3.280
- The TwhResponseStream.AutoCreate method has been made more robust with retry logic to sidestep file-in-use issues.
- App HeartBeat v3.280
- The app now writes its heartbeat file after a maximum of 60 seconds of sustained traffic.
- TwhConnection.Heartbeat in webCall.pas
- Delphi 11.0 support v3.281
- Full support for latest compiler which is Delphi 11 Alexandria.
- Fixed: SetContentType v3.281
WebApp.Response.SetContentType( proJS, ''); now works. Previously the content type remained HTML unless you used the SETPROLOGUETYPE command.
- Error EB507 if PAGE macro used to run a page in design or scaffold mode v3.282
- Symptom: calling a page that used the PAGE macro to run another page, which itself was in scaffold mode, left the Content-Type blank. This
had little consequence unless header
x-content-type-options: nosniff was used.
- Advice: for any whpage definitions in scaffold mode,
change the WHTEKO code, and replace the PAGE call with: FLUSH, calling the page as a droplet (plus its automatic header and footer as required), followed by CLOSE.
- The browser will now receive an empty response, and the error log will mention EB507 and indicate which PageID is in which limiting mode.
- Source: TwhRespondingApp.DoAPage in webSend.pas
- Refactored TwhBasicResponse.HtmlHeader v3.282
- The prologuemode on the TwhPage takes precedence over any on the Response object at runtime.
- Increased security when PAGE macro called v3.282
- Flush prior page content before starting next page, just in case an exception is raised on the next page.
- ContentTypeHeader sends Untitled instead of a blank string v3.282
- Delphi 11.1 support v3.282
- Full support on win32 for latest compiler which is Delphi 11.1
- Delphi 11.1 win64 support v3.283
- Full support on win32 and win64 with Delphi 11.1, running with or without runtime packages.
- Two win64 issues were fixed in unit Cromis.DirectoryWatch.pas, specific to win64 with runtime packages.
- Test project: webhubdemos\Source\StandaloneDemos\DirWatch_Test\DirWatch_Test.dpr
- Delphi 11.1 win64 support v3.284
Symptom: your custom EXEs start, but after a relatively short time with incoming traffic,
whadmin report connected shows that one or more of your EXE instances is
closed instead of open,
and the EXE will not answer any more requests until restarted. This is due to an A/V in the webCall unit.
- For D28, there is no longer a check on the memory address of the WebAppOutput object. For earlier versions, the check has been maintained as-was except that it now uses NativeInt instead of Integer, which removes false negatives
- Clearing D28 compiler warnings, unit by unit v3.284
- These units compile in Delphi 11.1 without warnings on win32 and win64: Cromis.DirectoryWatch, MultiTypeApp, MultiTypeAppSvc, tpStreams,
ucInteg, ucPos, ucShell, ucURLEncode, ucString8, ucVers, uCode, ZM_UTF8StringUtils.
- Moving away from Indy within ucHttps.pas utility code v3.284
- In TPack ucHttps.pas, the DownloadFile, HTTPSGet and HTTPSGetFile functions have been refactored to remove the dependencies on the urlmon unit, Internet Explorer settings, Indy and OpenSSL DLLs. Instead these now make use of the Delphi Net.HttpClientComponent unit.
- HTTPSPost refactoring is pending.
- ucJsonWrapper.pas works better with Delphi 10.4.x and 11.x v3.284
- In TPack, ucJSONWrapper.pas has been updated to better support D27 and D28. All DUnitX tests pass on win32 and win64 for D26 through D28.
- Nonetheless, if you call VarJSONParse too often with the same Variant on the stack, you can run into Access Violations in Delphi 11.1. Unresolved.
- Delphi 11.2 support v3.285
- Full support for latest compiler which is Delphi 11.2
- For win32 only, the WebHub units that require BDE do compile if you have installed the Delphi BDE components yourself, locally.
- File Upload v3.280
- For files larger than 48kb, if the ReadClient calls fail prior to the expected full content-size arriving, an error is logged.
- Sustained High Traffic v3.280
- An issue has been fixed which had been preventing the runner from sustaining continual high traffic.
- The symptom had been that AppNotRunning situation was reported erroneously.
- Timeout situation issued when runner cannot open required response from App v3.280
- In rare circumstances, the runner may try to use the response from the App yet find no file. Previously this led to crashes within w3wp.exe.
Now the runner issues the timeout situation message.
- Runisa.dll supports DEP and ASLR v3.282
- Runisa.dll IPC improved v3.283