X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=project.h;h=4d9bc5767672c33469d95083b16cdf0c071b5895;hp=a8fc92585cb377951b2d74046d58e9da0d1c40b0;hb=eadc3100faaf9d658801c21ca1dccc0bfa6da0e2;hpb=cdce239fb2f8a54963856a048976898f0003df20 diff --git a/project.h b/project.h index a8fc9258..4d9bc576 100644 --- a/project.h +++ b/project.h @@ -1,7 +1,7 @@ #ifndef PROJECT_H_INCLUDED #define PROJECT_H_INCLUDED /** Version string. */ -#define PROJECT_H_VERSION "$Id: project.h,v 1.181 2012/10/17 18:19:29 fabiankeil Exp $" +#define PROJECT_H_VERSION "$Id: project.h,v 1.189 2012/10/21 12:58:03 fabiankeil Exp $" /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/project.h,v $ @@ -412,18 +412,11 @@ struct iob /** * Return the number of bytes in the I/O buffer associated with the passed - * client_state pointer. - * May be zero. + * I/O buffer. May be zero. */ -#define IOB_PEEK(CSP) ((CSP->iob->cur > CSP->iob->eod) ? (CSP->iob->eod - CSP->iob->cur) : 0) +#define IOB_PEEK(IOB) ((IOB->cur > IOB->eod) ? (IOB->eod - IOB->cur) : 0) -/** - * Remove any data in the I/O buffer associated with the passed - * client_state pointer. - */ -#define IOB_RESET(CSP) if(CSP->iob->buf) free(CSP->iob->buf); memset(CSP->iob, '\0', sizeof(CSP->iob)); - /* Bits for csp->content_type bitmask: */ #define CT_TEXT 0x0001U /**< Suitable for pcrs filtering. */ #define CT_GIF 0x0002U /**< Suitable for GIF filtering. */ @@ -639,6 +632,16 @@ struct url_actions struct url_actions *next; /**< Next action section in file, or NULL. */ }; +enum forwarder_type { + /**< Don't use a SOCKS server */ + SOCKS_NONE = 0, + /**< original SOCKS 4 protocol */ + SOCKS_4 = 40, + /**< SOCKS 4A, DNS resolution is done by the SOCKS server */ + SOCKS_4A = 41, + /**< SOCKS 5 with hostnames, DNS resolution is done by the SOCKS server */ + SOCKS_5 = 50, +}; /* * Structure to hold the server socket and the information @@ -659,10 +662,15 @@ struct reusable_connection * connection will no longer be reused. */ unsigned int keep_alive_timeout; + /* + * Number of requests that were sent to this connection. + * This is currently only for debugging purposes. + */ + unsigned int requests_sent_total; char *host; int port; - int forwarder_type; + enum forwarder_type forwarder_type; char *gateway_host; int gateway_port; char *forward_host; @@ -820,6 +828,12 @@ struct reusable_connection */ #define CSP_FLAG_BUFFERED_CONTENT_DEFLATED 0x00400000U +/** + * Flag for csp->flags: Set if we already read (parts of) + * a pipelined request in which case the client obviously + * isn't done talking. + */ +#define CSP_FLAG_PIPELINED_REQUEST_WAITING 0x00800000U /* * Flags for use in return codes of child processes @@ -863,6 +877,9 @@ struct client_state /** socket to talk to client (web browser) */ jb_socket cfd; + /** Number of requests received on the client socket. */ + unsigned int requests_received_total; + /** current connection to the server (may go through a proxy) */ struct reusable_connection server_connection; @@ -892,9 +909,13 @@ struct client_state */ struct forward_spec * fwd; - /** An I/O buffer used for buffering data read from the network */ + /** An I/O buffer used for buffering data read from the server */ + /* XXX: should be renamed to server_iob */ struct iob iob[1]; + /** An I/O buffer used for buffering data read from the client */ + struct iob client_iob[1]; + /** List of all headers for this request */ struct list headers[1]; @@ -1048,17 +1069,6 @@ struct block_spec #endif /* def FEATURE_TRUST */ -enum forwarder_type { - /**< Don't use a SOCKS server */ - SOCKS_NONE = 0, - /**< original SOCKS 4 protocol */ - SOCKS_4 = 40, - /**< SOCKS 4A, DNS resolution is done by the SOCKS server */ - SOCKS_4A = 41, - /**< SOCKS 5 with hostnames, DNS resolution is done by the SOCKS server */ - SOCKS_5 = 50, -}; - /** * How to forward a connection to a parent proxy. */ @@ -1200,6 +1210,9 @@ struct access_control_list /** configuration_spec::feature_flags: Buffered content is sent compressed if the client supports it. */ #define RUNTIME_FEATURE_COMPRESSION 1024U +/** configuration_spec::feature_flags: Pipelined requests are served instead of being discarded. */ +#define RUNTIME_FEATURE_TOLERATE_PIPELINING 2048U + /** * Data loaded from the configuration file. *