Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

parsers.h File Reference

Declares functions to parse/crunch headers and pages. More...

Go to the source code of this file.

Defines

#define PARSERS_H_VERSION   "$Id: parsers.h,v 2.0 2002/06/04 14:34:21 jongfoster Exp $"

Functions

int flush_socket (jb_socket fd, struct client_state *csp)
jb_err add_to_iob (struct client_state *csp, char *buf, int n)
char * get_header (struct client_state *csp)
char * get_header_value (const struct list *header_list, const char *header_name)
char * sed (const struct parsers pats[], const add_header_func_ptr more_headers[], struct client_state *csp)
jb_err crumble (struct client_state *csp, char **header)
jb_err client_referrer (struct client_state *csp, char **header)
jb_err client_uagent (struct client_state *csp, char **header)
jb_err client_ua (struct client_state *csp, char **header)
jb_err client_from (struct client_state *csp, char **header)
jb_err client_send_cookie (struct client_state *csp, char **header)
jb_err client_x_forwarded (struct client_state *csp, char **header)
jb_err client_accept_encoding (struct client_state *csp, char **header)
jb_err client_te (struct client_state *csp, char **header)
jb_err client_host_adder (struct client_state *csp)
jb_err client_cookie_adder (struct client_state *csp)
jb_err client_xtra_adder (struct client_state *csp)
jb_err client_accept_encoding_adder (struct client_state *csp)
jb_err client_x_forwarded_adder (struct client_state *csp)
jb_err connection_close_adder (struct client_state *csp)
jb_err server_set_cookie (struct client_state *csp, char **header)
jb_err server_content_type (struct client_state *csp, char **header)
jb_err server_content_length (struct client_state *csp, char **header)
jb_err server_content_md5 (struct client_state *csp, char **header)
jb_err server_content_encoding (struct client_state *csp, char **header)
jb_err server_transfer_coding (struct client_state *csp, char **header)
jb_err server_http (struct client_state *csp, char **header)

Variables

const struct parsers client_patterns []
const struct parsers server_patterns []
const add_header_func_ptr add_client_headers []
const add_header_func_ptr add_server_headers []
const char parsers_rcs []
const char parsers_h_rcs []


Detailed Description

Declares functions to parse/crunch headers and pages.

Functions declared include: `add_to_iob', `client_cookie_adder', `client_from', `client_referrer', `client_send_cookie', `client_ua', `client_uagent', `client_x_forwarded', `client_x_forwarded_adder', `client_xtra_adder', `content_type', `crumble', `destroy_list', `enlist', `flush_socket', `free_http_request', `get_header', `list_to_text', `parse_http_request', `sed', and `server_set_cookie'.

Log:
parsers.h,v
Revision 2.0 2002/06/04 14:34:21 jongfoster Moving source files to src/

Revision 1.26 2002/05/08 15:59:53 oes Changed add_to_iob signature (now returns jb_err)

Revision 1.25 2002/03/26 22:29:55 swa we have a new homepage!

Revision 1.24 2002/03/24 13:25:43 swa name change related issues

Revision 1.23 2002/03/13 00:27:05 jongfoster Killing warnings

Revision 1.22 2002/03/09 20:03:52 jongfoster

THIS WAS A MAJOR BUG - it caused frequent, unpredictable crashes, and also frequently caused JB to jump to 100% CPU and stay there. (Because it thought it had just read ((unsigned)-1) == 4Gb of data...)

Revision 1.21 2002/03/07 03:46:17 oes Fixed compiler warnings

Revision 1.20 2002/02/20 23:15:13 jongfoster Parsing functions now handle out-of-memory gracefully by returning an error code.

Revision 1.19 2002/01/17 21:03:47 jongfoster Moving all our URL and URL pattern parsing code to urlmatch.c.

Revision 1.18 2001/10/26 17:40:23 oes Introduced get_header_value() Removed client_accept()

Revision 1.17 2001/10/13 12:47:32 joergs Removed client_host, added client_host_adder

Revision 1.16 2001/10/07 18:50:16 oes Added server_content_encoding, renamed server_transfer_encoding

Revision 1.15 2001/10/07 18:01:55 oes Changed server_http11 to server_http

Revision 1.14 2001/10/07 15:45:48 oes added client_accept_encoding, client_te, client_accept_encoding_adder

renamed content_type and content_length

fixed client_host and strclean prototypes

Revision 1.13 2001/09/29 12:56:03 joergs IJB now changes HTTP/1.1 to HTTP/1.0 in requests and answers.

Revision 1.12 2001/09/13 23:05:50 jongfoster Changing the string paramater to the header parsers a "const".

Revision 1.11 2001/07/31 14:46:53 oes Added prototype for connection_close_adder

Revision 1.10 2001/07/30 22:08:36 jongfoster Tidying up defines:

Revision 1.9 2001/07/29 18:43:08 jongfoster Changing ifdef _FILENAME_H to FILENAME_H_INCLUDED, to conform to ANSI C rules.

Revision 1.8 2001/07/13 14:01:54 oes Removed all ifdef PCRS

Revision 1.7 2001/06/29 13:32:14 oes Removed logentry from cancelled commit

Revision 1.6 2001/06/03 19:12:38 oes deleted const struct interceptors

Revision 1.5 2001/05/31 21:30:33 jongfoster Removed list code - it's now in list.[ch] Renamed "permission" to "action", and changed many features to use the actions file rather than the global config.

Revision 1.4 2001/05/27 13:19:06 oes Patched Joergs solution for the content-length in.

Revision 1.3 2001/05/26 13:39:32 jongfoster Only crunches Content-Length header if applying RE filtering. Without this fix, Microsoft Windows Update wouldn't work.

Revision 1.2 2001/05/20 01:21:20 jongfoster Version 2.9.4 checkin.

Revision 1.1.1.1 2001/05/15 13:59:01 oes Initial import of version 2.9.3 source tree


Function Documentation

jb_err add_to_iob struct client_state   csp,
char *    buf,
int    n
 

Add content to the buffered page, expanding the buffer if necessary.

Parameters:
csp  Current client state (buffers, headers, etc...)
buf  holds the content to be added to the page
n  number of bytes to be added
Returns:
JB_ERR_OK on success, JB_ERR_MEMORY if out-of-memory or buffer limit reached.

jb_err client_accept_encoding struct client_state   csp,
char **    header
 

Rewrite the client's Accept-Encoding header so that if doesn't allow compression, if the action applies.

Note For HTTP/1.0 the absence of the header is enough.

Parameters:
csp  Current client state (buffers, headers, etc...)
header  On input, pointer to header to modify. On output, pointer to the modified header, or NULL to remove the header. This function frees the original string if necessary.
Returns:
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.

jb_err client_accept_encoding_adder struct client_state   csp
 

Add an Accept-Encoding header to the client's request that disables compression if the action applies, and the header is not already there.

Called from `sed'.

Note For HTTP/1.0, the absence of the header is enough.

Parameters:
csp  Current client state (buffers, headers, etc...)
Returns:
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.

jb_err client_cookie_adder struct client_state   csp
 

Used in the add_client_headers list.

Called from `sed'.

Parameters:
csp  Current client state (buffers, headers, etc...)
Returns:
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.

jb_err client_from struct client_state   csp,
char **    header
 

Handle the "from" config setting properly.

Called from `sed'.

Parameters:
csp  Current client state (buffers, headers, etc...)
header  On input, pointer to header to modify. On output, pointer to the modified header, or NULL to remove the header. This function frees the original string if necessary.
Returns:
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.

jb_err client_host_adder struct client_state   csp
 

(re)adds the host header.

Called from `sed'.

Parameters:
csp  Current client state (buffers, headers, etc...)
Returns:
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.

jb_err client_referrer struct client_state   csp,
char **    header
 

Handle the "referer" config setting properly.

Called from `sed'.

Parameters:
csp  Current client state (buffers, headers, etc...)
header  On input, pointer to header to modify. On output, pointer to the modified header, or NULL to remove the header. This function frees the original string if necessary.
Returns:
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.

jb_err client_send_cookie struct client_state   csp,
char **    header
 

Handle the "cookie" header properly.

Called from `sed'. If cookie is accepted, add it to the cookie_list, else we crunch it. Mmmmmmmmmmm ... cookie ......

Parameters:
csp  Current client state (buffers, headers, etc...)
header  On input, pointer to header to modify. On output, pointer to the modified header, or NULL to remove the header. This function frees the original string if necessary.
Returns:
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.

jb_err client_te struct client_state   csp,
char **    header
 

Rewrite the client's TE header so that if doesn't allow compression, if the action applies.

Parameters:
csp  Current client state (buffers, headers, etc...)
header  On input, pointer to header to modify. On output, pointer to the modified header, or NULL to remove the header. This function frees the original string if necessary.
Returns:
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.

jb_err client_ua struct client_state   csp,
char **    header
 

Handle "ua-" headers properly.

Called from `sed'.

Parameters:
csp  Current client state (buffers, headers, etc...)
header  On input, pointer to header to modify. On output, pointer to the modified header, or NULL to remove the header. This function frees the original string if necessary.
Returns:
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.

jb_err client_uagent struct client_state   csp,
char **    header
 

Handle the "user-agent" config setting properly and remember its original value to enable browser bug workarounds.

Called from `sed'.

Parameters:
csp  Current client state (buffers, headers, etc...)
header  On input, pointer to header to modify. On output, pointer to the modified header, or NULL to remove the header. This function frees the original string if necessary.
Returns:
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.

jb_err client_x_forwarded struct client_state   csp,
char **    header
 

Handle the "x-forwarded-for" config setting properly, also used in the add_client_headers list.

Called from `sed'.

Parameters:
csp  Current client state (buffers, headers, etc...)
header  On input, pointer to header to modify. On output, pointer to the modified header, or NULL to remove the header. This function frees the original string if necessary.
Returns:
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.

jb_err client_x_forwarded_adder struct client_state   csp
 

Used in the add_client_headers list.

Called from `sed'.

Parameters:
csp  Current client state (buffers, headers, etc...)
Returns:
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.

jb_err client_xtra_adder struct client_state   csp
 

Used in the add_client_headers list.

Called from `sed'.

Parameters:
csp  Current client state (buffers, headers, etc...)
Returns:
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.

jb_err connection_close_adder struct client_state   csp
 

Adds a "Connection: close" header to csp->headers as a temporary fix for the needed but missing HTTP/1.1 support.

Called from `sed'.

FIXME This whole function shouldn't be neccessary!

Parameters:
csp  Current client state (buffers, headers, etc...)
Returns:
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.

jb_err crumble struct client_state   csp,
char **    header
 

This is called if a header matches a pattern to "crunch".

Parameters:
csp  Current client state (buffers, headers, etc...)
header  On input, pointer to header to modify. On output, pointer to the modified header, or NULL to remove the header. This function frees the original string if necessary.
Returns:
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.

int flush_socket jb_socket    fd,
struct client_state   csp
 

Write any pending "buffered" content.

Parameters:
fd  file descriptor of the socket to read
csp  Current client state (buffers, headers, etc...)
Returns:
On success, the number of bytes written are returned (zero indicates nothing was written). On error, -1 is returned, and errno is set appropriately. If count is zero and the file descriptor refers to a regular file, 0 will be returned without causing any other effect. For a special file, the results are not portable.

char* get_header struct client_state   csp
 

This (odd) routine will parse the csp->iob.

Parameters:
csp  Current client state (buffers, headers, etc...)
Returns:
Any one of the following: 1) a pointer to a dynamically allocated string that contains a header line 2) NULL indicating that the end of the header was reached 3) "" indicating that the end of the iob was reached before finding a complete header line.

char* get_header_value const struct list   header_list,
const char *    header_name
 

Get the value of a given header from a chained list of header lines or return NULL if no such header is present in the list.

Parameters:
header_list  pointer to list
header_name  string with name of header to look for. Trailing colon required, capitalization doesn't matter.
Returns:
NULL if not found, else value of header

char* sed const struct parsers    pats[],
const add_header_func_ptr    more_headers[],
struct client_state   csp
 

add, delete or modify lines in the HTTP header streams.

On entry, it receives a linked list of headers space that was allocated dynamically (both the list nodes and the header contents). As a side effect it frees the space used by the original header lines.

Parameters:
pats  list of patterns to match against headers
more_headers  list of functions to add more headers (client or server)
csp  Current client state (buffers, headers, etc...)
Returns:
Single pointer to a fully formed header, or NULL on out-of-memory error.

jb_err server_content_encoding struct client_state   csp,
char **    header
 

Prohibit filtering (CT_TABOO) if content encoding compresses.

Parameters:
csp  Current client state (buffers, headers, etc...)
header  On input, pointer to header to modify. On output, pointer to the modified header, or NULL to remove the header. This function frees the original string if necessary.
Returns:
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.

jb_err server_content_length struct client_state   csp,
char **    header
 

Adjust Content-Length header if we modified the body.

Parameters:
csp  Current client state (buffers, headers, etc...)
header  On input, pointer to header to modify. On output, pointer to the modified header, or NULL to remove the header. This function frees the original string if necessary.
Returns:
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.

jb_err server_content_md5 struct client_state   csp,
char **    header
 

Crumble any Content-MD5 headers if the document was modified.

FIXME: Should we re-compute instead?

Parameters:
csp  Current client state (buffers, headers, etc...)
header  On input, pointer to header to modify. On output, pointer to the modified header, or NULL to remove the header. This function frees the original string if necessary.
Returns:
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.

jb_err server_content_type struct client_state   csp,
char **    header
 

Set the content-type for filterable types (text/.*, javascript and image/gif) unless filtering has been forbidden (CT_TABOO) while parsing earlier headers.

Parameters:
csp  Current client state (buffers, headers, etc...)
header  On input, pointer to header to modify. On output, pointer to the modified header, or NULL to remove the header. This function frees the original string if necessary.
Returns:
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.

jb_err server_http struct client_state   csp,
char **    header
 

Save the HTTP Status into csp->http->status Set CT_TABOO to prevent filtering if the answer is a partial range (HTTP status 206) Rewrite HTTP/1.1 answers to HTTP/1.0 if +downgrade action applies.

  • * - * -
Parameters:
csp  Current client state (buffers, headers, etc...)
header  On input, pointer to header to modify. On output, pointer to the modified header, or NULL to remove the header. This function frees the original string if necessary.
Returns:
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.

jb_err server_set_cookie struct client_state   csp,
char **    header
 

Handle the server "cookie" header properly.

Log cookie to the jar file. Then "crunch" it, or accept it. Called from `sed'.

Parameters:
csp  Current client state (buffers, headers, etc...)
header  On input, pointer to header to modify. On output, pointer to the modified header, or NULL to remove the header. This function frees the original string if necessary.
Returns:
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.

jb_err server_transfer_coding struct client_state   csp,
char **    header
 

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.

  • * - * -
Parameters:
csp  Current client state (buffers, headers, etc...)
header  On input, pointer to header to modify. On output, pointer to the modified header, or NULL to remove the header. This function frees the original string if necessary.
Returns:
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.


Variable Documentation

const char parsers_h_rcs[]
 

Version information about parsers.h.

const char parsers_rcs[]
 

Version information about parsers.c.


Generated on Tue Jun 4 18:54:49 2002 for Privoxy 3.1.1 by doxygen1.2.15