Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
KHTTP_FCGI_INIT(3)	     Library Functions Manual	      KHTTP_FCGI_INIT(3)

NAME
     khttp_fcgi_init, khttp_fcgi_initx -- initialise a FastCGI context for kcgi

LIBRARY
     libkcgi

SYNOPSIS
     #include <sys/types.h>
     #include <stdarg.h>
     #include <stdint.h>
     #include <kcgi.h>

     enum kcgi_err
     khttp_fcgi_init(struct kfcgi **fcgi, const struct kvalid *keys,
	 size_t keysz, const char *const *pages, size_t pagesz, size_t defpage);

     enum kcgi_err
     khttp_fcgi_initx(struct kreq **fcgi, const char *const *mimes,
	 size_t mimemax, const struct kvalid *keys, size_t keysz,
	 const struct kmimemap *mimemap, size_t defmime,
	 const char *const *pages, size_t pagesz, size_t defpage, void *arg,
	 void (*argfree)(void *arg), unsigned int debugging,
	 const struct kopts *opts);

DESCRIPTION
     The khttp_fcgi_init() and khttp_fcgi_initx() functions initialise a FastCGI
     context  for kcgi(3).  These functions will only work if invoked as FastCGI
     servers, for example, kfcgi(8).  They should be called as early as possible
     in the life-span of a FastCGI application, preferably directly  after  ini-
     tialisation.

     The collective arguments are defined in khttp_parse(3).  Function arguments
     are  not copied: all pointers are passed by reference and used in later in-
     vocations of khttp_fcgi_parse(3).

     The first form, khttp_fgci_init(), is for applications  using  the  system-
     recognised MIME types.  This should work well enough for most applications.
     It  is  equivalent to invoking the second form, khttp_fcgi_initx(), as fol-
     lows:

	   khttp_fcgi_initx(fcgi, kmimetypes, KMIME__MAX,
	     keys, keysz, ksuffixmap, KMIME_TEXT_HTML,
	     pages, pagesz, defpage, NULL, NULL, 0, NULL);

     After invocation with a return value of KCGI_OK, the fcgi pointer is filled
     in  (and  must  be  later	be  freed  with  khttp_fcgi_free(3))   and   the
     khttp_fcgi_parse(3) and khttp_fcgi_parsex(3) functions may be invoked.

     Note:  in	accordance with the FastCGI specification, khttp_fcgi_init() and
     khttp_fcgi_initx() will install signal handlers for SIGTERM.  These  should
     not  be changed by the calling application, but are not prohibited from do-
     ing so.  The consequences are that a server wishing to halt the application
     must use SIGKILL instead of the FastCGI-specified SIGTERM	and  suffer  the
     consequences of not properly exiting the parse loop.

RETURN VALUES
     khttp_fcgi_init() and khttp_fcgi_initx() return an error code:

     KCGI_OK
	  Success (not an error).

     KCGI_ENOMEM
	  Memory  failure.  This can occur in many places: spawning a child, al-
	  locating memory, creating sockets, etc.

     KCGI_ENFILE
	  Could not allocate file descriptors.

     KCGI_EAGAIN
	  Could not spawn a child.

     KCGI_SYSTEM
	  Opaque operating system error.

     KCGI_HUP
	  Hangup: the function was not invoked in a FastCGI context.

     On failure, the calling application should terminate as soon as possible.

SEE ALSO
     kcgi(3), khttp_fcgi_free(3), khttp_fcgi_parse(3), khttp_parse(3)

AUTHORS
     The khttp_fcgi_init() and	khttp_fcgi_initx()  functions  were  written  by
     Kristaps Dzonsons <kristaps@bsd.lv>.

FreeBSD ports 15.quarterly	   $Mdocdate$		      KHTTP_FCGI_INIT(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=khttp_fcgi_init&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help