FreeBSD Manual Pages
KHTTP_BODY(3) BSD Library Functions Manual KHTTP_BODY(3) NAME khttp_body, khttp_body_compress -- close the HTTP header sequence for kcgi LIBRARY library "libkcgi" SYNOPSIS #include <sys/types.h> #include <stdarg.h> #include <stdint.h> #include <kcgi.h> enum kcgi_err khttp_body(struct kreq *req); enum kcgi_err khttp_body_compress(struct kreq *req, int compress); DESCRIPTION The khttp_body() and khttp_body_compress() functions terminate the zero or more khttp_head(3) calls for a kcgi(3) context req. After these func- tions, invoking khttp_head(3) or invoking khttp_body() or khttp_body_compress() again results in undefined behaviour. The khttp_body() function checks whether compression should be enabled by examining request headers. If applicable, it emits the appropriate con- tent encoding header and enables compressed output for subsequent khttp_write(3) calls. The khttp_body_compress() function accepts the compress argument which, if zero, disables compressed output for subsequent khttp_write(3) calls. This is appropriate for caller-managed compression, such as when sending pre-compressed files. If non-zero, compressed output is enabled. In ei- ther case, content encoding headers must be managed by the caller. RETURN VALUES The khttp_body() and khttp_body_compress() functions return an enum kcgi_err indicating the error state. KCGI_OK Success (not an error). KCGI_ENOMEM Internal memory allocation failure. KCGI_SYSTEM Internal system error writing to the output stream. KCGI_HUP The output connection has been terminated. For FastCGI connec- tions, the current connection should be released with khttp_free(3) and parse loop reentered. KCGI_FORM Returned by khttp_body_compress() if compression was requested but is not provided by the operating system. EXAMPLES Write out an HTTP header sequence and text content with automatic com- pression detection. Assume that r is a pointer to a struct kreq success- fully initialised by khttp_parse(3). khttp_head(r, kresps[KRESP_STATUS], "%s", khttps[KHTTP_200]); khttp_head(r, kresps[KRESP_CONTENT_TYPE], "%s", kmimetypes[KMIME_TEXT_PLAIN]); khttp_body(r); khttp_puts(r, "Hello, world!\n"); To explicitly disable compression: khttp_head(r, kresps[KRESP_STATUS], "%s", khttps[KHTTP_200]); khttp_head(r, kresps[KRESP_CONTENT_TYPE], "%s", kmimetypes[KMIME_TEXT_PLAIN]); khttp_body_compress(r, 0); khttp_puts(r, "Hello, world!\n"); To disable compression, but emit a compressed file: khttp_head(r, kresps[KRESP_STATUS], "%s", khttps[KHTTP_200]); khttp_head(r, kresps[KRESP_CONTENT_TYPE], "%s", kmimetypes[KMIME_TEXT_PLAIN]); khttp_head(r, kresps[KRESP_CONTENT_ENCODING], "%s", "gzip"); khttp_body_compress(r, 0); khttp_template(r, NULL, "compressed.txt.gz"); SEE ALSO kcgi(3), khttp_head(3), zlib(3) AUTHORS The khttp_body() function was written by Kristaps Dzonsons <kristaps@bsd.lv>. BSD September 28, 2018 BSD
NAME | LIBRARY | SYNOPSIS | DESCRIPTION | RETURN VALUES | EXAMPLES | SEE ALSO | AUTHORS
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=khttp_body&sektion=3&manpath=FreeBSD+13.0-RELEASE+and+Ports>