@@ -217,14 +217,13 @@
217 217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
218 218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.zBaseURL!=0 && strncmp(g.zBaseURL, "https:", 6)==0 ){
219 219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zSecure = " secure;";
220 220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
221 221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( lifetime>0 ){
222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- lifetime += (int)time(0);
223 222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_appendf(&extraHeader,
224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "Set-Cookie: %s=%t; Path=%s; expires=%z; HttpOnly;%s Version=1\r\n",
225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zName, zValue, zPath, cgi_rfc822_datestamp(lifetime), zSecure);
223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "Set-Cookie: %s=%t; Path=%s; max-age=%d; HttpOnly;%s Version=1\r\n",
224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zName, zValue, zPath, lifetime, zSecure);
226 225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
227 226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_appendf(&extraHeader,
228 227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"Set-Cookie: %s=%t; Path=%s; HttpOnly;%s Version=1\r\n",
229 228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zName, zValue, zPath, zSecure);
230 229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -267,10 +266,14 @@
267 266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fprintf(g.httpOut, "ETag: %s\r\n", etag_tag());
268 267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fprintf(g.httpOut, "Cache-Control: max-age=%d\r\n", etag_maxage());
269 268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
270 269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fprintf(g.httpOut, "Cache-control: no-cache\r\n");
271 270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( etag_mtime()>0 ){
272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fprintf(g.httpOut, "Last-Modified: %s\r\n",
273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_rfc822_datestamp(etag_mtime()));
274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
272 275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
273 276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( blob_size(&extraHeader)>0 ){
274 277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fprintf(g.httpOut, "%s", blob_buffer(&extraHeader));
275 278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
276 279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -1910,55 +1913,42 @@
1910 1913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
1911 1914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Note that this won't handle all the _allowed_ HTTP formats, just the
1912 1915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** most popular one (the one generated by cgi_rfc822_datestamp(), actually).
1913 1916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
1914 1917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
time_t cgi_rfc822_parsedate(const char *zDate){
1915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- struct tm t;
1916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char zIgnore[16];
1917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char zMonth[16];
1918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
1919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- memset(&t, 0, sizeof(t));
1920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( 7==sscanf(zDate, "%12[A-Za-z,] %d %12[A-Za-z] %d %d:%d:%d", zIgnore,
1921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- &t.tm_mday, zMonth, &t.tm_year, &t.tm_hour, &t.tm_min,
1922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- &t.tm_sec)){
1923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
1924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( t.tm_year > 1900 ) t.tm_year -= 1900;
1925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(t.tm_mon=0; azMonths[t.tm_mon]; t.tm_mon++){
1926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !fossil_strnicmp( azMonths[t.tm_mon], zMonth, 3 )){
1927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return mkgmtime(&t);
1928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
1929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
1930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
1931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
1932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return 0;
1933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
1934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
1935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /*
1936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Convert a struct tm* that represents a moment in UTC into the number
1937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** of seconds in 1970, UTC.
1938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- */
1939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- time_t mkgmtime(struct tm *p){
1940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- time_t t;
1941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int nDay;
1942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int isLeapYr;
1943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- /* Days in each month: 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 */
1944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static int priorDays[] = { 0, 31, 59, 90,120,151,181,212,243,273,304,334 };
1945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( p->tm_mon<0 ){
1946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int nYear = (11 - p->tm_mon)/12;
1947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->tm_year -= nYear;
1948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->tm_mon += nYear*12;
1949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( p->tm_mon>11 ){
1950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->tm_year += p->tm_mon/12;
1951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->tm_mon %= 12;
1952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
1953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- isLeapYr = p->tm_year%4==0 && (p->tm_year%100!=0 || (p->tm_year+300)%400==0);
1954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- p->tm_yday = priorDays[p->tm_mon] + p->tm_mday - 1;
1955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( isLeapYr && p->tm_mon>1 ) p->tm_yday++;
1956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- nDay = (p->tm_year-70)*365 + (p->tm_year-69)/4 -p->tm_year/100 +
1957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- (p->tm_year+300)/400 + p->tm_yday;
1958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- t = ((nDay*24 + p->tm_hour)*60 + p->tm_min)*60 + p->tm_sec;
1959 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return t;
1918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int mday, mon, year, yday, hour, min, sec;
1919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char zIgnore[4];
1920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char zMonth[4];
1921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static const char *const azMonths[] =
1922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {"Jan", "Feb", "Mar", "Apr", "May", "Jun",
1923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", 0};
1924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( 7==sscanf(zDate, "%3[A-Za-z], %d %3[A-Za-z] %d %d:%d:%d", zIgnore,
1925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ &mday, zMonth, &year, &hour, &min, &sec)){
1926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( year > 1900 ) year -= 1900;
1927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(mon=0; azMonths[mon]; mon++){
1928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !strncmp( azMonths[mon], zMonth, 3 )){
1929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nDay;
1930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int isLeapYr;
1931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int priorDays[] =
1932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { 0, 31, 59, 90,120,151,181,212,243,273,304,334 };
1933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( mon<0 ){
1934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nYear = (11 - mon)/12;
1935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ year -= nYear;
1936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ mon += nYear*12;
1937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( mon>11 ){
1938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ year += mon/12;
1939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ mon %= 12;
1940 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1941 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ isLeapYr = year%4==0 && (year%100!=0 || (year+300)%400==0);
1942 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ yday = priorDays[mon] + mday - 1;
1943 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( isLeapYr && mon>1 ) yday++;
1944 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nDay = (year-70)*365 + (year-69)/4 - year/100 + (year+300)/400 + yday;
1945 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return ((time_t)(nDay*24 + hour)*60 + min)*60 + sec;
1946 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1947 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0;
1960 1950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1961 1951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1962 1952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
1963 1953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Check the objectTime against the If-Modified-Since request header. If the
1964 1954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** object time isn't any newer than the header, we immediately send back
1965 1955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!