"Transfer-Encoding" header entirely instead of changing
it to "Transfer-Encoding: identity", which is invalid.
Thanks Michael Shields <shields@msrl.com>. Fixes PR
1318658.
Don't use localtime in parse_header_time. An empty time struct
is good enough, it gets overwritten by strptime anyway.
-const char parsers_rcs[] = "$Id: parsers.c,v 1.65 2006/08/22 10:55:56 fabiankeil Exp $";
+const char parsers_rcs[] = "$Id: parsers.c,v 1.66 2006/09/03 19:38:28 fabiankeil Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/parsers.c,v $
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/parsers.c,v $
*
* Revisions :
* $Log: parsers.c,v $
*
* Revisions :
* $Log: parsers.c,v $
+ * Revision 1.66 2006/09/03 19:38:28 fabiankeil
+ * Use gmtime_r if available, fallback to gmtime with mutex
+ * protection for MacOSX and use vanilla gmtime for the rest.
+ *
* Revision 1.65 2006/08/22 10:55:56 fabiankeil
* Changed client_referrer to use the right type (size_t) for
* hostlenght and to shorten the temporary referrer string with
* Revision 1.65 2006/08/22 10:55:56 fabiankeil
* Changed client_referrer to use the right type (size_t) for
* hostlenght and to shorten the temporary referrer string with
*
* Description : - Prohibit filtering (CT_TABOO) if transfer coding compresses
* - Raise the CSP_FLAG_CHUNKED flag if coding is "chunked"
*
* Description : - Prohibit filtering (CT_TABOO) if transfer coding compresses
* - Raise the CSP_FLAG_CHUNKED flag if coding is "chunked"
- * - Change from "chunked" to "identity" if body was chunked
- * but has been de-chunked for filtering.
+ * - Remove header if body was chunked but has been
+ * de-chunked for filtering.
*
* Parameters :
* 1 : csp = Current client state (buffers, headers, etc...)
*
* Parameters :
* 1 : csp = Current client state (buffers, headers, etc...)
csp->flags |= CSP_FLAG_CHUNKED;
/*
csp->flags |= CSP_FLAG_CHUNKED;
/*
- * If the body was modified, it has been
- * de-chunked first, so adjust the header:
+ * If the body was modified, it has been de-chunked first
+ * and the header must be removed.
*/
if (csp->flags & CSP_FLAG_MODIFIED)
{
*/
if (csp->flags & CSP_FLAG_MODIFIED)
{
+ log_error(LOG_LEVEL_HEADER, "Removing: %s", *header);
- *header = strdup("Transfer-Encoding: identity");
- log_error(LOG_LEVEL_HEADER, "Set: %s", *header);
- return (header == NULL) ? JB_ERR_MEMORY : JB_ERR_OK;
struct tm *parse_header_time(char *header, time_t *tm) {
char * timestring;
struct tm *parse_header_time(char *header, time_t *tm) {
char * timestring;
-
- *tm = 0;
- timeptr = localtime(tm);
/* Skipping header name */
timestring = strstr(header, ": ");
/* Skipping header name */
timestring = strstr(header, ": ");
- if (strptime(timestring, ": %a, %d %b %Y %H:%M:%S", timeptr) == NULL)
+ if (strptime(timestring, ": %a, %d %b %Y %H:%M:%S", &gmt) == NULL)
{
timeptr = NULL;
}
else
{
{
timeptr = NULL;
}
else
{