summaryrefslogtreecommitdiff
path: root/packages/fcl-web/src
diff options
context:
space:
mode:
authormichael <michael@3ad0048d-3df7-0310-abae-a5850022a9f2>2010-08-06 09:06:44 +0000
committermichael <michael@3ad0048d-3df7-0310-abae-a5850022a9f2>2010-08-06 09:06:44 +0000
commit83be0adcbfbfff6d8ca2dc5eabb15025c72e274e (patch)
treec0f6c24e841275ed63ccd66ceac8d67357878c16 /packages/fcl-web/src
parent5bde1e5a459806cb9b234692af10bc12edefc22a (diff)
downloadfpc-83be0adcbfbfff6d8ca2dc5eabb15025c72e274e.tar.gz
* Correct check for Session in checksession, and do not create same session cookie twice
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@15720 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/fcl-web/src')
-rw-r--r--packages/fcl-web/src/base/websession.pp14
1 files changed, 9 insertions, 5 deletions
diff --git a/packages/fcl-web/src/base/websession.pp b/packages/fcl-web/src/base/websession.pp
index 99d1f00d2d..d5dab8da0b 100644
--- a/packages/fcl-web/src/base/websession.pp
+++ b/packages/fcl-web/src/base/websession.pp
@@ -14,7 +14,7 @@
unit websession;
{$mode objfpc}{$H+}
-{ $define cgidebug}
+{$define cgidebug}
interface
uses
@@ -283,8 +283,12 @@ begin
If FSessionStarted then
begin
{$ifdef cgidebug}SendDebug('Session started');{$endif}
- C:=AResponse.Cookies.Add;
- C.Name:=SessionCookie;
+ C:=AResponse.Cookies.FindCookie(SessionCookie);
+ If (C=Nil) then
+ begin
+ C:=AResponse.Cookies.Add;
+ C.Name:=SessionCookie;
+ end;
C.Value:=SID;
C.Path:=FSessionCookiePath;
end
@@ -350,8 +354,8 @@ begin
begin
If (FSession=Nil) then
FSession:=GetDefaultSession;
- if Assigned(Session) then
- Session.InitSession(ARequest,FOnNewSession,FOnSessionExpired);
+ if Assigned(FSession) then
+ FSession.InitSession(ARequest,FOnNewSession,FOnSessionExpired);
end;
{$ifdef cgidebug}SendMethodExit('SessionHTTPModule('+Name+').CheckSession');{$endif}
end;