-const char parsers_rcs[] = "$Id: parsers.c,v 1.220 2011/03/27 14:01:18 fabiankeil Exp $";
+const char parsers_rcs[] = "$Id: parsers.c,v 1.224 2011/06/23 14:01:01 fabiankeil Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/parsers.c,v $
}
/*
- * If we tried the limit and still didn't have enough
- * memory, just give up.
+ * If we reached the buffer limit and still didn't have enough
+ * memory, just give up. Due to the ceiling enforced by the next
+ * if block we could actually check for equality here, but as it
+ * can be easily mistaken for a bug we don't.
*/
- if (bufsize == csp->config->buffer_limit)
+ if (bufsize >= csp->config->buffer_limit)
{
log_error(LOG_LEVEL_ERROR, "Buffer limit reached while decompressing iob");
return JB_ERR_MEMORY;
}
#endif /* def FEATURE_CONNECTION_KEEP_ALIVE */
+#ifdef FEATURE_COMPRESSION
+ if ((JB_ERR_OK == err)
+ && (csp->flags & CSP_FLAG_BUFFERED_CONTENT_DEFLATED))
+ {
+ err = enlist_unique_header(csp->headers, "Content-Encoding", "deflate");
+ if (JB_ERR_OK == err)
+ {
+ log_error(LOG_LEVEL_HEADER, "Added header: Content-Encoding: deflate");
+ }
+ }
+#endif
+
return err;
}
if (csp->action->flags & ACTION_CONTENT_TYPE_OVERWRITE)
{
/*
- * Make sure the user doesn't accidently
+ * Make sure the user doesn't accidentally
* change the content type of binary documents.
*/
if ((csp->content_type & CT_TEXT) || (csp->action->flags & ACTION_FORCE_TEXT_MODE))
*********************************************************************/
static jb_err client_accept_encoding(struct client_state *csp, char **header)
{
+#ifdef FEATURE_COMPRESSION
+ if ((csp->config->feature_flags & RUNTIME_FEATURE_COMPRESSION)
+ && strstr(*header, "deflate"))
+ {
+ csp->flags |= CSP_FLAG_CLIENT_SUPPORTS_DEFLATE;
+ }
+#endif
if ((csp->action->flags & ACTION_NO_COMPRESSION) != 0)
{
log_error(LOG_LEVEL_HEADER, "Suppressed offer to compress content");
*
* Function : server_connection_adder
*
- * Description : Adds an appropiate "Connection:" header to csp->headers
+ * Description : Adds an appropriate "Connection:" header to csp->headers
* unless the header was already present. Called from `sed'.
*
* Parameters :
*
* Description : Adds a "Proxy-Connection: keep-alive" header to
* csp->headers if the client asked for keep-alive.
- * XXX: We should reuse existant ones.
+ * XXX: We should reuse existent ones.
*
* Parameters :
* 1 : csp = Current client state (buffers, headers, etc...)
*
* Function : strclean
*
- * Description : In-Situ-Eliminate all occurances of substring in
+ * Description : In-Situ-Eliminate all occurrences of substring in
* string
*
* Parameters :