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]

Reply via email to