ne_set_request_body_buffer, ne_set_request_body_fd, ne_set_request_body_provider — include a message body with a request
#include <ne_request.h>
| void ne_set_request_body_buffer( | ne_request *req, | 
| const char *buf, | |
| size_t count ); | 
| int ne_set_request_body_fd( | ne_request *req, | 
| int fd, | |
| ne_off_t begin, | |
| ne_off_t length ); | 
| typedef ssize_t (*ne_provide_body)( | void *userdata, | 
| char *data, | |
| size_t buflen ); | 
| int ne_set_request_body_provider( | ne_request *req, | 
| ne_off_t length, | |
| ne_provide_body provider, | |
| void *userdata ); | 
The ne_set_request_body_buffer
function specifies that a message body should be included with the
body, which is stored in the count bytes buffer
buf.
The ne_set_request_body_fd function
can be used to include a message body with a request which is read
from a file descriptor.  The body is read from the file descriptor
fd, which must be a associated with a seekable
file (not a pipe, socket, or FIFO).  count
bytes are read, beginning at offset begin
(hence, passing begin as zero means the body is read
from the beginning of the file).
For both above functions, the source of the request
        body must survive until the request has been dispatched;
        neither the memory buffer passed to
        ne_set_request_body_buffer nor the file
        descriptor passed to
        ne_set_request_body_fd are copied
        internally.
The ne_set_request_body_provider
	function can be used to include a message body with a request
	which is provided by a callback function. The body length
	passed in the length paramater must be
	positive, or if a chunked request body is required, as covered
	below, -1 can be used.
Before sending the body, the callback is invoked once
        with the buflen parameter as
        0. The body is then read by invoking the
        callback repeatedly until it returns 0
        indicating the end-of-body. The callback return value must be
        as follows:
	
| less than  | An error; the request will be
	    aborted. The session error string must be set via ne_set_error. | 
| 
 | End of body. | 
| between  | Number of bytes of request body data. | 
Chunked request bodies are only sent when
          ne_set_request_body_provider is used
          and -1 is passed as the
          length. In this case, the length of
          the request body does not have to be determined ahead of
          time. The end of the request body is indicated by returning
          0 from the callback function.
Before using a chunked request body, the caller must
          determine that HTTP/1.1 is supported (by the origin server
          and any HTTP proxy server configured). This can be done by
          testing that ne_version_pre_http11
          returns zero after performing an OPTIONS
          or HEAD request.