From: paul Date: Wed, 9 Nov 2016 15:34:27 +0000 (+0000) Subject: use proper cgi for response headers, switch cache machanism to timestamps X-Git-Url: https://git.plutz.net/?a=commitdiff_plain;h=0fd2545f286734b69363fdb492fbfc6727e6fb32;p=clickslide use proper cgi for response headers, switch cache machanism to timestamps svn path=/trunk/; revision=41 --- diff --git a/server.sh b/server.sh index 4eb253f..a4229b2 100755 --- a/server.sh +++ b/server.sh @@ -71,9 +71,10 @@ HTTP_format(){ /^\r?$/!{H;n;bA} g - s;^(\r?\n)*;; + s;^(\r?\n)*;;; + s;([^\r])\n;\1\r\n;g; aConnection: close\r\n\r - /^HTTP\/[0-9]\.[0-9] [1-5][0-9][0-9] .*/bX + /^Status: *[1-5][0-9][0-9] .*/{s;^Status: *;HTTP/1.1 ;; bX} s;^(.+\n)?Location: .*$;HTTP/1.1 302 Found\r\n&; s;^(.+\n)?Content-Type: .*$;HTTP/1.1 200 OK\r\n&; diff --git a/static.sh b/static.sh index 44c6556..ae8de6c 100755 --- a/static.sh +++ b/static.sh @@ -27,16 +27,19 @@ date="$(stat -c %Y "$file")" declare -A suffix suffix[css]="text/css" +[ -n "$HTTP_IF_MODIFIED_SINCE" ] && cachedate="$(date -d "$HTTP_IF_MODIFIED_SINCE" +%s)" + if [ -x "$file" -o \! -r "$file" -o \! -f "$file" ]; then - printf 'HTTP/1.1 403 Forbidden\r\n\r\n' -elif [ "$date" = "$HTTP_IF_NONE_MATCH" ]; then - printf 'HTTP/1.1 304 Not Modified\r\n' - printf 'Etag: %s\r\n\r\n' "$date" + printf 'Status:403 Forbidden\r\n\r\n' +elif [ "$date" = "$cachedate" ]; then + debug "Delegating to client cache" + printf 'Status:304 Not Modified\r\n' + printf 'Last-Modified: %s\r\n\r\n' "$(date -Rd "@$date")" else length="$(stat -c %s "$file")" magic="${suffix[${file##*.}]:-$(file -bi "$file")}" - printf 'Etag: %s\r\n' "$date" + printf 'Last-Modified: %s\r\n' "$(date -Rd "@$date")" printf 'Content-Type: %s\r\n' "${magic:-all/all}" printf 'Content-Length: %s\r\n' "$length" printf '\r\n'