ETag stuff must respect the cacheable parameter
git-svn-id: https://fhem.svn.sourceforge.net/svnroot/fhem/trunk/fhem@2220 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
@@ -1245,21 +1245,25 @@ FW_returnFileAsStream($$$$$)
|
|||||||
{
|
{
|
||||||
my ($path, $suffix, $type, $doEsc, $cacheable) = @_;
|
my ($path, $suffix, $type, $doEsc, $cacheable) = @_;
|
||||||
|
|
||||||
#Check for If-None-Match header (ETag)
|
my $etag;
|
||||||
my @if_none_match_lines = grep /If-None-Match/, @FW_httpheader;
|
|
||||||
my $if_none_match = undef;
|
|
||||||
if(@if_none_match_lines) {
|
|
||||||
$if_none_match = $if_none_match_lines[0];
|
|
||||||
$if_none_match =~ s/If-None-Match: \"(.*)\"/$1/;
|
|
||||||
}
|
|
||||||
|
|
||||||
my $c = $FW_chash->{CD};
|
my $c = $FW_chash->{CD};
|
||||||
my $etag = (stat($path))[9]; #mtime
|
|
||||||
|
|
||||||
if(defined($etag) and defined($if_none_match) and $etag eq $if_none_match) {
|
if($cacheable) {
|
||||||
print $c "HTTP/1.1 304 Not Modified\r\n",
|
#Check for If-None-Match header (ETag)
|
||||||
$FW_headercors, "\r\n";
|
my @if_none_match_lines = grep /If-None-Match/, @FW_httpheader;
|
||||||
return -1;
|
my $if_none_match = undef;
|
||||||
|
if(@if_none_match_lines) {
|
||||||
|
$if_none_match = $if_none_match_lines[0];
|
||||||
|
$if_none_match =~ s/If-None-Match: \"(.*)\"/$1/;
|
||||||
|
}
|
||||||
|
|
||||||
|
$etag = (stat($path))[9]; #mtime
|
||||||
|
|
||||||
|
if(defined($etag) && defined($if_none_match) && $etag eq $if_none_match) {
|
||||||
|
print $c "HTTP/1.1 304 Not Modified\r\n",
|
||||||
|
$FW_headercors, "\r\n";
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!open(FH, $path)) {
|
if(!open(FH, $path)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user