]> err.no Git - sope/commitdiff
added support for cookies which are rooted on /
authorhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Wed, 17 Nov 2004 00:01:54 +0000 (00:01 +0000)
committerhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Wed, 17 Nov 2004 00:01:54 +0000 (00:01 +0000)
git-svn-id: http://svn.opengroupware.org/SOPE/trunk@378 e4a50df8-12e2-0310-a44c-efbce7f8a7e3

sope-appserver/NGObjWeb/ChangeLog
sope-appserver/NGObjWeb/Defaults.plist
sope-appserver/NGObjWeb/Version
sope-appserver/NGObjWeb/WOApplication.m
sope-appserver/NGObjWeb/WORequestHandler.m

index 0d307ca8f9e12a9bc0b544fcc4944ff4110604e0..30b88ec94372085d6cbf95070b835246994a6809 100644 (file)
@@ -1,3 +1,10 @@
+2004-11-17  Helge Hess  <helge.hess@opengroupware.org>
+
+       * WORequestHandler.m: added 'WOUseGlobalCookiePath' default to
+         configure whether the application URL (NO) or "/" (YES) should be
+         used as the path for the session-id cookie (related to OGo bug #914
+         (v4.5.89)
+
 2004-11-05  Helge Hess  <helge.hess@skyrix.com>
 
        * WOSimpleHTTPParser.m: set a default file boundary size and max upload
index 78b815488f2c764d46d100f3b6ed1bb2f470ea1a..14892079172b7263e8ca3126163f40a0e9e7e32f 100644 (file)
@@ -96,6 +96,7 @@
   WOSimpleHTTPParserMaxUploadSizeInKB   = 262144;
   WOStatsStylesheetName                 = "WOStats.xsl";
   WOUseRelativeURLs                     = YES;
+  WOUseGlobalCookiePath                        = YES;
   WOValueAssociationsCacheSize          = 200;
   WOWorkerThreadCount                   = 0;
   WOxFileExtensions                     = ( wox, xtmpl, xhtml );
index cec1772e5748e0c08912be57e68722c2adc3c631..7a1ddcc8757d3f5f418eeac8e0d6683cd1b1a487 100644 (file)
@@ -1,6 +1,6 @@
 # version file
 
-SUBMINOR_VERSION:=88
+SUBMINOR_VERSION:=89
 
 # v4.5.84  required libNGExtensions v4.5.127
 # v4.3.42  requires libNGExtensions v4.3.116
index 7dafabd1ff1f2ddad4bb622967e585394d57afd1..85b496d267ce73ef856a5aec73e2349fa8fddbf9 100644 (file)
@@ -511,18 +511,18 @@ static NSString *rapidTurnAroundPath = nil;
   if (_request == nil) return nil;
   
   /* first look into form values */
-  if ((sessionId = [_request formValueForKey:WORequestValueSessionID])) {
+  if ((sessionId = [_request formValueForKey:WORequestValueSessionID])!=nil) {
     if ([sessionId length] > 0)
       return sessionId;
   }
   
   /* now look into the cookies */
-  if ((sessionId = [_request cookieValueForKey:[self name]])) {
+  if ((sessionId = [_request cookieValueForKey:[self name]]) != nil) {
     if ([sessionId respondsToSelector:@selector(objectEnumerator)]) {
       NSEnumerator *e;
       
       e = [(id)sessionId objectEnumerator];
-      while ((sessionId = [e nextObject])) {
+      while ((sessionId = [e nextObject]) != nil) {
         if ([sessionId length] > 0 && ![sessionId isEqual:@"nil"])
           return sessionId;
       }
index faccd753074a9700e6e815744c37b9f036392843..78cc29355c7b5436d6bbf2fd86c5b859ea80abb8 100644 (file)
@@ -46,6 +46,7 @@
 
 @implementation WORequestHandler
 
+static BOOL  doNotSetCookiePath = NO;
 static BOOL  perflog = NO;
 static Class NSDateClass = Nil;
 
@@ -53,18 +54,19 @@ static Class NSDateClass = Nil;
   return 2;
 }
 + (void)initialize {
+  NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
+  
   NSDateClass = [NSDate class];
-  perflog = [[NSUserDefaults standardUserDefaults]
-                             boolForKey:@"WOProfileRequestHandler"];
+  perflog            = [ud boolForKey:@"WOProfileRequestHandler"];
+  doNotSetCookiePath = [ud boolForKey:@"WOUseGlobalCookiePath"];
 }
 
 - (id)init {
   if ((self = [super init])) {
-    if ([[[NSUserDefaults standardUserDefaults]
-                          objectForKey:@"WORunMultithreaded"]
-                          boolValue]) {
+    NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
+    
+    if ([ud boolForKey:@"WORunMultithreaded"])
       self->lock = [[NSRecursiveLock alloc] init];
-    }
   }
   return self;
 }
@@ -188,7 +190,7 @@ static Class NSDateClass = Nil;
         
         [[session retain] autorelease];
         
-        if (response)
+        if (response != nil)
           /* some kind of error response from above ... */
           goto responseDone;
         
@@ -232,12 +234,13 @@ static Class NSDateClass = Nil;
                          session:session
                          application:app];
         
-        session = ([context hasSession])
+        session = [context hasSession]
           ? [context session]
           : nil;
         
-        if (session) {
+        if (session != nil) {
           if ([session storesIDsInCookies]) {
+           [self logInfoWithFormat:@"add cookie to session: %@", session];
             [self addCookiesForSession:session
                   toResponse:response
                   inContext:context];
@@ -248,6 +251,8 @@ static Class NSDateClass = Nil;
                 withResponse:response
                 application:app];
         }
+       else
+         [self logInfoWithFormat:@"no session to store."];
       }
       NS_HANDLER {
         response = [app handleException:localException inContext:context];
@@ -329,17 +334,18 @@ static Class NSDateClass = Nil;
     app        = [WOApplication application];
     cookieName = [app name];
 
-    {
+    if (!doNotSetCookiePath) {
       NSString *tmp;
       
       if ((uri = [[_ctx request] applicationName]) == nil)
         uri = [app name];
       uri = [@"/" stringByAppendingString:uri];
-      
       if ((tmp = [[_ctx request] adaptorPrefix]))
         uri = [tmp stringByAppendingString:uri];
     }
-
+    else
+      uri = @"/";
+    
 #if 0
     uri = [_ctx urlSessionPrefix];
     uri = [_ctx urlWithRequestHandlerKey:
@@ -429,7 +435,7 @@ static Class NSDateClass = Nil;
   [_app saveSessionForContext:_ctx];
   
   /* store response if strange double-click browser */
-  if (_response) {
+  if (_response != nil) {
     if ([[_ctx request] isDoubleClickBrowser]) {
       NSArray *hack; /* 0: uri, 1: response */