Graham Dumpleton
grahamd at dscpl.com.au
Tue Nov 21 22:35:13 EST 2006
Graham Dumpleton wrote .. > sliderw hotmail wrote .. > > I followed the documentation of meets_conditions and wrote the following > > handler, but it doesn't work. 200 OK is always returned, never 304 Not > > Modified. > > > > def handler(req): > > req.headers_out['ETag'] = '"12345"' > > req.headers_out['Last-Modified'] = 'Wed, 22 Nov 2006 01:00:00 GMT' > > req.headers_out['Expires'] = 'Fri, 13 Feb 2009 01:00:00 GMT' > > > > status = req.meets_conditions() > > if status != apache.OK: > > return status > > > > req.set_content_length(5) > > req.write('hello') > > > > return apache.OK > > > > Versions used: Apache 2.2.2, mod_python 3.2.8 > > > > Any idea? > > What headers is your client sending which denote the condition that has > to be > satisfied. Ie., what headers are in req.headers_in such as: > > If-Match > If-Unmodified-Since > If-None-Match > Range > If-Modified-Since > > If your client isn't sending any conditions, how can there be anything > to > check. > > Another issues is perhaps that 'Last-Modified' header isn't even consulted > anyway. Instead it looks at req.mtime attribute for when resource was last > modified. Getting this set to a sensible value in mod_python, because output > is > generated dynamically, isn't that simple. In the version of mod_python > you are > using it probably isn't even possible as there is no way to update req.mtime. > > In mod_python 3.3, req.mtime is still read only, but req.set_last_modified() > is > provided which allows req.mtime to be set from the mtime in req.finfo with > req.finfo being able to be updated by setting it to result of calling the > apache.stat() method with a file name. Problem is that in mod_python the > mtime > may need to reflect changes across multiple files which comprise the source > code used to fulfil a request. Thus, in some respects, req.mtime should > possibly > be directly modifiable to be of most use, but it isn't right now. > > Anyway, having said all that, what are you expecting to happen and how > do you expect to be able to use req.meets_condition()? Whoops. Forgot that in mod_python 3.3 there is req.update_mtime(), so req.mtime can be updated, you just don't do it directly but through a function. Graham
|