[Seaside] expire path for application

Norbert Hartl norbert at hartl.name
Sun May 9 10:30:09 UTC 2010


I'm about to chase down an annyoing artifact. I have quite a usual deployment where the server path in the application configuration ist set to / and seaside is deployed behind an apache. Well, I'm using seaside 2.8 if this is important to know.

The problem is that whenever a session expires the redirect url contains the base path of the application. I mean the application is registered at

/seaside/myapp

When the redirect occurs I get the url

http://myhost/seaside/myapp/additional/path

instead of

http://myhost/additional/path

I think I found the cause. In 

WAApplication>>handleExpiredRequest: 

there is 

url := self baseUrl path: OrderedCollection new.
url addToPath: (self expiryPathFor: aRequest).

baseUrl calls basePath and that checks the existance of a set serverPath. The second call to expiryPath does not. So I get a path / from the call to baseUrl but then the /seaside/myapp is copied onto while addToPath: with the full path is executed. I think a 

WARegistry>>expiryPathFor: aRequest
	self serverPath isNil ifFalse: [
		^ aRequest url copyFrom: (self basePath size + 1) to: aRequest url size].
	^ aRequest url 

will help.

On the other hand it could be that I'm doing something wrong. If not a lot of people should discovered this already :) I'm trying to find the right place where to fix the issue. Thanks for any hints

Norbert


More information about the seaside mailing list