summaryrefslogtreecommitdiff
path: root/packages/fcl-web/src
diff options
context:
space:
mode:
authormichael <michael@3ad0048d-3df7-0310-abae-a5850022a9f2>2010-08-03 08:39:55 +0000
committermichael <michael@3ad0048d-3df7-0310-abae-a5850022a9f2>2010-08-03 08:39:55 +0000
commit1409566da2c0b68f6d7549726f2835de156e403d (patch)
treeccf8621ebabe52560bc5d9fbd92383d14c441bd6 /packages/fcl-web/src
parent035f6293e6eb017a8cdb8a9ad9b2f5a1680d112c (diff)
downloadfpc-1409566da2c0b68f6d7549726f2835de156e403d.tar.gz
* Fixed never-ending CGI scripts
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@15698 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/fcl-web/src')
-rw-r--r--packages/fcl-web/src/base/custweb.pp23
1 files changed, 22 insertions, 1 deletions
diff --git a/packages/fcl-web/src/base/custweb.pp b/packages/fcl-web/src/base/custweb.pp
index 0699be6c07..a6424feed5 100644
--- a/packages/fcl-web/src/base/custweb.pp
+++ b/packages/fcl-web/src/base/custweb.pp
@@ -96,6 +96,7 @@ Type
FRedirectOnError : Boolean;
FRedirectOnErrorURL : String;
FTitle: string;
+ FOnTerminate : TNotifyEvent;
protected
procedure Terminate;
Function GetModuleName(Arequest : TRequest) : string;
@@ -152,6 +153,7 @@ Type
procedure SetOnShowRequestException(const AValue: TOnShowRequestException);
procedure SetRedirectOnError(const AValue: boolean);
procedure SetRedirectOnErrorURL(const AValue: string);
+ procedure DoOnTerminate(Sender : TObject);
protected
Procedure DoRun; override;
function InitializeWebHandler: TWebHandler; virtual; abstract;
@@ -163,7 +165,7 @@ Type
Procedure CreateForm(AClass : TComponentClass; out Reference);
Procedure Initialize; override;
Procedure Log(EventType: TEventType; const Msg: String); override;
-
+ procedure Terminate; override;
Property HandleGetOnPost : Boolean Read GetHandleGetOnPost Write SetHandleGetOnPost;
Property RedirectOnError : boolean Read GetRedirectOnError Write SetRedirectOnError;
Property RedirectOnErrorURL : string Read GetRedirectOnErrorURL Write SetRedirectOnErrorURL;
@@ -339,6 +341,8 @@ end;
procedure TWebHandler.Terminate;
begin
FTerminated := true;
+ If Assigned(FOnTerminate) then
+ FOnTerminate(Self);
end;
function TWebHandler.GetModuleName(Arequest: TRequest): string;
@@ -553,6 +557,13 @@ end;
constructor TCustomWebApplication.Create(AOwner: TComponent);
begin
FWebHandler := InitializeWebHandler;
+ FWebHandler.FOnTerminate:=@DoOnTerminate;
+end;
+
+procedure TCustomWebApplication.DoOnTerminate(Sender : TObject);
+begin
+ If Not Terminated then
+ Terminate;
end;
destructor TCustomWebApplication.Destroy;
@@ -578,4 +589,14 @@ begin
EventLog.log(EventType,Msg);
end;
+Procedure TCustomWebApplication.Terminate;
+
+begin
+ Inherited;
+ If Not Webhandler.FTerminated then
+ WebHandler.Terminate;
+end;
+
+
end.
+