diff --git a/ChangeLog b/ChangeLog index 4c13392..6286776 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,28 @@ +2003-04-09 Manuel Guesdon + * GSWeb.framework/GSWSessionTimeOut.m: + o fix in -description + * GSWeb.framework/GSWApplication.m: + o build currentRunLop before calling -run + o log allFrameworks when a component is not found + * GSWeb.framework/GSWHyperlink.m: + o better handling of isSecure (regarding current request secure state) + * GSWExtensions.framework/GSWSessionRestorationErrorPage.gswd: + o use "" pageName so application may choose the main page + * GSWExtensions.framework/GSWPageRestorationErrorPage.gswc/GSWPageRestorationErrorPage.gswd: + o use "" pageName so application may choose the main page + * GSWeb.framework/GSWConstants.m/.h: + o added GSWHTTPHeader_Protocol, GSWHTTPHeader_ProtocolNum, + GSWHTTPHeader_RequestScheme + * GSWeb.framework/GSWContext.m/.h: + o fix in -_synchronizeForDistribution + o try to avoid complete URL when we can use relative one + * GSWeb.framework/GSWRequest.m: + o fix to retrieve protocol & port from adaptor headers + * GSWeb.framework/GSWSession.m: + o fix in -appendCookieToResponse: + * GSAdaptors/Apache/mod_gsweb.c: + o fix for server port header + 2003-04-05 Manuel Guesdon * GSWAdaptors/common/config.h: o change minor version diff --git a/GSWAdaptors/Apache/mod_gsweb.c b/GSWAdaptors/Apache/mod_gsweb.c index 914c0c5..cfc545c 100644 --- a/GSWAdaptors/Apache/mod_gsweb.c +++ b/GSWAdaptors/Apache/mod_gsweb.c @@ -362,9 +362,20 @@ copyHeaders(request_rec *p_pRequestRec, g_szServerInfo_ServerName, pServerRec->server_hostname); - pszPort = APR_PSPRINTF(p_pRequestRec->pool, - "%u", - pServerRec->port); + { + unsigned int serverPort=(unsigned)ap_get_server_port(p_pRequestRec); + if (serverPort==0) + { + if (p_pRequestRec->parsed_uri.port_str && p_pRequestRec->parsed_uri.port!=0) + serverPort=(unsigned)p_pRequestRec->parsed_uri.port; + else + serverPort=(unsigned)pServerRec->port; + }; + pszPort = APR_PSPRINTF(p_pRequestRec->pool, + "%u", + (unsigned int)serverPort); + }; + GSWHTTPRequest_AddHeader(p_pGSWHTTPRequest, g_szServerInfo_ServerPort, pszPort); diff --git a/GSWExtensions.framework/GSWPageRestorationErrorPage.gswc/GSWPageRestorationErrorPage.gswd b/GSWExtensions.framework/GSWPageRestorationErrorPage.gswc/GSWPageRestorationErrorPage.gswd index bf6fab5..e5f2740 100644 --- a/GSWExtensions.framework/GSWPageRestorationErrorPage.gswc/GSWPageRestorationErrorPage.gswd +++ b/GSWExtensions.framework/GSWPageRestorationErrorPage.gswc/GSWPageRestorationErrorPage.gswd @@ -12,7 +12,7 @@ ApplicationNameString: GSWString ReenterHyperlink: GSWHyperlink { - pageName = "Main"; + pageName = ""; target = "_top"; }; diff --git a/GSWExtensions.framework/GSWSessionRestorationErrorPage.gswd b/GSWExtensions.framework/GSWSessionRestorationErrorPage.gswd index 673c7d6..60647f6 100644 --- a/GSWExtensions.framework/GSWSessionRestorationErrorPage.gswd +++ b/GSWExtensions.framework/GSWSessionRestorationErrorPage.gswd @@ -12,6 +12,6 @@ ApplicationNameString: GSWString ReenterHyperlink: GSWHyperlink { - pageName = "Main"; + pageName = ""; target = "_top"; } diff --git a/GSWeb.framework/GSWApplication.m b/GSWeb.framework/GSWApplication.m index 8c9963b..29e8b2e 100644 --- a/GSWeb.framework/GSWApplication.m +++ b/GSWeb.framework/GSWApplication.m @@ -449,8 +449,8 @@ int GSWApplicationMainReal(NSString* applicationClassName, }; }; }; - NSDebugFLLog(@"bundles",@"[NSBundle allBundles]=%@",[NSBundle allBundles]); - NSDebugFLLog(@"bundles",@"[NSBundle allFrameworks]=%@",[NSBundle allFrameworks]); + NSDebugFLLog(@"bundles",@"[NSBundle allBundles] pathes=%@",[[NSBundle allBundles] valueForKey:@"resourcePath"]); + NSDebugFLLog(@"bundles",@"[NSBundle allFrameworks] pathes=%@",[[NSBundle allFrameworks] valueForKey:@"resourcePath"]); }; if (result>=0) { @@ -480,7 +480,9 @@ int GSWApplicationMainReal(NSString* applicationClassName, if (result>=0 && GSWApp) { [GSWApp _setPool:[NSAutoreleasePool new]]; + [GSWApp run]; + DESTROY(GSWApp); }; GSWLogMemCF("Destroy NSAutoreleasePool: %p",appAutoreleasePool); @@ -547,6 +549,13 @@ int GSWApplicationMain(NSString* applicationClassName, // context=nil;//deprecated _selfLock=[NSRecursiveLock new]; _globalLock=[NSLock new]; + + NSDebugMLLog(@"application",@"GSCurrentThreadDictionary()=%@",GSCurrentThreadDictionary()); + + //Do it before run so application can addTimer,... in -run + NSDebugMLLog(@"application",@"[NSRunLoop currentRunLoop]=%@",[NSRunLoop currentRunLoop]); + ASSIGN(_currentRunLoop,[NSRunLoop currentRunLoop]); + _pageCacheSize=30; _permanentPageCacheSize=30; _pageRecreationEnabled=YES; @@ -1262,6 +1271,7 @@ selfLockn, }; if (!componentDefinition) { + NSLog(@"EXCEPTION: allFrameworks pathes=%@",[[NSBundle allFrameworks] valueForKey:@"resourcePath"]); ExceptionRaise(GSWPageNotFoundException, @"Unable to create component definition for %@ for languages: %@ (no componentDefinition).", aName, @@ -1369,7 +1379,8 @@ selfLockn, LOGObjectFnStart(); allFrameworks=[[NSBundle allFrameworks] mutableCopy]; [allFrameworks addObjectsFromArray:[NSBundle allBundles]]; - // NSDebugMLLog(@"gswcomponents",@"_allFrameworks=%@",_allFrameworks); + //NSDebugMLLog(@"gswcomponents",@"allFrameworks=%@",allFrameworks); + //NSDebugFLLog(@"gswcomponents",@"allFrameworks pathes=%@",[allFrameworks valueForKey:@"resourcePath"]); array=[self lockedInitComponentBearingFrameworksFromBundleArray:allFrameworks]; NSDebugMLLog(@"gswcomponents",@"array=%@",array); [allFrameworks release]; @@ -1391,12 +1402,13 @@ selfLockn, for(i=0;i<[bundles count];i++) { bundle=[bundles objectAtIndex:i]; - // NSDebugMLLog(@"gswcomponents",@"_bundle=%@",_bundle); + //NSDebugMLLog(@"gswcomponents",@"bundle=%@",bundle); + //NSDebugMLLog(@"gswcomponents",@"bundle resourcePath=%@",[bundle resourcePath]); bundleInfo=[bundle infoDictionary]; - // NSDebugMLLog(@"gswcomponents",@"_bundleInfo=%@",_bundleInfo); + //NSDebugMLLog(@"gswcomponents",@"bundleInfo=%@",bundleInfo); hasGSWComponents=[bundleInfo objectForKey:@"HasGSWComponents"]; - // NSDebugMLLog(@"gswcomponents",@"_hasGSWComponents=%@",_hasGSWComponents); - // NSDebugMLLog(@"gswcomponents",@"_hasGSWComponents class=%@",[_hasGSWComponents class]); + //NSDebugMLLog(@"gswcomponents",@"hasGSWComponents=%@",hasGSWComponents); + //NSDebugMLLog(@"gswcomponents",@"hasGSWComponents class=%@",[hasGSWComponents class]); if (boolValueFor(hasGSWComponents)) { [array addObject:bundle]; @@ -2324,9 +2336,9 @@ selfLockn, //call self _openInitialURL NSDebugMLLog(@"application",@"GSCurrentThreadDictionary()=%@",GSCurrentThreadDictionary()); NSDebugMLLog(@"application",@"[NSRunLoop currentRunLoop]=%@",[NSRunLoop currentRunLoop]); - ASSIGN(_currentRunLoop,[NSRunLoop currentRunLoop]); - NSDebugMLLog(@"application",@"GSCurrentThreadDictionary()=%@",GSCurrentThreadDictionary()); - [[NSRunLoop currentRunLoop] run]; + NSAssert(_currentRunLoop,@"No runLoop"); + + [_currentRunLoop run]; NSDebugMLLog0(@"application",@"NSRunLoop end run"); [_adaptors makeObjectsPerformSelector:unregisterForEventsSEL]; @@ -2339,7 +2351,7 @@ selfLockn, -(NSRunLoop*)runLoop { - return _currentRunLoop;//[NSRunLoop currentRunLoop]; + return _currentRunLoop; }; //-------------------------------------------------------------------- diff --git a/GSWeb.framework/GSWConstants.h b/GSWeb.framework/GSWConstants.h index 2a8f4e8..31b9bb6 100644 --- a/GSWeb.framework/GSWConstants.h +++ b/GSWeb.framework/GSWConstants.h @@ -115,6 +115,10 @@ extern NSString* GSWHTTPHeader_AuthPass[2]; extern NSString* GSWHTTPHeader_AuthType[2]; extern NSString* GSWHTTPHeader_DocumentRoot[2]; extern NSString* GSWHTTPHeader_GatewayInterface[2]; +extern NSString* GSWHTTPHeader_Protocol[2]; +extern NSString* GSWHTTPHeader_ProtocolNum[2]; +extern NSString* GSWHTTPHeader_RequestScheme[2]; + extern NSString* GSWHTTPHeader_Method[2]; extern NSString* GSWHTTPHeader_MethodPost; extern NSString* GSWHTTPHeader_MethodGet; diff --git a/GSWeb.framework/GSWConstants.m b/GSWeb.framework/GSWConstants.m index cc5297e..c475385 100644 --- a/GSWeb.framework/GSWConstants.m +++ b/GSWeb.framework/GSWConstants.m @@ -123,6 +123,9 @@ NSString* GSWHTTPHeader_AuthPass[2]={ @"x-gsweb-auth-pass", @"x-webobjects-auth- NSString* GSWHTTPHeader_AuthType[2]={ @"x-gsweb-auth-type", @"x-webobjects-auth-type" }; NSString* GSWHTTPHeader_DocumentRoot[2]={ @"x-gsweb-documentroot", @"x-webobjects-documentroot" }; NSString* GSWHTTPHeader_GatewayInterface[2]={ @"x-gsweb-gateway-interface", @"x-webobjects-gateway-interface" }; +NSString* GSWHTTPHeader_Protocol[2]={ @"x-gsweb-server-protocol", @"x-webobjects-server-protocol" }; +NSString* GSWHTTPHeader_ProtocolNum[2]={ @"x-gsweb-server-protocol-num", @"x-webobjects-server-protocol-num" }; +NSString* GSWHTTPHeader_RequestScheme[2]={ @"x-gsweb-request-scheme", @"x-webobjects-request-scheme" }; NSString* GSWHTTPHeader_MethodPost=@"POST"; NSString* GSWHTTPHeader_MethodGet=@"GET"; diff --git a/GSWeb.framework/GSWContext.h b/GSWeb.framework/GSWContext.h index c7aa4d6..b235590 100644 --- a/GSWeb.framework/GSWContext.h +++ b/GSWeb.framework/GSWContext.h @@ -108,6 +108,11 @@ isSecure:(BOOL)isSecure; -(GSWDynamicURLString*)componentActionURL; -(GSWDynamicURLString*)componentActionURLIsSecure:(BOOL)isSecure; +-(GSWDynamicURLString*)urlWithRequestHandlerKey:(NSString*)requestHandlerKey + path:(NSString*)requestHandlerPath + queryString:(NSString*)queryString + isSecure:(BOOL)isSecure + port:(int)port; -(GSWDynamicURLString*)urlWithRequestHandlerKey:(NSString*)requestHandlerKey path:(NSString*)requestHandlerPath queryString:(NSString*)queryString; diff --git a/GSWeb.framework/GSWContext.m b/GSWeb.framework/GSWContext.m index 302fa06..d6fc9dc 100644 --- a/GSWeb.framework/GSWContext.m +++ b/GSWeb.framework/GSWContext.m @@ -472,6 +472,40 @@ static int dontTraceComponentActionURL=0; return url; }; +//-------------------------------------------------------------------- +-(GSWDynamicURLString*)urlWithRequestHandlerKey:(NSString*)requestHandlerKey + path:(NSString*)requestHandlerPath + queryString:(NSString*)queryString + isSecure:(BOOL)isSecure + port:(int)port +{ + //OK + GSWDynamicURLString* url=nil; + GSWRequest* request=[self request]; + LOGObjectFnStartCond(dontTraceComponentActionURL==0); + NSDebugMLogCond(dontTraceComponentActionURL==0, + @"generateCompleteURLs=%s", + (_generateCompleteURLs ? "YES" : "NO")); + + // Try to avoid complete URLs + if (_generateCompleteURLs + || (isSecure!=[request isSecure]) + || (port!=0 && port!=[request urlPort])) + url=[self completeURLWithRequestHandlerKey:requestHandlerKey + path:requestHandlerPath + queryString:queryString + isSecure:isSecure + port:port]; + else + url=[request _urlWithRequestHandlerKey:requestHandlerKey + path:requestHandlerPath + queryString:queryString]; + NSDebugMLogCond(dontTraceComponentActionURL==0, + @"url=%@",url); + LOGObjectFnStopCond(dontTraceComponentActionURL==0); + return url; +}; + //-------------------------------------------------------------------- -(GSWDynamicURLString*)urlWithRequestHandlerKey:(NSString*)requestHandlerKey path:(NSString*)requestHandlerPath @@ -539,7 +573,7 @@ static int dontTraceComponentActionURL=0; [url setURLPort:port]; NSDebugMLLog(@"low",@"url=%@",url); host=[request urlHost]; - NSAssert(host,@"No host !"); + NSAssert1(host,@"No host in request %@",request); NSDebugMLLog(@"low",@"host=%@",host); [url setURLHost:host]; NSDebugMLLog(@"low",@"url=%@",url); @@ -688,7 +722,14 @@ static int dontTraceComponentActionURL=0; [anURL setURLRequestHandlerPath:actionName]; [anURL setURLQueryString:queryString]; */ - anURL=[self completeURLWithRequestHandlerKey:GSWDirectActionRequestHandlerKey[GSWebNamingConv] + +/* anURL=[self completeURLWithRequestHandlerKey:GSWDirectActionRequestHandlerKey[GSWebNamingConv] + path:actionName + queryString:queryString + isSecure:isSecure + port:0]; +*/ + anURL=[self urlWithRequestHandlerKey:GSWDirectActionRequestHandlerKey[GSWebNamingConv] path:actionName queryString:queryString isSecure:isSecure @@ -837,16 +878,26 @@ static int dontTraceComponentActionURL=0; //-------------------------------------------------------------------- -(void)_synchronizeForDistribution { - //OK + int instance=-1; + NSString* sessionID=nil; + BOOL storesIDsInURLs=NO; + BOOL isDistributionEnabled=NO; LOGObjectFnStart(); - if (_session) + storesIDsInURLs=[_session storesIDsInURLs]; + isDistributionEnabled=[_session isDistributionEnabled]; + if (_request) { - //call session storesIDsInURLs [ret 1] - //call session isDistributionEnabled [ret 0] - [_url setURLApplicationNumber:[_request applicationNumber]];//OK - } + instance=[_request applicationNumber]; + sessionID=[_request sessionID]; + }; + if (instance<-1 + || (storesIDsInURLs && ! isDistributionEnabled) + || (sessionID && instance>=0)) + instance=[_request applicationNumber]; else - [_url setURLApplicationNumber:-1];//OK + instance=-1; + _urlApplicationNumber = instance; + [_url setURLApplicationNumber:instance]; LOGObjectFnStop(); }; diff --git a/GSWeb.framework/GSWHyperlink.m b/GSWeb.framework/GSWHyperlink.m index 2c0da18..fb960c3 100644 --- a/GSWeb.framework/GSWHyperlink.m +++ b/GSWeb.framework/GSWHyperlink.m @@ -312,10 +312,17 @@ RCS_ID("$Id$") //OK NSString* anUrl=nil; BOOL completeUrlsPreviousState=NO; - BOOL isSecure=[self evaluateCondition:_secure - inContext:context]; + BOOL isSecure=NO; + BOOL requestIsSecure=[[context request]isSecure]; + + if (_secure) + isSecure=[self evaluateCondition:_secure + inContext:context]; + else + isSecure=requestIsSecure; + // Force complete URLs - if (isSecure) + if (isSecure!=requestIsSecure) completeUrlsPreviousState=[context _generateCompleteURLs]; anUrl=(NSString*)[context componentActionURLIsSecure:isSecure]; NSDebugMLLog(@"gswdync",@"anUrl=%@",anUrl); @@ -324,7 +331,7 @@ RCS_ID("$Id$") inContext:context]; [self _appendFragmentToResponse:response inContext:context]; - if (isSecure && !completeUrlsPreviousState) + if (isSecure!=requestIsSecure && !completeUrlsPreviousState) [context _generateRelativeURLs]; } else if (!WOStrictFlag && (_filename || _data)) @@ -478,6 +485,7 @@ RCS_ID("$Id$") NSString* anUrl=nil; BOOL completeUrlsPreviousState=NO; BOOL isSecure=NO; + BOOL requestIsSecure=NO; LOGObjectFnStart(); actionString=[self computeActionStringInContext:context]; @@ -486,10 +494,15 @@ RCS_ID("$Id$") queryDictionary=[self computeQueryDictionaryInContext:context]; NSDebugMLLog(@"gswdync",@"queryDictionary=%@",queryDictionary); - isSecure=[self evaluateCondition:_secure - inContext:context]; - // Force complete URLs - if (isSecure) + requestIsSecure=[[context request]isSecure]; + if (_secure) + isSecure=[self evaluateCondition:_secure + inContext:context]; + else + isSecure=requestIsSecure; + + // Force complete URLs is secure mode is not the same + if (isSecure!=requestIsSecure) completeUrlsPreviousState=[context _generateCompleteURLs]; anUrl=(NSString*)[context directActionURLForActionNamed:actionString @@ -497,7 +510,7 @@ RCS_ID("$Id$") isSecure:isSecure]; NSDebugMLLog(@"gswdync",@"anUrl=%@",anUrl); - if (isSecure && !completeUrlsPreviousState) + if (isSecure!=requestIsSecure && !completeUrlsPreviousState) [context _generateRelativeURLs]; [response appendContentString:anUrl]; diff --git a/GSWeb.framework/GSWRequest.m b/GSWeb.framework/GSWRequest.m index 57e53b2..139348b 100644 --- a/GSWeb.framework/GSWRequest.m +++ b/GSWeb.framework/GSWRequest.m @@ -56,6 +56,7 @@ RCS_ID("$Id$") NSDebugMLLog(@"requests",@"method=%@",_method); ASSIGNCOPY(_httpVersion,aVersion); ASSIGNCOPY(_headers,headers); + //NSLog(@"HEADERS=%@",_headers); _defaultFormValueEncoding=NSISOLatin1StringEncoding; _formValueEncoding=NSISOLatin1StringEncoding; [self _initCookieDictionary];//NDFN @@ -231,10 +232,17 @@ RCS_ID("$Id$") //NDFN -(NSString*)urlProtocol { - //TODO NSString* urlProtocol=[_uri urlProtocol]; if (!urlProtocol) - urlProtocol=GSWProtocol_HTTP; + { + urlProtocol=[self headerForKey:GSWHTTPHeader_RequestScheme[GSWebNamingConv]]; + if (!urlProtocol) + { + urlProtocol=[self headerForKey:GSWHTTPHeader_RequestScheme[GSWebNamingConvInversed]]; + if (!urlProtocol) + urlProtocol=GSWProtocol_HTTP; + }; + }; return urlProtocol; }; @@ -244,9 +252,11 @@ RCS_ID("$Id$") { NSString* urlHost=[_uri urlHost]; if (!urlHost) - urlHost=[self headerForKey:GSWHTTPHeader_ServerName[GSWebNamingConv]]; - if (!urlHost) - urlHost=[self headerForKey:GSWHTTPHeader_ServerName[GSWebNamingConvInversed]]; + { + urlHost=[self headerForKey:GSWHTTPHeader_ServerName[GSWebNamingConv]]; + if (!urlHost) + urlHost=[self headerForKey:GSWHTTPHeader_ServerName[GSWebNamingConvInversed]]; + }; return urlHost; }; @@ -256,9 +266,11 @@ RCS_ID("$Id$") { NSString* urlPortString=[_uri urlPortString]; if (!urlPortString) - urlPortString=[self headerForKey:GSWHTTPHeader_ServerPort[GSWebNamingConv]]; - if (!urlPortString) - urlPortString=[self headerForKey:GSWHTTPHeader_ServerPort[GSWebNamingConvInversed]]; + { + urlPortString=[self headerForKey:GSWHTTPHeader_ServerPort[GSWebNamingConv]]; + if (!urlPortString) + urlPortString=[self headerForKey:GSWHTTPHeader_ServerPort[GSWebNamingConvInversed]]; + }; return urlPortString; }; @@ -268,9 +280,11 @@ RCS_ID("$Id$") { int port=[_uri urlPort]; if (!port) - port=[[self headerForKey:GSWHTTPHeader_ServerPort[GSWebNamingConv]]intValue]; - if (!port) - port=[[self headerForKey:GSWHTTPHeader_ServerPort[GSWebNamingConvInversed]]intValue]; + { + port=[[self headerForKey:GSWHTTPHeader_ServerPort[GSWebNamingConv]]intValue]; + if (!port) + port=[[self headerForKey:GSWHTTPHeader_ServerPort[GSWebNamingConvInversed]]intValue]; + }; return port; }; @@ -285,7 +299,7 @@ RCS_ID("$Id$") //NDFN -(BOOL)isSecure { - return [[self urlProtocol] isEqualToString:GSWProtocol_HTTPS]; + return ([[self urlProtocol] caseInsensitiveCompare:GSWProtocol_HTTPS]==NSOrderedSame); }; //-------------------------------------------------------------------- diff --git a/GSWeb.framework/GSWSession.m b/GSWeb.framework/GSWSession.m index 3d8420f..624760e 100644 --- a/GSWeb.framework/GSWSession.m +++ b/GSWeb.framework/GSWSession.m @@ -717,20 +717,22 @@ RCS_ID("$Id$") { NSString* domainForIDCookies=nil; NSString* sessionID=nil; + NSDate* anExpireDate=nil; LOGObjectFnStart(); domainForIDCookies=[self domainForIDCookies]; sessionID=[self sessionID]; + anExpireDate=[NSDate date]; // Expire now [aResponse addCookie:[GSWCookie cookieWithName:GSWKey_SessionID[GSWebNamingConv] value:sessionID path:domainForIDCookies domain:nil - expires:[self expirationDateForIDCookies] + expires:anExpireDate isSecure:NO]]; [aResponse addCookie:[GSWCookie cookieWithName:GSWKey_InstanceID[GSWebNamingConv] - value:@"-1" //TODO + value:@"-1" path:domainForIDCookies domain:nil - expires:[self expirationDateForIDCookies] + expires:anExpireDate isSecure:NO]]; LOGObjectFnStop(); @@ -744,22 +746,39 @@ RCS_ID("$Id$") if ([self storesIDsInCookies]) { //TODO VERIFY - NSString* domainForIDCookies=nil; - NSString* sessionID=nil; - domainForIDCookies=[self domainForIDCookies]; - sessionID=[self sessionID]; + NSString* domainForIDCookies=[self domainForIDCookies]; + NSString* sessionID=[self sessionID]; + int instance=-1; + NSDate* anExpireDate=[self expirationDateForIDCookies]; + + // SessionID cookie [aResponse addCookie:[GSWCookie cookieWithName:GSWKey_SessionID[GSWebNamingConv] value:sessionID path:domainForIDCookies domain:nil - expires:[self expirationDateForIDCookies] + expires:anExpireDate isSecure:NO]]; - + + // Instance Cookie + // No Instance if distribution enabled or this session is terminating + if ([self isDistributionEnabled] || [self isTerminating]) + { + instance=-1; + anExpireDate=[NSDate date]; //expire now ! + } + else + { + GSWRequest* request = [_currentContext request]; + if (request) + instance=[request applicationNumber]; // use the request instance number + else + instance=-1; + }; [aResponse addCookie:[GSWCookie cookieWithName:GSWKey_InstanceID[GSWebNamingConv] - value:@"1" //TODO + value:[NSString stringWithFormat:@"%d",instance] path:domainForIDCookies domain:nil - expires:[self expirationDateForIDCookies] + expires:anExpireDate isSecure:NO]]; }; diff --git a/GSWeb.framework/GSWSessionTimeOut.m b/GSWeb.framework/GSWSessionTimeOut.m index 1d1e6d6..7961d23 100644 --- a/GSWeb.framework/GSWSessionTimeOut.m +++ b/GSWeb.framework/GSWSessionTimeOut.m @@ -80,7 +80,7 @@ RCS_ID("$Id$") //-------------------------------------------------------------------- -(NSString*)description { - return [NSString stringWithFormat:@"<%s %p - sessionID=%@ timeOutTime=%f lastAccessTime=%f timeOut=%ld", + return [NSString stringWithFormat:@"<%s %p - sessionID=%@ timeOutTime=%@ lastAccessTime=%@ timeOut=%ld", object_get_class_name(self), (void*)self, _sessionID,