X-Git-Url: http://www.privoxy.org/gitweb/?a=blobdiff_plain;f=project.h;h=22887f25c86fe2c9afecbfd76ab8e3607d411198;hb=6008cc8b3d0790c37ae99ab876e8bdfa45c8949e;hp=b4a7020ea78cc456637662614208a5ae999efaaa;hpb=c0c1d276faa0a9b2259bd3ced8f1c3fbd64abb22;p=privoxy.git diff --git a/project.h b/project.h index b4a7020e..22887f25 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.139 2009/06/03 16:42:49 fabiankeil Exp $" +#define PROJECT_H_VERSION "$Id: project.h,v 1.150 2009/10/04 15:34:18 fabiankeil Exp $" /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/project.h,v $ @@ -318,6 +318,8 @@ struct http_request #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 /** * Response generated by CGI, blocker, or error handler @@ -630,14 +632,19 @@ struct url_actions /* - * Structure to make sure we only reuse the server socket - * if the host and forwarding settings are the same. + * Structure to hold the server socket and the information + * required to make sure we only reuse the connection if + * the host and forwarding settings are the same. */ struct reusable_connection { jb_socket sfd; int in_use; - time_t timestamp; + time_t timestamp; /* XXX: rename? */ + + time_t request_sent; + time_t response_received; + /* * Number of seconds after which this * connection will no longer be reused. @@ -753,8 +760,40 @@ struct reusable_connection * the connection alive. */ #define CSP_FLAG_CLIENT_CONNECTION_KEEP_ALIVE 0x00008000U + +/** + * Flag for csp->flags: Set if we think we got the whole + * client request and shouldn't read any additional data + * coming from the client until the current request has + * been dealt with. + */ +#define CSP_FLAG_CLIENT_REQUEST_COMPLETELY_READ 0x00010000U + +/** + * Flag for csp->flags: Set if the server promised us to + * keep the connection open for a known number of seconds. + */ +#define CSP_FLAG_SERVER_KEEP_ALIVE_TIMEOUT_SET 0x00020000U + #endif /* def FEATURE_CONNECTION_KEEP_ALIVE */ +/** + * Flag for csp->flags: Set if we think we can't reuse + * the server socket. + */ +#define CSP_FLAG_SERVER_SOCKET_TAINTED 0x00040000U + +/** + * Flag for csp->flags: Set if the Proxy-Connection header + * is among the server headers. + */ +#define CSP_FLAG_SERVER_PROXY_CONNECTION_HEADER_SET 0x00080000U + +/** + * Flag for csp->flags: Set if the client reused its connection. + */ +#define CSP_FLAG_REUSED_CLIENT_CONNECTION 0x00100000U + /* * Flags for use in return codes of child processes */ @@ -791,9 +830,6 @@ struct client_state /** socket to talk to client (web browser) */ jb_socket cfd; - /** socket to talk to server (web server or proxy) */ - jb_socket sfd; - /** current connection to the server (may go through a proxy) */ struct reusable_connection server_connection; @@ -845,11 +881,17 @@ struct client_state unsigned long long content_length; #ifdef FEATURE_CONNECTION_KEEP_ALIVE + /* XXX: is this the right location? */ + /** Expected length of content after which we * should stop reading from the server socket. */ - /* XXX: is this the right location? */ unsigned long long expected_content_length; + + /** Expected length of content after which we + * should stop reading from the client socket. + */ + unsigned long long expected_client_content_length; #endif /* def FEATURE_CONNECTION_KEEP_ALIVE */ #ifdef FEATURE_TRUST