richter 02/02/26 12:14:44
Modified: . Tag: Embperl2c embperl.h ep.h ep2.h epapinit.c
epcgiinit.c epdat2.h epinit.c epmain.c eputil.c
test/conf Tag: Embperl2c startup.pl
xsbuilder/maps Tag: Embperl2c ep_structure.map
Log:
session handling
Revision Changes Path
No revision
No revision
1.19.4.20 +1 -4 embperl/embperl.h
Index: embperl.h
===================================================================
RCS file: /home/cvs/embperl/embperl.h,v
retrieving revision 1.19.4.19
retrieving revision 1.19.4.20
diff -u -r1.19.4.19 -r1.19.4.20
--- embperl.h 6 Feb 2002 09:21:07 -0000 1.19.4.19
+++ embperl.h 26 Feb 2002 20:14:42 -0000 1.19.4.20
@@ -10,7 +10,7 @@
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
-# $Id: embperl.h,v 1.19.4.19 2002/02/06 09:21:07 richter Exp $
+# $Id: embperl.h,v 1.19.4.20 2002/02/26 20:14:42 richter Exp $
#
###################################################################################*/
@@ -165,9 +165,6 @@
optOpenLogEarly = 0x200000,
optNoUncloseWarn = 0x400000,
optDisableSelectScan = 0x800000,
- optAddUserSessionToLinks = 0x1000000,
- optAddStateSessionToLinks = 0x2000000,
- optNoSessionCookies = 0x4000000,
optShowBacktrace = 0x8000000
} ;
1.27.4.45 +3 -1 embperl/ep.h
Index: ep.h
===================================================================
RCS file: /home/cvs/embperl/ep.h,v
retrieving revision 1.27.4.44
retrieving revision 1.27.4.45
diff -u -r1.27.4.44 -r1.27.4.45
--- ep.h 26 Feb 2002 08:48:42 -0000 1.27.4.44
+++ ep.h 26 Feb 2002 20:14:42 -0000 1.27.4.45
@@ -594,7 +594,9 @@
/*in*/ const char * sData,
/*in*/ const char * sSeparator) ;
HV * embperl_String2HV (/*in*/ tApp * a,
- /*in*/ const char * sData) ;
+ /*in*/ const char * sData,
+ /*in*/ char cSeparator,
+ /*in*/ HV * pHV) ;
/* ---- from epeval.c ----- */
1.1.2.30 +7 -1 embperl/Attic/ep2.h
Index: ep2.h
===================================================================
RCS file: /home/cvs/embperl/Attic/ep2.h,v
retrieving revision 1.1.2.29
retrieving revision 1.1.2.30
diff -u -r1.1.2.29 -r1.1.2.30
--- ep2.h 25 Feb 2002 11:20:25 -0000 1.1.2.29
+++ ep2.h 26 Feb 2002 20:14:42 -0000 1.1.2.30
@@ -10,7 +10,7 @@
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
-# $Id: ep2.h,v 1.1.2.29 2002/02/25 11:20:25 richter Exp $
+# $Id: ep2.h,v 1.1.2.30 2002/02/26 20:14:42 richter Exp $
#
###################################################################################*/
@@ -288,6 +288,12 @@
+#ifdef XALAN
+ embperl_Xalan_Init (void) ;
+#endif
+#ifdef LIBXSLT
+ embperl_LibXSLT_Init (void) ;
+#endif
1.1.2.21 +28 -2 embperl/epapinit.c
Index: epapinit.c
===================================================================
RCS file: /home/cvs/embperl/epapinit.c,v
retrieving revision 1.1.2.20
retrieving revision 1.1.2.21
diff -u -r1.1.2.20 -r1.1.2.21
--- epapinit.c 26 Feb 2002 08:48:42 -0000 1.1.2.20
+++ epapinit.c 26 Feb 2002 20:14:42 -0000 1.1.2.21
@@ -10,7 +10,7 @@
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
-# $Id: epapinit.c,v 1.1.2.20 2002/02/26 08:48:42 richter Exp $
+# $Id: epapinit.c,v 1.1.2.21 2002/02/26 20:14:42 richter Exp $
#
###################################################################################*/
@@ -274,6 +274,26 @@
return ok ;
}
+struct addcookie
+ {
+ tApp * pApp ;
+ tReqParam * pParam ;
+ } ;
+
+static int embperl_AddCookie (/*in*/ void * s, const char * pKey, const char *
pValue)
+
+ {
+ tApp * a = ((struct addcookie *)s) -> pApp ;
+ epaTHX_
+ HV * pHV ;
+
+ if (!(pHV = ((struct addcookie *)s) -> pParam -> pCookies))
+ pHV = ((struct addcookie *)s) -> pParam -> pCookies = newHV () ;
+
+ embperl_String2HV(a, pValue, ';', pHV) ;
+
+ return 1 ;
+ }
int embperl_GetApacheReqParam (/*in*/ tApp * pApp,
@@ -283,8 +303,11 @@
{
+ tApp * a = pApp ;
+ epaTHX_
char * p ;
-
+ struct addcookie s = { a, pParam} ;
+
pParam -> sFilename = r -> filename ;
pParam -> sUnparsedUri = r -> unparsed_uri ;
pParam -> sUri = r -> uri ;
@@ -299,6 +322,9 @@
p++ ;
*p = '\0' ;
}
+
+ ap_table_do (embperl_AddCookie, &s, r -> headers_in, "Cookie", NULL) ;
+
return ok ;
}
1.1.2.12 +13 -3 embperl/Attic/epcgiinit.c
Index: epcgiinit.c
===================================================================
RCS file: /home/cvs/embperl/Attic/epcgiinit.c,v
retrieving revision 1.1.2.11
retrieving revision 1.1.2.12
diff -u -r1.1.2.11 -r1.1.2.12
--- epcgiinit.c 26 Feb 2002 08:48:42 -0000 1.1.2.11
+++ epcgiinit.c 26 Feb 2002 20:14:42 -0000 1.1.2.12
@@ -10,7 +10,7 @@
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
-# $Id: epcgiinit.c,v 1.1.2.11 2002/02/26 08:48:42 richter Exp $
+# $Id: epcgiinit.c,v 1.1.2.12 2002/02/26 20:14:42 richter Exp $
#
###################################################################################*/
@@ -73,14 +73,14 @@
}
#undef EPCFG_HV
-#define EPCFG_AV(STRUCT,TYPE,NAME,CFGNAME) \
+#define EPCFG_HV(STRUCT,TYPE,NAME,CFGNAME) \
{ \
char * arg ; \
tainted = 0 ; \
arg = GetHashValueStr (aTHX_ pThread -> pEnvHash, "EMBPERL_"#CFGNAME, NULL) ; \
tainted = 0 ; \
if (arg) \
- pConfig -> NAME = embperl_String2HV(pApp, arg) ;\
+ pConfig -> NAME = embperl_String2HV(pApp, arg, ' ', NULL) ;\
tainted = 0 ; \
}
@@ -213,6 +213,16 @@
while (isalpha(*p))
p++ ;
*p = '\0' ;
+ }
+
+ p = GetHashValueStr (aTHX_ pThread -> pEnvHash, "HTTP_COOKIE", NULL) ;
+ if (p)
+ {
+ HV * pHV ;
+ if (!(pHV = pParam -> pCookies))
+ pHV = pParam -> pCookies = newHV () ;
+
+ embperl_String2HV(pApp, p, ';', pHV) ;
}
return ok ;
1.1.2.28 +5 -2 embperl/Attic/epdat2.h
Index: epdat2.h
===================================================================
RCS file: /home/cvs/embperl/Attic/epdat2.h,v
retrieving revision 1.1.2.27
retrieving revision 1.1.2.28
diff -u -r1.1.2.27 -r1.1.2.28
--- epdat2.h 26 Feb 2002 08:48:42 -0000 1.1.2.27
+++ epdat2.h 26 Feb 2002 20:14:42 -0000 1.1.2.28
@@ -10,7 +10,7 @@
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
-# $Id: epdat2.h,v 1.1.2.27 2002/02/26 08:48:42 richter Exp $
+# $Id: epdat2.h,v 1.1.2.28 2002/02/26 20:14:42 richter Exp $
#
###################################################################################*/
@@ -114,6 +114,7 @@
char * sPathInfo ;
char * sQueryInfo ;
char * sLanguage ; /**< Language for the current request */
+ HV * pCookies ; /**< Received Cookies */
} tReqParam ;
typedef struct tAppConfig
@@ -360,7 +361,9 @@
int nIOType ;
int nSessionMgnt ; /* how to retrieve the session id */
- char * sSessionID ; /* stores session name and id for status session
data */
+ char * sSessionID ; /**< stores session name and id for status session
data */
+ char * sSessionUserID ; /**< received id of user session data */
+ char * sSessionStateID ; /**< received id of state session data */
int bExit ; /**< We should exit the request */
long nLogFileStartPos ; /**< file position of logfile, when logfile started
*/
1.1.2.30 +87 -34 embperl/Attic/epinit.c
Index: epinit.c
===================================================================
RCS file: /home/cvs/embperl/Attic/epinit.c,v
retrieving revision 1.1.2.29
retrieving revision 1.1.2.30
diff -u -r1.1.2.29 -r1.1.2.30
--- epinit.c 26 Feb 2002 08:48:42 -0000 1.1.2.29
+++ epinit.c 26 Feb 2002 20:14:42 -0000 1.1.2.30
@@ -10,7 +10,7 @@
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
-# $Id: epinit.c,v 1.1.2.29 2002/02/26 08:48:42 richter Exp $
+# $Id: epinit.c,v 1.1.2.30 2002/02/26 20:14:42 richter Exp $
#
###################################################################################*/
@@ -233,38 +233,50 @@
static int embperl_CreateSessionObject(/*in*/ tApp * a,
- /*in*/ SV * pArgs,
- /*out*/ SV * * ppHash,
+ /*in*/ HV * pArgs,
+ /*out*/ HV * * ppHash,
/*out*/ SV * * ppObj)
{
epaTHX_
dSP ;
-
- char * sPackage = a -> sSessionHandlerClass ;
+ tAppConfig * pCfg = &a -> Config ;
+ char * sPackage = pCfg -> sSessionHandlerClass ;
HV * pHash = newHV () ;
SV * pTie = newRV_noinc((SV *)newHV()) ;
- hv_magic(pHash, pTie, 'P') ;
+ int n ;
+
+ /*
+ perl_require_pv (sPackage) ;
+ if (SvTRUE (ERRSV))
+ {
+ STRLEN l ;
+ LogErrorParam (a, rcEvalErr, SvPV (ERRSV, l), NULL) ;
+ sv_setpv(ERRSV,"");
+ return rcEvalErr ;
+ }
+ */
+
+ hv_magic(pHash, (GV *)pTie, 'P') ;
PUSHMARK(sp);
XPUSHs(sv_2mortal(newSVpv(sPackage, 0)));
XPUSHs(&sv_undef); /* id */
- XPUSHs(pArgs);
+ XPUSHs(sv_2mortal (newRV((SV *)pArgs)));
PUTBACK;
n = perl_call_method ("TIEHASH", G_EVAL) ;
if (SvTRUE (ERRSV))
{
STRLEN l ;
- strncpy (r -> errdat1, SvPV (ERRSV, l), sizeof (r -> errdat1) - 1) ;
+ LogErrorParam (a, rcEvalErr, SvPV (ERRSV, l), NULL) ;
sv_setpv(ERRSV,"");
- return rcEvalError ;
+ return rcEvalErr ;
}
if (n > 0)
pTie = POPs ;
if (n == 0 || !SvROK(pTie))
{
- strncpy (r -> errdat1, "Session handling", sizeof (r -> errdat1) - 1) ;
- strncpy (r -> errdat1, sPackage, sizeof (r -> errdat1) - 1) ;
+ LogErrorParam (a, rcNotHashRef, "Session handling", sPackage) ;
return rcNotHashRef ;
}
@@ -307,43 +319,44 @@
SV ** ppSerializer ;
SV * pGenerator ;
SV ** ppGenerator ;
- HV * pArgs = a -> pSessionArgs ;
+ tAppConfig * pCfg = &a -> Config ;
+ HV * pArgs = pCfg -> pSessionArgs ;
HV * pArgs1 ;
HV * pArgs2 ;
HV * pArgs3 ;
if (!pArgs)
- a -> pSessionArgs = pArgs = newHV() ;
+ pCfg -> pSessionArgs = pArgs = newHV() ;
- if (a -> pSessionClasses)
+ if (pCfg -> pSessionClasses)
{
- if ((ppStore = av_fetch (a -> pSessionClasses, 0, 0)))
+ if ((ppStore = av_fetch (pCfg -> pSessionClasses, 0, 0)))
pStore = *ppStore ;
if (!pStore)
pStore = sv_2mortal(newSVpv("File", 4)) ;
hv_store (pArgs, "Store", 5, pStore, 0) ;
- if ((ppLocker = av_fetch (a -> pSessionClasses, 1, 0)))
+ if ((ppLocker = av_fetch (pCfg -> pSessionClasses, 1, 0)))
pLocker = *ppLocker ;
if (!pLocker)
pLocker = sv_2mortal(newSVpv("Null", 4)) ;
hv_store (pArgs, "Locker", 6, pLocker, 0) ;
- if ((ppSerializer = av_fetch (a -> pSessionClasses, 2, 0)))
+ if ((ppSerializer = av_fetch (pCfg -> pSessionClasses, 2, 0)))
pSerializer = *ppSerializer ;
if (!pSerializer)
pSerializer = sv_2mortal(newSVpv("Storable", 8)) ;
hv_store (pArgs, "Serialize", 9, pSerializer, 0) ;
- if ((ppGenerator = av_fetch (a -> pSessionClasses, 3, 0)))
+ if ((ppGenerator = av_fetch (pCfg -> pSessionClasses, 3, 0)))
pGenerator = *ppGenerator ;
if (!pGenerator)
pGenerator = sv_2mortal(newSVpv("MD5", 3)) ;
hv_store (pArgs, "Generate", 8, pGenerator, 0) ;
}
- if (a -> sSessionConfig)
- hv_store (pArgs, "config", 5, newSVpv (a -> sSessionConfig, 0), 0) ;
+ if (pCfg -> sSessionConfig)
+ hv_store (pArgs, "config", 5, newSVpv (pCfg -> sSessionConfig, 0), 0) ;
hv_store (pArgs, "lazy", 4, newSViv (1), 0) ;
hv_store (pArgs, "create_unknown", 14, newSViv (1), 0) ;
@@ -351,19 +364,19 @@
pArgs1 = newHVhv(pArgs) ;
hv_store (pArgs1, "Transaction", 11, newSViv (1), 0) ;
- if ((rc = embperl_CreateSessionObject (a, pArgs1, pApp -> pModHash, pApp ->
pModObj)) != ok)
+ if ((rc = embperl_CreateSessionObject (a, pArgs1, &a -> pAppHash, &a ->
pAppObj)) != ok)
return rc ;
pArgs2 = newHVhv(pArgs) ;
hv_store (pArgs2, "recreate_id", 11, newSViv (1), 0) ;
pArgs3 = newHVhv(pArgs2) ;
- if ((rc = embperl_CreateSessionObject (a, pArgs2, pApp -> pUserHash, pApp ->
pUserObj)) != ok)
+ if ((rc = embperl_CreateSessionObject (a, pArgs2, &a -> pUserHash, &a ->
pUserObj)) != ok)
return rc ;
hv_store (pArgs3, "newid", 5, newSViv (1), 0) ;
- if ((rc = embperl_CreateSessionObject (a, pArgs3, pApp -> pStateHash, pApp ->
pStateObj)) != ok)
+ if ((rc = embperl_CreateSessionObject (a, pArgs3, &a -> pStateHash, &a ->
pStateObj)) != ok)
return rc ;
@@ -457,7 +470,6 @@
pApp -> pThread = pThread ;
- *ppApp = pApp ;
if (pApp -> Config.sLog && pApp -> Config.sLog[0])
{
@@ -468,11 +480,7 @@
}
}
- if ((rc = embperl_SetupSessionObjects (pApp)) != ok)
- {
- LogErrorParam (pApp, rc, NULL, NULL) ;
- return rc ;
- }
+ embperl_SetupSessionObjects (pApp) ;
}
*ppApp = pApp ;
@@ -864,7 +872,17 @@
{ /* remove session id */
if (strncmp (pKey, sid, nKey) != 0)
sid = NULL ;
- }
+ else
+ {
+ char * p = strchr(pVal, ':') ;
+ if (p)
+ {
+ r -> sSessionUserID = ep_pstrdup (r -> pPool, p +
1) ;
+ *p = '\0' ;
+ }
+ r -> sSessionStateID = ep_pstrdup (r -> pPool, pVal) ;
+ }
+ }
if (sid == NULL)
{ /* field is not the session id */
@@ -1063,6 +1081,8 @@
SV * pRV ;
tReqConfig * pConfig ;
tReqParam * pParam ;
+ char * pCookieName ;
+ dSP ;
#ifdef APACHE
request_rec * pApacheReq ;
@@ -1141,10 +1161,24 @@
r -> pMessages = newAV () ;
r -> pDefaultMessages = newAV () ;
- /*
- int nSessionMgnt ;
- char * sSessionID ;
- */
+ pCookieName = r -> pApp -> Config.sCookieName ;
+ if (pCookieName)
+ { /* remove session id */
+ char * pVal = GetHashValueStr (aTHX_ r -> Param.pCookies, pCookieName,
NULL) ;
+ if (pVal)
+ {
+ char * p = strchr(pVal, ':') ;
+ if (p)
+ {
+ r -> sSessionUserID = ep_pstrdup (r -> pPool, p + 1) ;
+ *p = '\0' ;
+ }
+ r -> sSessionStateID = ep_pstrdup (r -> pPool, pVal) ;
+ }
+ }
+
+ if (r -> pApp -> pUserHash)
+ r -> nSessionMgnt = 1 ;
r -> nLogFileStartPos = GetLogFilePos (pApp) ;
@@ -1152,6 +1186,25 @@
embperl_SetupFormData (r) ;
+ if (r -> sSessionUserID)
+ {
+ PUSHMARK(sp);
+ XPUSHs(pApp -> pUserObj);
+ XPUSHs(sv_2mortal(newSVpv(r -> sSessionUserID, 0)));
+ PUTBACK;
+ perl_call_method ("setid", 0) ;
+ }
+
+ if (r -> sSessionStateID)
+ {
+ PUSHMARK(sp);
+ XPUSHs(pApp -> pStateObj);
+ XPUSHs(sv_2mortal(newSVpv(r -> sSessionStateID, 0)));
+ PUTBACK;
+ perl_call_method ("setid", 0) ;
+ }
+
+
pThread -> pCurrReq = r ;
pApp -> pCurrReq = r ;
sv_setsv(pThread -> pReqRV, r -> _perlsv) ;
1.75.4.102 +32 -39 embperl/epmain.c
Index: epmain.c
===================================================================
RCS file: /home/cvs/embperl/epmain.c,v
retrieving revision 1.75.4.101
retrieving revision 1.75.4.102
diff -u -r1.75.4.101 -r1.75.4.102
--- epmain.c 25 Feb 2002 11:20:26 -0000 1.75.4.101
+++ epmain.c 26 Feb 2002 20:14:43 -0000 1.75.4.102
@@ -10,7 +10,7 @@
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
-# $Id: epmain.c,v 1.75.4.101 2002/02/25 11:20:26 richter Exp $
+# $Id: epmain.c,v 1.75.4.102 2002/02/26 20:14:43 richter Exp $
#
###################################################################################*/
@@ -456,14 +456,13 @@
static SV * CreateSessionCookie (/*i/o*/ register req * r,
- /*in*/ HV * pSessionHash,
+ /*in*/ SV * pSessionObj,
/*in*/ char type,
/*in*/ int bReturnCookie)
{
SV * pSVID = NULL ;
SV * pSVUID = NULL ;
- MAGIC * pMG ;
char * pUID = NULL ;
char * pInitialUID = NULL ;
STRLEN ulen = 0 ;
@@ -475,34 +474,29 @@
if (r -> nSessionMgnt)
{
- SV * pUserHashObj = NULL ;
- if ((pMG = mg_find((SV *)pSessionHash,'P')))
+ dSP; /* initialize stack pointer */
+ int n ;
+
+ PUSHMARK(sp); /* remember the stack pointer */
+ XPUSHs(pSessionObj) ; /* push pointer to obeject */
+ XPUSHs(sv_2mortal(newSViv(bReturnCookie?0:1))) ; /* init session if not
for cookie */
+ PUTBACK;
+ n = perl_call_method ("getids", G_ARRAY) ; /* call the function */
+ SPAGAIN;
+ if (n > 2)
{
- dSP; /* initialize stack pointer */
- int n ;
- pUserHashObj = pMG -> mg_obj ;
-
- PUSHMARK(sp); /* remember the stack pointer */
- XPUSHs(pUserHashObj) ; /* push pointer to obeject */
- XPUSHs(sv_2mortal(newSViv(bReturnCookie?0:1))) ; /* init session if
not for cookie */
- PUTBACK;
- n = perl_call_method ("getids", G_ARRAY) ; /* call the function
*/
- SPAGAIN;
- if (n > 2)
- {
- int savewarn = dowarn ;
- dowarn = 0 ; /* no warnings here */
- bModified = POPi ;
- pSVUID = POPs;
- pUID = SvPV (pSVUID, ulen) ;
- pSVID = POPs;
- pInitialUID = SvPV (pSVID, ilen) ;
- dowarn = savewarn ;
- }
- PUTBACK;
+ int savewarn = dowarn ;
+ dowarn = 0 ; /* no warnings here */
+ bModified = POPi ;
+ pSVUID = POPs;
+ pUID = SvPV (pSVUID, ulen) ;
+ pSVID = POPs;
+ pInitialUID = SvPV (pSVID, ilen) ;
+ dowarn = savewarn ;
}
+ PUTBACK;
- if (r -> Component.Config.bDebug & dbgSession)
+ if (r -> Config.bDebug & dbgSession)
lprintf (r -> pApp, "[%d]SES: Received Cookie ID: %s New Cookie ID: %s
%s data is%s modified\n", r -> pThread -> nPid, pInitialUID, pUID, type ==
's'?"State":"User", bModified?"":" NOT") ;
if (ilen > 0 && (ulen == 0 || (!bModified && strcmp ("!DELETE", pInitialUID)
== 0)))
@@ -515,7 +509,7 @@
newSVpvf2(pCookie) ;
}
- if (r -> Component.Config.bDebug & dbgSession)
+ if (r -> Config.bDebug & dbgSession)
lprintf (r -> pApp, "[%d]SES: Delete Cookie -> %s\n", r -> pThread
-> nPid, SvPV(pCookie, ldummy)) ;
}
else if (ulen > 0 &&
@@ -529,7 +523,7 @@
r -> pApp -> Config.sCookiePath[0]?"; path=":"" , r
-> pApp -> Config.sCookiePath,
r -> pApp -> Config.sCookieExpires[0]?"; expires=":"", r
-> pApp -> Config.sCookieExpires) ;
newSVpvf2(pCookie) ;
- if (r -> Component.Config.bDebug & dbgSession)
+ if (r -> Config.bDebug & dbgSession)
lprintf (r -> pApp, "[%d]SES: Send Cookie -> %s\n", r -> pThread
-> nPid, SvPV(pCookie, ldummy)) ;
}
else
@@ -709,25 +703,25 @@
if ((r -> pApp -> Config.nSessionMode & smodeSDatParam) && !r ->
Component.pPrev)
{
- SV * pCookie = CreateSessionCookie (r, r -> pApp -> pStateHash, 's', 0) ;
+ SV * pCookie = CreateSessionCookie (r, r -> pApp -> pStateObj, 's', 0) ;
STRLEN l ;
- lprintf (r -> pApp, "opt %x optadd %x options %x cookie %s\n",
optAddStateSessionToLinks, r -> Component.Config.bOptions & optAddStateSessionToLinks,
r -> Component.Config.bOptions, SvPV(pCookie, l)) ;
+ /* lprintf (r -> pApp, "opt %x optadd %x options %x cookie %s\n",
optAddStateSessionToLinks, r -> Component.Config.bOptions & optAddStateSessionToLinks,
r -> Component.Config.bOptions, SvPV(pCookie, l)) ; */
if (pCookie)
{
- r -> sSessionID = _memstrcat (r, r -> pApp -> Config.sCookieName, "=",
SvPV (pCookie, l), NULL) ;
+ r -> sSessionID = ep_pstrcat (r -> pPool, r -> pApp ->
Config.sCookieName, "=", SvPV (pCookie, l), NULL) ;
}
}
if ((r -> pApp -> Config.nSessionMode & smodeUDatParam) && !r ->
Component.pPrev)
{
- SV * pCookie = CreateSessionCookie (r, r -> pApp -> pUserHash, 'u', 0) ;
+ SV * pCookie = CreateSessionCookie (r, r -> pApp -> pUserObj, 'u', 0) ;
if (pCookie)
{
STRLEN l ;
if (r -> sSessionID)
- r -> sSessionID = _memstrcat (r, r -> sSessionID, ":", SvPV
(pCookie, l), NULL) ;
+ r -> sSessionID = ep_pstrcat (r -> pPool, r -> sSessionID, ":",
SvPV (pCookie, l), NULL) ;
else
- r -> sSessionID = _memstrcat (r, r -> pApp -> Config.sCookieName,
"=:", SvPV (pCookie, l), NULL) ;
+ r -> sSessionID = ep_pstrcat (r -> pPool, r -> pApp ->
Config.sCookieName, "=:", SvPV (pCookie, l), NULL) ;
}
}
@@ -807,9 +801,8 @@
SV * pCookie = NULL ;
SV * pCookie2 = NULL ;
- if (!(r -> Component.Config.bOptions & optNoSessionCookies))
- pCookie = CreateSessionCookie (r, r -> pApp -> pUserHash, 'u', 1) ;
- /* pCookie2 = CreateSessionCookie (r, r -> pApp -> pStateHash, 's') ; */
+ if (r -> pApp -> Config.nSessionMode & smodeUDatCookie)
+ pCookie = CreateSessionCookie (r, r -> pApp -> pUserObj, 'u', 1) ;
#ifdef APACHE
if (r -> pApacheReq)
1.15.4.46 +13 -9 embperl/eputil.c
Index: eputil.c
===================================================================
RCS file: /home/cvs/embperl/eputil.c,v
retrieving revision 1.15.4.45
retrieving revision 1.15.4.46
diff -u -r1.15.4.45 -r1.15.4.46
--- eputil.c 26 Feb 2002 08:48:42 -0000 1.15.4.45
+++ eputil.c 26 Feb 2002 20:14:43 -0000 1.15.4.46
@@ -10,7 +10,7 @@
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
-# $Id: eputil.c,v 1.15.4.45 2002/02/26 08:48:42 richter Exp $
+# $Id: eputil.c,v 1.15.4.46 2002/02/26 20:14:43 richter Exp $
#
###################################################################################*/
@@ -1637,7 +1637,9 @@
int n = strcspn (sData, sSeparator) ;
if (n > 0)
av_push (pAV, newSVpv((char *)sData, n)) ;
- sData += n + 1 ;
+ sData += n ;
+ if (*sData)
+ sData++ ;
}
return pAV ;
@@ -1653,12 +1655,13 @@
HV * embperl_String2HV (/*in*/ tApp * a,
- /*in*/ const char * sData)
+ /*in*/ const char * sData,
+ /*in*/ char cSeparator,
+ /*in*/ HV * pHV)
{
- HV * pHV ;
char * p ;
- char * q ;
+ char q ;
char * pVal ;
char * pKeyEnd ;
#ifdef PERL_IMPLICIT_CONTEXT
@@ -1670,7 +1673,8 @@
aTHX = PERL_GET_THX ;
#endif
- pHV = newHV () ;
+ if (!pHV)
+ pHV = newHV () ;
while (*sData)
@@ -1692,13 +1696,13 @@
if (*p == '\'' || *p == '"')
q = *p++ ;
else
- q = ' ' ;
+ q = cSeparator ;
pVal = p ;
- while (*p && p != q)
+ while (*p && *p != q)
p++ ;
- hv_store(pHV, sData, pKeyEnd - sData, newSVpv(pVal, p - pVal)) ;
+ hv_store(pHV, sData, pKeyEnd - sData, newSVpv(pVal, p - pVal), 0) ;
sData = p ;
if (*sData)
sData++ ;
No revision
No revision
1.9.6.10 +1 -1 embperl/test/conf/startup.pl
Index: startup.pl
===================================================================
RCS file: /home/cvs/embperl/test/conf/startup.pl,v
retrieving revision 1.9.6.9
retrieving revision 1.9.6.10
diff -u -r1.9.6.9 -r1.9.6.10
--- startup.pl 10 Feb 2002 21:26:16 -0000 1.9.6.9
+++ startup.pl 26 Feb 2002 20:14:44 -0000 1.9.6.10
@@ -22,7 +22,7 @@
} ;
-
+use Apache::SessionX ;
use Apache ;
use Apache::Registry ;
use Embperl ;
No revision
No revision
1.1.2.19 +7 -2 embperl/xsbuilder/maps/Attic/ep_structure.map
Index: ep_structure.map
===================================================================
RCS file: /home/cvs/embperl/xsbuilder/maps/Attic/ep_structure.map,v
retrieving revision 1.1.2.18
retrieving revision 1.1.2.19
diff -u -r1.1.2.18 -r1.1.2.19
--- ep_structure.map 26 Feb 2002 08:48:43 -0000 1.1.2.18
+++ ep_structure.map 26 Feb 2002 20:14:44 -0000 1.1.2.19
@@ -34,6 +34,8 @@
nIOType | iotype
nSessionMgnt | session_mgnt
sSessionID | session_id
+ sSessionStateID | session_state_id
+ sSessionUserID | session_user_id
bExit | exit
nLogFileStartPos | log_file_start_pos
bError | error
@@ -65,7 +67,8 @@
Config | config
lfd
pUserObj | user_session
- pStateObj | state_session
+ pStateObj | state_session
+
pAppObj | app_session
pUserHash | udat
pStateHash | sdat
@@ -81,7 +84,8 @@
sAppName | app_name
pSessionArgs | session_args
pSessionClasses | session_classes
- sSessionConfig | session_config
+ sSessionConfig | session_config
+
sSessionHandlerClass | session_handler_class
sCookieName | cookie_name
sCookieDomain | cookie_domain
@@ -228,6 +232,7 @@
sPathInfo | path_info
sQueryInfo | query_info
sLanguage | language
+ pCookies | cookies
new
! private
</tReqParam>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]