]> err.no Git - sope/commitdiff
some fixes on component request handler
authorhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Thu, 18 Nov 2004 23:33:39 +0000 (23:33 +0000)
committerhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Thu, 18 Nov 2004 23:33:39 +0000 (23:33 +0000)
git-svn-id: http://svn.opengroupware.org/SOPE/trunk@396 e4a50df8-12e2-0310-a44c-efbce7f8a7e3

sope-appserver/NGObjWeb/ChangeLog
sope-appserver/NGObjWeb/Version
sope-appserver/NGObjWeb/WOComponentRequestHandler.m

index 45577191b9243a9189a0066e7a6f654bb1b5926c..9fb88794eebc5470652850c469517a0af9db941a 100644 (file)
@@ -1,3 +1,8 @@
+2004-11-19  Helge Hess  <helge.hess@opengroupware.org>
+
+       * WOComponentRequestHandler.m: append session-id cookies to response,
+         reject favicon requests, added some logs, minor cleanups (v4.5.92)
+
 2004-11-18  Marcus Mueller  <znek@mulle-kybernetik.com>
 
        * v4.5.91
index 983af6cd0c795763788df2ab013e9b128726b41b..043774601232b6a1364836f25c7442d64158ce79 100644 (file)
@@ -1,6 +1,6 @@
 # version file
 
-SUBMINOR_VERSION:=91
+SUBMINOR_VERSION:=92
 
 # v4.5.91  requires libNGExtensions v4.5.134
 # v4.5.84  requires libNGExtensions v4.5.127
index da440f135dc2a025f314a3026f7223ecea4861a1..a148ef815e03bd47886cb1007bc572bf6d1afd35 100644 (file)
 - (void)_setCurrentContext:(WOContext *)_ctx;
 @end
 
+@interface WORequestHandler(URI)
+- (BOOL)doesRejectFavicon;
+@end
+
 @implementation WOComponentRequestHandler
 
 + (int)version {
 */
 
 - (WOResponse *)handleRequest:(WORequest *)_request {
+  // TODO: this should be integrated into the WORequestHandler default
+  //       mechanism
   NSString      *sessionID        = nil;
   WOApplication *application      = nil;
-  WOContext     *context          = nil;
+  WOContext     *context;
   WOResponse    *response         = nil;
   WOSession     *session          = nil;
   WOComponent   *component        = nil;
   NSString      *handlerPath      = nil;
 
   if (_request == nil) return nil;
-
+  
+  if ([self doesRejectFavicon] && [[_request uri] isNotNull]) {
+    // TODO: code copied from WORequestHandler ...
+    if ([@"/favicon.ico" isEqualToString:[_request uri]]) {
+      response = [WOResponse responseWithRequest:_request];
+      [response setStatus:404 /* not found */];
+      [self debugWithFormat:@"rejected favicon request: %@", [_request uri]];
+      return response;
+    }
+  }
+  
   application = [WOApplication application];
   handlerPath = [_request requestHandlerPath];
-
+  
 #if 0
-  NSLog(@"[component request handler] path=%@ ..", handlerPath);
+  [self logWithFormat:@"[component request handler] path: '%@'", handlerPath];
 #endif
 
   if (![application allowsConcurrentRequestHandling]) {
   if ([sessionID length] == 0)
     sessionID = [application sessionIDFromRequest:_request];
   
-#if 0
-  NSLog(@"%s: made context %@ (cid=%@, sn=%@) ..", __PRETTY_FUNCTION__
-        context, [context contextID], sessionID);
+#if 1
+  [self logWithFormat:@"%s: made context %@ (cid=%@, sn=%@) ..",
+         __PRETTY_FUNCTION__, context, [context contextID], sessionID];
 #endif
   
   [application awake];
   
   /* restore or create session */
-  if (sessionID) {
+  if ([sessionID isNotNull]) {
     response = [self restoreSessionWithID:sessionID inContext:context];
-    session = response ? nil : [context session];
+    session  = response ? nil : [context session];
+    
+    //[self logWithFormat:@"restored session (id=%@): %@", sessionID, session];
     
-    if (session) {
+    if ([session isNotNull]) {
       /* awake stored page */
       component = [session restorePageForContextID:[context currentElementID]];
       
         response = [application handlePageRestorationErrorInContext:context];
 #if DEBUG
       else {
-        NSLog(@"%s: restored request component %@", __PRETTY_FUNCTION__,
-              component);
+       [self logWithFormat:@"%s: restored request component: %@", 
+               __PRETTY_FUNCTION__, component];
       }
 #endif
     }
   else {
     /* create new session */
     session = [application _initializeSessionInContext:context];
-    if (session) {
+    if ([session isNotNull]) {
       /* awake created session */
       [session awake];
       component = [application pageWithName:nil inContext:context];
     
     /* run invoke-action phase */
     newPage = [application invokeActionForRequest:_request inContext:context];
-
+    
     /* process resulting page */
     if (newPage == nil) {
       if ((newPage = [context page]) == nil) {
 #endif
     
     /* generate response */
-#if 1 /* new code, ensure that _fixupResponse is called */
+    
     response = [self generateResponseForComponent:[context page]
                     inContext:context
                     application:application];
-#else /* old code */
-    response = [context response];
-    [application appendToResponse:response inContext:context];
-#endif
   }
   else {
     [self warnWithFormat:@"%s: did not enter request/response transaction ...",
             __PRETTY_FUNCTION__];
   }
-
+  
   /* tear down */
 
   /* sleep objects */
   [session sleep];
   
   /* save objects */
-  if (session) {
+  
+  if (session != nil) {
     if ([context savePageRequired])
       [session savePage:[context page]];
     
-    NSLog(@"saving session %@", [session sessionID]);
+    [self logWithFormat:@"saving session %@", [session sessionID]];
+    
+    if ([session storesIDsInCookies]) {
+      [self logInfoWithFormat:@"add cookie to session: %@", session];
+      [self addCookiesForSession:session
+           toResponse:response
+           inContext:context];
+    }
+    
+#if 1
     [application saveSessionForContext:context];
+#else
+    [self saveSession:session
+         inContext:context
+         withResponse:response
+         application:application];
+#endif
   }
   
   [application sleep];