#ifndef PROJECT_H_INCLUDED
#define PROJECT_H_INCLUDED
/** Version string. */
-#define PROJECT_H_VERSION "$Id: project.h,v 1.153 2009/11/27 13:46:47 fabiankeil Exp $"
+#define PROJECT_H_VERSION "$Id: project.h,v 1.158 2010/07/21 14:35:09 fabiankeil Exp $"
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/project.h,v $
* project. Does not define any variables or functions
* (though it does declare some macros).
*
- * Copyright : Written by and Copyright (C) 2001-2009 the
+ * Copyright : Written by and Copyright (C) 2001-2010 the
* Privoxy team. http://www.privoxy.org/
*
* Based on the Internet Junkbuster originally written
* the requested resource. Mostly ordered the way they are checked
* for in chat().
*/
-#define RSP_REASON_UNSUPPORTED 1
-#define RSP_REASON_BLOCKED 2
-#define RSP_REASON_UNTRUSTED 3
-#define RSP_REASON_REDIRECTED 4
-#define RSP_REASON_CGI_CALL 5
-#define RSP_REASON_NO_SUCH_DOMAIN 6
-#define RSP_REASON_FORWARDING_FAILED 7
-#define RSP_REASON_CONNECT_FAILED 8
-#define RSP_REASON_OUT_OF_MEMORY 9
-#define RSP_REASON_INTERNAL_ERROR 10
-#define RSP_REASON_CONNECTION_TIMEOUT 11
-#define RSP_REASON_NO_SERVER_DATA 12
+enum crunch_reason
+{
+ UNSUPPORTED,
+ BLOCKED,
+ UNTRUSTED,
+ REDIRECTED,
+ CGI_CALL,
+ NO_SUCH_DOMAIN,
+ FORWARDING_FAILED,
+ CONNECT_FAILED,
+ OUT_OF_MEMORY,
+ INTERNAL_ERROR,
+ CONNECTION_TIMEOUT,
+ NO_SERVER_DATA
+};
/**
* Response generated by CGI, blocker, or error handler
*/
struct http_response
{
- char *status; /**< HTTP status (string). */
- struct list headers[1]; /**< List of header lines. */
- char *head; /**< Formatted http response head. */
- size_t head_length; /**< Length of http response head. */
- char *body; /**< HTTP document body. */
- size_t content_length; /**< Length of body, REQUIRED if binary body. */
- int is_static; /**< Nonzero if the content will never change and
- should be cached by the browser (e.g. images). */
- int reason; /**< Why the response was generated in the first place. */
+ enum crunch_reason crunch_reason; /**< Why the response was generated in the first place. */
+ char *status; /**< HTTP status (string). */
+ struct list headers[1]; /**< List of header lines. */
+ char *head; /**< Formatted http response head. */
+ size_t head_length; /**< Length of http response head. */
+ char *body; /**< HTTP document body. */
+ size_t content_length; /**< Length of body, REQUIRED if binary body. */
+ int is_static; /**< Nonzero if the content will never change and
+ should be cached by the browser (e.g. images). */
};
/**
*/
#define CSP_FLAG_TOGGLED_ON 0x20U
+/**
+ * Flag for csp->flags: Set if we answered the request ourselve.
+ */
+#define CSP_FLAG_CRUNCHED 0x40U
+
/**
* Flag for csp->flags: Set if an acceptable Connection header
* has already been set by the client.
* or NULL. Currently only used for socks errors.
*/
char *error_message;
-
- /** Next thread in linked list. Only read or modify from the main thread! */
- struct client_state *next;
};
+/**
+ * List of client states so the main thread can keep
+ * track of them and garbage collect their resources.
+ */
+struct client_states
+{
+ struct client_states *next;
+ struct client_state csp;
+};
/**
* A function to add a header
#define FORWARD_SPEC_INITIALIZER { { URL_SPEC_INITIALIZER }, 0, NULL, 0, NULL, 0, NULL }
/* Supported filter types */
-#define FT_CONTENT_FILTER 0
-#define FT_CLIENT_HEADER_FILTER 1
-#define FT_SERVER_HEADER_FILTER 2
-#define FT_CLIENT_HEADER_TAGGER 3
-#define FT_SERVER_HEADER_TAGGER 4
-
+enum filter_type
+{
+ FT_CONTENT_FILTER = 0,
+ FT_CLIENT_HEADER_FILTER = 1,
+ FT_SERVER_HEADER_FILTER = 2,
+ FT_CLIENT_HEADER_TAGGER = 3,
+ FT_SERVER_HEADER_TAGGER = 4,
+};
#define MAX_FILTER_TYPES 5
/**
char *description; /**< Description from FILTER: statement in re_filterfile. */
struct list patterns[1]; /**< The patterns from the re_filterfile. */
pcrs_job *joblist; /**< The resulting compiled pcrs_jobs. */
- int type; /**< Filter type (content, client-header, server-header). */
+ enum filter_type type; /**< Filter type (content, client-header, server-header). */
int dynamic; /**< Set to one if the pattern might contain variables
and has to be recompiled for every request. */
struct re_filterfile_spec *next; /**< The pointer for chaining. */