--- Begin Message ---
- To: Debian Bug Tracking System <submit@bugs.debian.org>
- Subject: thttpd: Pass Cache-Control header to HTTP_CACHE_CONTROL CGI environment
- From: Steve Schnepp <steve.schnepp@gmail.com>
- Date: Thu, 21 Apr 2011 12:25:40 +0200
- Message-id: <BANLkTikxcmLDXrNsTHoTkQxkPaw+mC+psw@mail.gmail.com>
Package: thttpd
Version: 2.25b-11
Severity: wishlist
Tags: patch
It would be nice to pass the Cache-Control header to spawned CGI
processes.
Here is a minimal patch that does just this.
-- System Information:
Debian Release: 6.0.1
APT prefers stable
APT policy: (500, 'stable')
Architecture: kfreebsd-amd64 (x86_64)
Kernel: kFreeBSD 8.1-1-amd64
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
Shell: /bin/sh linked to /bin/dash
Versions of packages thttpd depends on:
ii libc0.1 2.11.2-10 Embedded GNU C Library: Shared lib
Versions of packages thttpd recommends:
ii logrotate 3.7.8-6 Log rotation utility
Versions of packages thttpd suggests:
pn thttpd-util <none> (no description available)
-- no debconf information
diff -u thttpd-2.25b.orig/libhttpd.c thttpd-2.25b/libhttpd.c
--- thttpd-2.25b.orig/libhttpd.c 2011-04-21 12:03:04.000000000 +0200
+++ thttpd-2.25b/libhttpd.c 2011-04-21 12:03:10.000000000 +0200
@@ -1733,6 +1733,7 @@
hc->acceptl = "";
hc->cookie = "";
hc->contenttype = "";
+ hc->cachecontrol = "";
hc->reqhost[0] = '\0';
hc->hdrhost = "";
hc->hostdir[0] = '\0';
@@ -2189,6 +2190,12 @@
cp += strspn( cp, " \t" );
hc->contenttype = cp;
}
+ else if ( strncasecmp( buf, "Cache-Control:", 14 ) == 0 )
+ {
+ cp = &buf[14];
+ cp += strspn( cp, " \t" );
+ hc->cachecontrol = cp;
+ }
else if ( strncasecmp( buf, "Content-Length:", 15 ) == 0 )
{
cp = &buf[15];
@@ -2211,7 +2218,6 @@
else if ( strncasecmp( buf, "Accept-Charset:", 15 ) == 0 ||
strncasecmp( buf, "Accept-Language:", 16 ) == 0 ||
strncasecmp( buf, "Agent:", 6 ) == 0 ||
- strncasecmp( buf, "Cache-Control:", 14 ) == 0 ||
strncasecmp( buf, "Cache-Info:", 11 ) == 0 ||
strncasecmp( buf, "Charge-To:", 10 ) == 0 ||
strncasecmp( buf, "Client-IP:", 10 ) == 0 ||
@@ -3063,6 +3069,8 @@
envp[envn++] = build_env( "HTTP_COOKIE=%s", hc->cookie );
if ( hc->contenttype[0] != '\0' )
envp[envn++] = build_env( "CONTENT_TYPE=%s", hc->contenttype );
+ if ( hc->cachecontrol[0] != '\0' )
+ envp[envn++] = build_env( "HTTP_CACHE_CONTROL=%s", hc->cachecontrol );
if ( hc->hdrhost[0] != '\0' )
envp[envn++] = build_env( "HTTP_HOST=%s", hc->hdrhost );
if ( hc->contentlength != -1 )
diff -u thttpd-2.25b.orig/libhttpd.h thttpd-2.25b/libhttpd.h
--- thttpd-2.25b.orig/libhttpd.h 2011-04-21 12:03:04.000000000 +0200
+++ thttpd-2.25b/libhttpd.h 2011-04-21 12:03:10.000000000 +0200
@@ -114,6 +114,7 @@
char* acceptl;
char* cookie;
char* contenttype;
+ char* cachecontrol;
char* reqhost;
char* hdrhost;
char* hostdir;
--- End Message ---