diff options
Diffstat (limited to 'docs/manual/misc/client_block_api.html')
-rw-r--r-- | docs/manual/misc/client_block_api.html | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/docs/manual/misc/client_block_api.html b/docs/manual/misc/client_block_api.html deleted file mode 100644 index c451d19fd9..0000000000 --- a/docs/manual/misc/client_block_api.html +++ /dev/null @@ -1,87 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> -<HTML> -<HEAD> -<TITLE>Reading Client Input in Apache 1.2</TITLE> -</HEAD> - -<!-- Background white, links blue (unvisited), navy (visited), red (active) --> -<BODY - BGCOLOR="#FFFFFF" - TEXT="#000000" - LINK="#0000FF" - VLINK="#000080" - ALINK="#FF0000" -> -<!--#include virtual="header.html" --> -<H1 ALIGN="CENTER">Reading Client Input in Apache 1.2</H1> - -<HR> - -<P>Apache 1.1 and earlier let modules handle POST and PUT requests by -themselves. The module would, on its own, determine whether the -request had an entity, how many bytes it was, and then called a -function (<CODE>read_client_block</CODE>) to get the data. - -<P>However, HTTP/1.1 requires several things of POST and PUT request -handlers that did not fit into this module, and all existing modules -have to be rewritten. The API calls for handling this have been -further abstracted, so that future HTTP protocol changes can be -accomplished while remaining backwards-compatible.</P> - -<HR> - -<H3>The New API Functions</H3> - -<PRE> - int ap_setup_client_block (request_rec *, int read_policy); - int ap_should_client_block (request_rec *); - long ap_get_client_block (request_rec *, char *buffer, int buffer_size); -</PRE> - -<OL> -<LI>Call <CODE>ap_setup_client_block()</CODE> near the beginning of the request - handler. This will set up all the necessary properties, and - will return either OK, or an error code. If the latter, - the module should return that error code. The second parameter - selects the policy to apply if the request message indicates a - body, and how a chunked - transfer-coding should be interpreted. Choose one of -<PRE> - REQUEST_NO_BODY Send 413 error if message has any body - REQUEST_CHUNKED_ERROR Send 411 error if body without Content-Length - REQUEST_CHUNKED_DECHUNK If chunked, remove the chunks for me. - REQUEST_CHUNKED_PASS Pass the chunks to me without removal. -</PRE> - In order to use the last two options, the caller MUST provide a buffer - large enough to hold a chunk-size line, including any extensions. - - - -<LI>When you are ready to possibly accept input, call - <CODE>ap_should_client_block()</CODE>. - This will tell the module whether or not to read input. If it is 0, - the module should assume that the input is of a non-entity type - (<EM>e.g.</EM>, a GET request). A nonzero response indicates that the module - should proceed (to step 3). - This step also sends a 100 Continue response - to HTTP/1.1 clients, so should not be called until the module - is <STRONG>*definitely*</STRONG> ready to read content. (otherwise, the - point of the - 100 response is defeated). Never call this function more than once. - -<LI>Finally, call <CODE>ap_get_client_block</CODE> in a loop. Pass it a - buffer and its - size. It will put data into the buffer (not necessarily the full - buffer, in the case of chunked inputs), and return the length of - the input block. When it is done reading, it will - return 0 if EOF, or -1 if there was an error. - -</OL> - -<P>As an example, please look at the code in -<CODE>mod_cgi.c</CODE>. This is properly written to the new API -guidelines.</P> - -<!--#include virtual="footer.html" --> -</BODY> -</HTML> |