If you pass the open file object to response.stream, it should not call stream_file_or_304_or_206 -- it only calls that if you pass the file path as a string to response.stream. When I tried it (with the code I posted), it worked fine (i.e., the header was set as specified in the HTTP() call).
Anthony On Sunday, June 10, 2012 9:20:13 AM UTC-4, Niphlod wrote: > > well, pinpointed in the right direction, but sadly it doesn't > work.....after creating a dummy controller just to let the request be > accepted, I think I found the culprit: > > raise HTTP(200, response.stream(file), headers) > > will stop execution, but raising actually from response.stream, that calls > stream_file_or_304_or_206, so headers are set in that call, and not the one > raised from the model itself. > > next step, check stream_file_or_304_or_206, *Cache-Control : private* is > set as fixed, so overriding it in response.stream call or even calling > directly stream_file_or_304_or_206 won't work. > Adding an Expires header won't work nonetheless, because for HTTP specs > Cache-Control "wins" over Expires header ...... > > The only way is to use streamer directly, but all other headers, > content-type detection, etc would need to be rewritten >

