The hunchentoot Reference Manual

This is the hunchentoot Reference Manual, version 1.3.0, generated automatically by Declt version 4.0 beta 2 "William Riker" on Sat Dec 03 21:41:48 2022 GMT+0.

Table of Contents


1 Introduction


2 Systems

The main system appears first, followed by any subsystem dependency.


2.1 hunchentoot

Hunchentoot is a HTTP server based on USOCKET and BORDEAUX-THREADS. It supports HTTP 1.1, serves static files, has a simple framework for user-defined handlers and can be extended through subclassing.

License

BSD-2-Clause

Version

1.3.0

Dependencies
  • chunga (system).
  • cl-base64 (system).
  • cl-fad (system).
  • cl-ppcre (system).
  • flexi-streams (system).
  • cl+ssl (system).
  • md5 (system).
  • alexandria (system).
  • rfc2388 (system).
  • trivial-backtrace (system).
  • usocket (system).
  • bordeaux-threads (system).
Source

hunchentoot.asd.

Child Components

3 Modules

Modules are listed depth-first from the system components tree.


3.1 hunchentoot/url-rewrite

Source

hunchentoot.asd.

Parent Component

hunchentoot (system).

Child Components

4 Files

Files are sorted by type and then listed depth-first from the systems components trees.


4.1 Lisp


4.1.1 hunchentoot/hunchentoot.asd

Source

hunchentoot.asd.

Parent Component

hunchentoot (system).

ASDF Systems

hunchentoot.

Packages

hunchentoot-asd.


4.1.2 hunchentoot/url-rewrite/packages.lisp

Source

hunchentoot.asd.

Parent Component

url-rewrite (module).

Packages

url-rewrite.


4.1.3 hunchentoot/url-rewrite/specials.lisp

Dependency

packages.lisp (file).

Source

hunchentoot.asd.

Parent Component

url-rewrite (module).

Public Interface
Internals

4.1.4 hunchentoot/url-rewrite/primitives.lisp

Dependency

specials.lisp (file).

Source

hunchentoot.asd.

Parent Component

url-rewrite (module).

Internals

4.1.5 hunchentoot/url-rewrite/util.lisp

Dependency

primitives.lisp (file).

Source

hunchentoot.asd.

Parent Component

url-rewrite (module).

Internals

4.1.6 hunchentoot/url-rewrite/url-rewrite.lisp

Dependency

util.lisp (file).

Source

hunchentoot.asd.

Parent Component

url-rewrite (module).

Public Interface

4.1.7 hunchentoot/packages.lisp

Dependency

url-rewrite (module).

Source

hunchentoot.asd.

Parent Component

hunchentoot (system).

Packages

hunchentoot.


4.1.8 hunchentoot/compat.lisp

Dependency

packages.lisp (file).

Source

hunchentoot.asd.

Parent Component

hunchentoot (system).

Internals

4.1.9 hunchentoot/specials.lisp

Dependency

compat.lisp (file).

Source

hunchentoot.asd.

Parent Component

hunchentoot (system).

Public Interface
Internals

4.1.10 hunchentoot/conditions.lisp

Dependency

specials.lisp (file).

Source

hunchentoot.asd.

Parent Component

hunchentoot (system).

Public Interface
Internals

4.1.11 hunchentoot/mime-types.lisp

Dependency

conditions.lisp (file).

Source

hunchentoot.asd.

Parent Component

hunchentoot (system).

Public Interface

mime-type (function).

Internals

4.1.12 hunchentoot/util.lisp

Dependency

mime-types.lisp (file).

Source

hunchentoot.asd.

Parent Component

hunchentoot (system).

Public Interface
Internals

4.1.13 hunchentoot/log.lisp

Dependency

util.lisp (file).

Source

hunchentoot.asd.

Parent Component

hunchentoot (system).

Internals

with-log-stream (macro).


4.1.14 hunchentoot/cookie.lisp

Dependency

log.lisp (file).

Source

hunchentoot.asd.

Parent Component

hunchentoot (system).

Public Interface
Internals

4.1.15 hunchentoot/reply.lisp

Dependency

cookie.lisp (file).

Source

hunchentoot.asd.

Parent Component

hunchentoot (system).

Public Interface
Internals

header-out-set-p (function).


4.1.16 hunchentoot/request.lisp

Dependency

reply.lisp (file).

Source

hunchentoot.asd.

Parent Component

hunchentoot (system).

Public Interface
Internals

4.1.17 hunchentoot/session.lisp

Dependency

request.lisp (file).

Source

hunchentoot.asd.

Parent Component

hunchentoot (system).

Public Interface
Internals

4.1.18 hunchentoot/misc.lisp

Dependency

session.lisp (file).

Source

hunchentoot.asd.

Parent Component

hunchentoot (system).

Public Interface
Internals

4.1.19 hunchentoot/headers.lisp

Dependency

misc.lisp (file).

Source

hunchentoot.asd.

Parent Component

hunchentoot (system).

Public Interface

send-headers (function).

Internals

4.1.20 hunchentoot/set-timeouts.lisp

Dependency

headers.lisp (file).

Source

hunchentoot.asd.

Parent Component

hunchentoot (system).

Internals

set-timeouts (function).


4.1.21 hunchentoot/taskmaster.lisp

Dependency

set-timeouts.lisp (file).

Source

hunchentoot.asd.

Parent Component

hunchentoot (system).

Public Interface
Internals

4.1.22 hunchentoot/acceptor.lisp

Dependency

taskmaster.lisp (file).

Source

hunchentoot.asd.

Parent Component

hunchentoot (system).

Public Interface
Internals

4.1.23 hunchentoot/ssl.lisp

Dependency

acceptor.lisp (file).

Source

hunchentoot.asd.

Parent Component

hunchentoot (system).

Public Interface

4.1.24 hunchentoot/easy-handlers.lisp

Dependency

ssl.lisp (file).

Source

hunchentoot.asd.

Parent Component

hunchentoot (system).

Public Interface
Internals

5 Packages

Packages are listed by definition order.


5.1 url-rewrite

Source

packages.lisp.

Use List

common-lisp.

Used By List

hunchentoot.

Public Interface
Internals

5.2 hunchentoot-asd

Source

hunchentoot.asd.

Use List
  • asdf/interface.
  • common-lisp.

5.3 hunchentoot

Source

packages.lisp.

Nickname

tbnl

Use List
  • alexandria.
  • chunga.
  • cl-ppcre.
  • common-lisp.
  • flexi-streams.
  • url-rewrite.
Public Interface
Internals

6 Definitions

Definitions are sorted by export status, category, package, and then by lexicographic order.


6.1 Public Interface


6.1.1 Constants

Constant: +http-accepted+

HTTP return code (202) for ’Accepted’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-authorization-required+

HTTP return code (401) for ’Authorization Required’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-bad-gateway+

HTTP return code (502) for ’Bad Gateway’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-bad-request+

HTTP return code (400) for ’Bad Request’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-conflict+

HTTP return code (409) for ’Conflict’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-continue+

HTTP return code (100) for ’Continue’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-created+

HTTP return code (201) for ’Created’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-expectation-failed+

HTTP return code (417) for ’Expectation Failed’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-failed-dependency+

HTTP return code (424) for ’Failed Dependency’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-forbidden+

HTTP return code (403) for ’Forbidden’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-gateway-time-out+

HTTP return code (504) for ’Gateway Time-out’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-gone+

HTTP return code (410) for ’Gone’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-internal-server-error+

HTTP return code (500) for ’Internal Server Error’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-length-required+

HTTP return code (411) for ’Length Required’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-method-not-allowed+

HTTP return code (405) for ’Method Not Allowed’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-moved-permanently+

HTTP return code (301) for ’Moved Permanently’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-moved-temporarily+

HTTP return code (302) for ’Moved Temporarily’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-multi-status+

HTTP return code (207) for ’Multi-Status’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-multiple-choices+

HTTP return code (300) for ’Multiple Choices’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-network-authentication-required+

HTTP return code (511) for ’Network Authentication Required’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-no-content+

HTTP return code (204) for ’No Content’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-non-authoritative-information+

HTTP return code (203) for ’Non-Authoritative Information’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-not-acceptable+

HTTP return code (406) for ’Not Acceptable’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-not-found+

HTTP return code (404) for ’Not Found’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-not-implemented+

HTTP return code (501) for ’Not Implemented’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-not-modified+

HTTP return code (304) for ’Not Modified’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-ok+

HTTP return code (200) for ’OK’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-partial-content+

HTTP return code (206) for ’Partial Content’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-payment-required+

HTTP return code (402) for ’Payment Required’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-precondition-failed+

HTTP return code (412) for ’Precondition Failed’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-precondition-required+

HTTP return code (428) for ’Precondition Required’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-proxy-authentication-required+

HTTP return code (407) for ’Proxy Authentication Required’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-request-entity-too-large+

HTTP return code (413) for ’Request Entity Too Large’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-request-header-fields-too-large+

HTTP return code (431) for ’Request Header Fields Too Large’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-request-time-out+

HTTP return code (408) for ’Request Time-out’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-request-uri-too-large+

HTTP return code (414) for ’Request-URI Too Large’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-requested-range-not-satisfiable+

HTTP return code (416) for ’Requested range not satisfiable’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-reset-content+

HTTP return code (205) for ’Reset Content’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-see-other+

HTTP return code (303) for ’See Other’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-service-unavailable+

HTTP return code (503) for ’Service Unavailable’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-switching-protocols+

HTTP return code (101) for ’Switching Protocols’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-temporary-redirect+

HTTP return code (307) for ’Temporary Redirect’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-too-many-requests+

HTTP return code (429) for ’Too Many Requests’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-unsupported-media-type+

HTTP return code (415) for ’Unsupported Media Type’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-use-proxy+

HTTP return code (305) for ’Use Proxy’.

Package

hunchentoot.

Source

specials.lisp.

Constant: +http-version-not-supported+

HTTP return code (505) for ’Version not supported’.

Package

hunchentoot.

Source

specials.lisp.


6.1.2 Special variables

Special Variable: *acceptor*

The current ACCEPTOR object while in the context of a request.

Package

hunchentoot.

Source

specials.lisp.

Special Variable: *catch-errors-p*

Whether Hunchentoot should catch and log errors (or rather invoke the debugger).

Package

hunchentoot.

Source

specials.lisp.

Special Variable: *content-types-for-url-rewrite*

The content types for which url-rewriting is OK. See *REWRITE-FOR-SESSION-URLS*.

Package

hunchentoot.

Source

specials.lisp.

Special Variable: *default-connection-timeout*

The default connection timeout used when an acceptor is reading from and writing to a socket stream.

Package

hunchentoot.

Source

specials.lisp.

Special Variable: *default-content-type*

The default content-type header which is returned to the client. If this is text content type, the character set used for encoding the response will automatically be added to the content type in a “charset” attribute.

Package

hunchentoot.

Source

specials.lisp.

Special Variable: *dispatch-table*

A global list of dispatch functions.

Package

hunchentoot.

Source

easy-handlers.lisp.

Special Variable: *file-upload-hook*

If this is not NIL, it should be a unary function which will be called with a pathname for each file which is uploaded to Hunchentoot. The pathname denotes the temporary file to which the uploaded file is written. The hook is called directly before the file is created.

Package

hunchentoot.

Source

specials.lisp.

Special Variable: *header-stream*

If this variable is not NIL, it should be bound to a stream to which incoming and outgoing headers will be written for debugging purposes.

Package

hunchentoot.

Source

specials.lisp.

Special Variable: *hunchentoot-default-external-format*

The external format used to compute the REQUEST object.

Package

hunchentoot.

Source

specials.lisp.

Special Variable: *hunchentoot-version*
Package

hunchentoot.

Source

specials.lisp.

Special Variable: *lisp-errors-log-level*

Log level for Lisp errors. Should be one of :ERROR (the default), :WARNING, or :INFO.

Package

hunchentoot.

Source

specials.lisp.

Special Variable: *lisp-warnings-log-level*

Log level for Lisp warnings. Should be one of :ERROR, :WARNING (the default), or :INFO.

Package

hunchentoot.

Source

specials.lisp.

Special Variable: *log-lisp-backtraces-p*

Whether Lisp backtraces should be logged. Only has an effect if *LOG-LISP-ERRORS-P* is true as well.

Package

hunchentoot.

Source

specials.lisp.

Special Variable: *log-lisp-errors-p*

Whether Lisp errors in request handlers should be logged.

Package

hunchentoot.

Source

specials.lisp.

Special Variable: *log-lisp-warnings-p*

Whether Lisp warnings in request handlers should be logged.

Package

hunchentoot.

Source

specials.lisp.

Special Variable: *methods-for-post-parameters*

A list of the request method types (as keywords) for which Hunchentoot will try to compute POST-PARAMETERS.

Package

hunchentoot.

Source

specials.lisp.

Special Variable: *reply*

The current REPLY object while in the context of a request.

Package

hunchentoot.

Source

specials.lisp.

Special Variable: *request*

The current REQUEST object while in the context of a request.

Package

hunchentoot.

Source

specials.lisp.

Special Variable: *rewrite-for-session-urls*

Whether HTML pages should possibly be rewritten for cookie-less session-management.

Package

hunchentoot.

Source

specials.lisp.

Special Variable: *session*

The current session while in the context of a request, or NIL.

Package

hunchentoot.

Source

specials.lisp.

Special Variable: *session-gc-frequency*

A session GC (see function SESSION-GC) will happen every *SESSION-GC-FREQUENCY* requests (counting only requests which create a new session) if this variable is not NIL. See SESSION-CREATED.

Package

hunchentoot.

Source

specials.lisp.

Special Variable: *session-max-time*

The default time (in seconds) after which a session times out.

Package

hunchentoot.

Source

specials.lisp.

Special Variable: *session-secret*

A random ASCII string that’s used to encode the public session data. This variable is initially unbound and will be set (using RESET-SESSION-SECRET) the first time a session is created, if necessary. You can prevent this from happening if you set the value yourself before starting acceptors.

Package

hunchentoot.

Source

specials.lisp.

Special Variable: *show-lisp-backtraces-p*

Whether Lisp errors shown in HTML output should contain backtrace information.

Package

hunchentoot.

Source

specials.lisp.

Special Variable: *show-lisp-errors-p*

Whether Lisp errors in request handlers should be shown in HTML output.

Package

hunchentoot.

Source

specials.lisp.

Special Variable: *tmp-directory*

Directory for temporary files created by MAKE-TMP-FILE-NAME.

Package

hunchentoot.

Source

specials.lisp.

Special Variable: *url-rewrite-fill-tags*

The tag/attribute combinations where URL-rewriting should optionally add an attribute.

Package

url-rewrite.

Source

specials.lisp.

Special Variable: *url-rewrite-tags*

The tag/attribute combinations where URL-rewriting should happen.

Package

url-rewrite.

Source

specials.lisp.

Special Variable: *use-remote-addr-for-sessions*

Whether the client’s remote IP (as returned by REAL-REMOTE-ADDR) should be encoded into the session string. If this value is true, a session will cease to be accessible if the client’s remote IP changes.

This might for example be an issue if the client uses a proxy server which doesn’t send correct ’X_FORWARDED_FOR’ headers.

Package

hunchentoot.

Source

specials.lisp.

Special Variable: *use-user-agent-for-sessions*

Whether the ’User-Agent’ header should be encoded into the session string. If this value is true, a session will cease to be accessible if the client sends a different ’User-Agent’ header.

Package

hunchentoot.

Source

specials.lisp.


6.1.3 Macros

Macro: define-easy-handler (description lambda-list &body body)

Defines a handler with the body BODY and optionally registers
it with a URI so that it will be found by DISPATCH-EASY-HANDLERS. DESCRIPTION is either a symbol NAME or a list matching the destructuring lambda list

(name &key uri acceptor-names host
default-parameter-type default-request-type).

LAMBDA-LIST is a list the elements of which are either a symbol VAR or a list matching the destructuring lambda list

(var &key real-name parameter-type init-form request-type).

The resulting handler will be a Lisp function with the name NAME and keyword parameters named by the VAR symbols. Each VAR will
be bound to the value of the GET or POST parameter called REAL-NAME (a string) before BODY is executed. If REAL-NAME is
not provided, it will be computed by downcasing the symbol name
of VAR.

If URI (which is evaluated) is provided, then it must be a string or a function designator for a function of one argument. In this case, the handler will be returned by DISPATCH-EASY-HANDLERS, if URI is a string and the script name of a request is URI, or if URI designates a function and applying this function to the current request object returns a true value.
HOST, if given, is compared to the given host as well
(don’t forget the port number).

ACCEPTOR-NAMES (which is evaluated) can be a list of symbols which means that the handler will be returned by DISPATCH-EASY-HANDLERS in acceptors which have one of these names (see ACCEPTOR-NAME). ACCEPTOR-NAMES can also be the symbol T which means that the handler will be returned by DISPATCH-EASY-HANDLERS in every acceptor.

Whether the GET or POST parameter (or both) will be taken into consideration, depends on REQUEST-TYPE which can
be :GET, :POST, :BOTH, or NIL. In the last case, the value of DEFAULT-REQUEST-TYPE (the default of which is :BOTH) will be
used.

The value of VAR will usually be a string (unless it resulted from a file upload in which case it won’t be converted at all), but if PARAMETER-TYPE (which is evaluated) is provided, the string will be converted to another Lisp type by the following rules:

If the corresponding GET or POST parameter wasn’t provided by the client, VAR’s value will be NIL. If PARAMETER-TYPE is ’STRING, VAR’s value remains as is. If PARAMETER-TYPE is ’INTEGER and the parameter string consists solely of decimal digits, VAR’s value will be the corresponding integer, otherwise NIL. If PARAMETER-TYPE is ’KEYWORD, VAR’s value will be the keyword obtained by interning the upcased parameter string into the keyword package. If PARAMETER-TYPE is ’CHARACTER and the parameter string is of length one, VAR’s value will be the single character of this string, otherwise NIL. If PARAMETER-TYPE is ’BOOLEAN, VAR’s value will always be T (unless it is NIL by the first rule above, of course). If PARAMETER-TYPE is any other atom, it is supposed to be a function designator for a unary function which will be called to convert the string to something else.

Those were the rules for ‘simple’ types, but PARAMETER-TYPE can also be a list starting with one of the symbols LIST, ARRAY, or HASH-TABLE. The second value of the list must always be a simple parameter type as in the last paragraph - we’ll call it the
‘inner type’ below.

In the case of ’LIST, all GET/POST parameters called REAL-NAME will be collected, converted to the inner type, and assembled
into a list which will be the value of VAR.

In the case of ’ARRAY, all GET/POST parameters which have a name like the result of

(format nil "~A[~A]" real-name n)

where N is a non-negative integer, will be assembled into an
array where the Nth element will be set accordingly, after conversion to the inner type. The array, which will become the value of VAR, will be big enough to hold all matching parameters, but not bigger. Array elements not set as described above will
be NIL. Note that VAR will always be bound to an array, which
may be empty, so it will never be NIL, even if no appropriate GET/POST parameters are found.

The full form of a ’HASH-TABLE parameter type is

(hash-table inner-type key-type test-function),

but KEY-TYPE and TEST-FUNCTION can be left out in which case they default to ’STRING and ’EQUAL, respectively. For this parameter type, all GET/POST parameters which have a name like the result
of

(format nil "~A{~A}" real-name key)

(where KEY is a string that doesn’t contain curly brackets) will become the values (after conversion to INNER-TYPE) of a hash
table with test function TEST-FUNCTION where KEY (after
conversion to KEY-TYPE) will be the corresponding key. Note that VAR will always be bound to a hash table, which may be empty, so it will never be NIL, even if no appropriate GET/POST parameters are found.

To make matters even more complicated, the three compound parameter types also have an abbreviated form - just one of the symbols LIST, ARRAY, or HASH-TABLE. In this case, the inner type will default to ’STRING.

If PARAMETER-TYPE is not provided or NIL, DEFAULT-PARAMETER-TYPE (the default of which is ’STRING) will be used instead.

If the result of the computations above would be that VAR would
be bound to NIL, then INIT-FORM (if provided) will be evaluated instead, and VAR will be bound to the result of this evaluation.

Handlers built with this macro are constructed in such a way that the resulting Lisp function is useful even outside of
Hunchentoot. Specifically, all the parameter computations above will only happen if *REQUEST* is bound, i.e. if we’re within a Hunchentoot request. Otherwise, VAR will always be bound to the result of evaluating INIT-FORM unless a corresponding keyword argument is provided.

Package

hunchentoot.

Source

easy-handlers.lisp.


6.1.4 Setf expanders

Setf Expander: (setf aux-request-value) (symbol &optional request)

Sets the value associated with SYMBOL from the request object REQUEST (default is *REQUEST*). If there is already a value associated with SYMBOL it will be replaced.

Package

hunchentoot.

Source

request.lisp.

Reader

aux-request-value (function).

Setf Expander: (setf session-value) (symbol &optional session)

Sets the value associated with SYMBOL from the session object SESSION. If there is already a value associated with SYMBOL it will be replaced. Will automatically start a session if none was supplied and there’s no session for the current request.

Package

hunchentoot.

Source

session.lisp.

Reader

session-value (function).


6.1.5 Ordinary functions

Function: abort-request-handler (&optional result)

This function can be called by a request handler at any time to immediately abort handling the request. This works as if the handler had returned RESULT. See the source code of REDIRECT for an example.

Package

hunchentoot.

Source

misc.lisp.

Function: add-get-param-to-url (url name value)

URL is assumed to be a http URL. The pair of NAME and VALUE will be added as a GET parameter to this URL. Assumes that there’s no other parameter of the same name. Only checks if #? is part of the string to decide how to attach the new parameter to the end of the string.

Package

url-rewrite.

Source

url-rewrite.lisp.

Function: authorization (&optional request)

Returns as two values the user and password (if any) as encoded in the ’AUTHORIZATION’ header. Returns NIL if there is no such header.

Package

hunchentoot.

Source

request.lisp.

Function: aux-request-value (symbol &optional request)

Returns the value associated with SYMBOL from the request object REQUEST (the default is the current request) if it exists. The second return value is true if such a value was found.

Package

hunchentoot.

Source

request.lisp.

Setf expander for this function

(setf aux-request-value).

Function: client-as-string (socket)

A helper function which returns the client’s address and port as a string and tries to act robustly in the presence of network problems.

Package

hunchentoot.

Source

taskmaster.lisp.

Function: content-length* (&optional reply)

The outgoing ’Content-Length’ http header of REPLY.

Package

hunchentoot.

Source

reply.lisp.

Function: (setf content-length*) (&optional reply)

Sets the outgoing ’Content-Length’ http header of REPLY.

Package

hunchentoot.

Source

reply.lisp.

Function: content-type* (&optional reply)

The outgoing ’Content-Type’ http header of REPLY.

Package

hunchentoot.

Source

reply.lisp.

Function: (setf content-type*) (&optional reply)

Sets the outgoing ’Content-Type’ http header of REPLY.

Package

hunchentoot.

Source

reply.lisp.

Returns the cookie with the name NAME (a string) as sent by the browser - or NIL if there is none.

Package

hunchentoot.

Source

request.lisp.

Returns the current value of the outgoing cookie named NAME. Search is case-sensitive.

Package

hunchentoot.

Source

reply.lisp.

Function: cookies-in* (&optional request)

Returns an alist of all cookies associated with the REQUEST object REQUEST.

Package

hunchentoot.

Source

request.lisp.

Function: cookies-out* (&optional reply)

Returns an alist of the outgoing cookies associated with the REPLY object REPLY.

Package

hunchentoot.

Source

reply.lisp.

Function: (setf cookies-out*) (&optional reply)

Sets the alist of the outgoing cookies associated with the REPLY object REPLY.

Package

hunchentoot.

Source

reply.lisp.

Function: create-folder-dispatcher-and-handler (uri-prefix base-path &optional content-type callback)

Creates and returns a dispatch function which will dispatch to a handler function which emits the file relative to BASE-PATH that is denoted by the URI of the request relative to URI-PREFIX. URI-PREFIX must be a string ending with a slash, BASE-PATH must be a pathname designator for an existing directory. If CONTENT-TYPE is not NIL, it’ll be the content type used for all files in the folder.
See HANDLE-STATIC-FILE for CALLBACK.

Package

hunchentoot.

Source

misc.lisp.

Function: create-prefix-dispatcher (prefix handler)

Creates a request dispatch function which will dispatch to the function denoted by HANDLER if the file name of the current request starts with the string PREFIX.

Package

hunchentoot.

Source

misc.lisp.

Function: create-regex-dispatcher (regex handler)

Creates a request dispatch function which will dispatch to the function denoted by HANDLER if the file name of the current request matches the CL-PPCRE regular expression REGEX.

Package

hunchentoot.

Source

misc.lisp.

Function: create-static-file-dispatcher-and-handler (uri path &optional content-type callback)

Creates and returns a request dispatch function which will dispatch to a handler function which emits the file denoted by the pathname designator PATH with content type CONTENT-TYPE if the SCRIPT-NAME of the request matches the string URI. If CONTENT-TYPE is NIL, tries to determine the content type via the file’s suffix.
See HANDLE-STATIC-FILE for CALLBACK.

Package

hunchentoot.

Source

misc.lisp.

Function: default-document-directory (&optional sub-directory)
Package

hunchentoot.

Source

acceptor.lisp.

Function: delete-aux-request-value (symbol &optional request)

Removes the value associated with SYMBOL from the request object REQUEST.

Package

hunchentoot.

Source

request.lisp.

Function: delete-session-value (symbol &optional session)

Removes the value associated with SYMBOL from SESSION if there is one.

Package

hunchentoot.

Source

session.lisp.

Function: dispatch-easy-handlers (request)

This is a dispatcher which returns the appropriate handler defined with DEFINE-EASY-HANDLER, if there is one.

Package

hunchentoot.

Source

easy-handlers.lisp.

Function: escape-for-html (string)

Escapes the characters #\<, #\>, #\’, #\", and #\& for HTML output.

Package

hunchentoot.

Source

util.lisp.

Function: get-parameter (name &optional request)

Returns the GET parameter with name NAME (a string) - or NIL if there is none. Search is case-sensitive.

Package

hunchentoot.

Source

request.lisp.

Function: get-parameters* (&optional request)

Returns an alist of the GET parameters associated with the REQUEST object REQUEST.

Package

hunchentoot.

Source

request.lisp.

Function: get-peer-ssl-certificate ()
Package

hunchentoot.

Source

ssl.lisp.

Function: handle-if-modified-since (time &optional request)

Handles the ’If-Modified-Since’ header of REQUEST. The date string is compared to the one generated from the supplied universal time TIME.

Package

hunchentoot.

Source

request.lisp.

Function: handle-static-file (pathname &optional content-type callback)

A function which acts like a Hunchentoot handler for the file denoted by PATHNAME. Sends a content type header corresponding to CONTENT-TYPE or (if that is NIL) tries to determine the content type via the suffix of the file.
CALLBACK is run just before sending the file, and can be used
to set headers or check authorization;
arguments are the filename and the (guessed) content-type.

Package

hunchentoot.

Source

misc.lisp.

Function: header-in* (name &optional request)

Returns the incoming header with name NAME. NAME can be a keyword (recommended) or a string.

Package

hunchentoot.

Source

request.lisp.

Function: header-out (name &optional reply)

Returns the current value of the outgoing http header named NAME. NAME should be a keyword or a string.

Package

hunchentoot.

Source

reply.lisp.

Function: headers-in* (&optional request)

Returns an alist of the incoming headers associated with the REQUEST object REQUEST.

Package

hunchentoot.

Source

request.lisp.

Function: headers-out* (&optional reply)

Returns an alist of the outgoing headers associated with the REPLY object REPLY.

Package

hunchentoot.

Source

reply.lisp.

Function: host (&optional request)

Returns the ’Host’ incoming http header value.

Package

hunchentoot.

Source

request.lisp.

Function: http-token-p (token)

This function tests whether OBJECT is a non-empty string which is a TOKEN according to RFC 2068 (i.e. whether it may be used for, say, cookie names).

Package

hunchentoot.

Source

util.lisp.

Function: hunchentoot-error (format-control &rest format-arguments)

Signals an error of type HUNCHENTOOT-SIMPLE-ERROR with the provided format control and arguments.

Package

hunchentoot.

Source

conditions.lisp.

Function: local-addr* (&optional request)

Returns the address the current request connected to.

Package

hunchentoot.

Source

request.lisp.

Function: local-port* (&optional request)

Returns the port the current request connected to.

Package

hunchentoot.

Source

request.lisp.

Function: log-message* (log-level format-string &rest format-arguments)

Convenience function which calls the message logger of the current acceptor (if there is one) with the same arguments it accepts.

This is the function which Hunchentoot itself uses to log errors it catches during request processing.

Package

hunchentoot.

Source

acceptor.lisp.

Function: mime-type (pathspec)

Given a pathname designator PATHSPEC returns the MIME type (as a string) corresponding to the suffix of the file denoted by PATHSPEC (or NIL).

Package

hunchentoot.

Source

mime-types.lisp.

Function: no-cache ()

Adds appropriate headers to completely prevent caching on most browsers.

Package

hunchentoot.

Source

misc.lisp.

Function: parameter (name &optional request)

Returns the GET or the POST parameter with name NAME (a string) - or NIL if there is none. If both a GET and a POST parameter with the same name exist the GET parameter is returned. Search is case-sensitive.

Package

hunchentoot.

Source

request.lisp.

Function: parameter-error (format-control &rest format-arguments)

Signals an error of type PARAMETER-ERROR with the provided format control and arguments.

Package

hunchentoot.

Source

conditions.lisp.

Function: post-parameter (name &optional request)

Returns the POST parameter with name NAME (a string) - or NIL if there is none. Search is case-sensitive.

Package

hunchentoot.

Source

request.lisp.

Function: post-parameters* (&optional request)

Returns an alist of the POST parameters associated with the REQUEST object REQUEST.

Package

hunchentoot.

Source

request.lisp.

Function: query-string* (&optional request)

Returns the query string of the REQUEST object REQUEST. That’s the part behind the question mark (i.e. the GET parameters).

Package

hunchentoot.

Source

request.lisp.

Function: raw-post-data (&key request external-format force-text force-binary want-stream)

Returns the content sent by the client if there was any (unless the content type was "multipart/form-data"). By default, the result is a string if the type of the ‘Content-Type’ media type is "text", and a vector of octets otherwise. In the case of a string, the external format to be used to decode the content will be determined from the ‘charset’ parameter sent by the client (or otherwise *HUNCHENTOOT-DEFAULT-EXTERNAL-FORMAT* will be used).

You can also provide an external format explicitly (through EXTERNAL-FORMAT) in which case the result will unconditionally be a string. Likewise, you can provide a true value for FORCE-TEXT which will force Hunchentoot to act as if the type of the media type had been "text". Or you can provide a true value for FORCE-BINARY which means that you want a vector of octets at any rate.

If, however, you provide a true value for WANT-STREAM, the other parameters are ignored and you’ll get the content (flexi) stream to read from it yourself. It is then your responsibility to read the correct amount of data, because otherwise you won’t be able to return a response to the client. If the content type of the request was ‘multipart/form-data’ or ‘application/x-www-form-urlencoded’, the content has been read by Hunchentoot already and you can’t read from the stream anymore.

You can call RAW-POST-DATA more than once per request, but you can’t mix calls which have different values for WANT-STREAM.

Note that this function is slightly misnamed because a client can send content even if the request method is not POST.

Package

hunchentoot.

Source

request.lisp.

Function: real-remote-addr (&optional request)

Returns the ’X-Forwarded-For’ incoming http header as the second value in the form of a list of IP addresses and the first element of this list as the first value if this header exists. Otherwise returns the value of REMOTE-ADDR as the only value.

Package

hunchentoot.

Source

request.lisp.

Function: reason-phrase (return-code)

Returns a reason phrase for the HTTP return code RETURN-CODE (which should be an integer) or NIL for return codes Hunchentoot doesn’t know.

Package

hunchentoot.

Source

util.lisp.

Function: recompute-request-parameters (&key request external-format)

Recomputes the GET and POST parameters for the REQUEST object REQUEST. This only makes sense if you’re switching external formats during the request.

Package

hunchentoot.

Source

request.lisp.

Function: redirect (target &key host port protocol add-session-id code)

Redirects the browser to TARGET which should be a string. If TARGET is a full URL starting with a scheme, HOST, PORT and PROTOCOL are ignored. Otherwise, TARGET should denote the path part of a URL, PROTOCOL must be one of the keywords :HTTP or :HTTPS, and the URL to redirect to will be constructed from HOST, PORT, PROTOCOL, and TARGET. Adds a session ID if ADD-SESSION-ID is true. If CODE is a 3xx redirection code, it will be sent as status code.

Package

hunchentoot.

Source

misc.lisp.

Function: referer (&optional request)

Returns the ’Referer’ (sic!) http header.

Package

hunchentoot.

Source

request.lisp.

Function: regenerate-session-cookie-value (session)

Regenerates the cookie value. This should be used
when a user logs in according to the application to prevent against session fixation attacks. The cookie value being dependent on ID, USER-AGENT, REMOTE-ADDR, START, and *SESSION-SECRET*, the only value we can change is START to regenerate a new value. Since we’re generating a new cookie, it makes sense to have the session being restarted, in time. That said, because of this fact, calling this function twice in the same second will regenerate twice the same value.

Package

hunchentoot.

Source

session.lisp.

Function: remote-addr* (&optional request)

Returns the address the current request originated from.

Package

hunchentoot.

Source

request.lisp.

Function: remote-port* (&optional request)

Returns the port the current request originated from.

Package

hunchentoot.

Source

request.lisp.

Function: remove-session (session)

Completely removes the SESSION object SESSION from Hunchentoot’s internal session database.

Package

hunchentoot.

Source

session.lisp.

Function: reply-external-format* (&optional reply)

The external format of REPLY which is used for character output.

Package

hunchentoot.

Source

reply.lisp.

Function: (setf reply-external-format*) (&optional reply)

Sets the external format of REPLY.

Package

hunchentoot.

Source

reply.lisp.

Function: request-method* (&optional request)

Returns the request method as a Lisp keyword.

Package

hunchentoot.

Source

request.lisp.

Function: request-pathname (&optional request drop-prefix)

Construct a relative pathname from the request’s SCRIPT-NAME.
If DROP-PREFIX is given, pathname construction starts at the first path segment after the prefix.

Package

hunchentoot.

Source

request.lisp.

Function: request-uri* (&optional request)

Returns the request URI.

Package

hunchentoot.

Source

request.lisp.

Function: require-authorization (&optional realm)

Sends back appropriate headers to require basic HTTP authentication (see RFC 2617) for the realm REALM.

Package

hunchentoot.

Source

misc.lisp.

Function: reset-session-secret ()

Sets *SESSION-SECRET* to a new random value. All old sessions will cease to be valid.

Package

hunchentoot.

Source

session.lisp.

Function: reset-sessions (&optional acceptor)

Removes ALL stored sessions of ACCEPTOR.

Package

hunchentoot.

Source

session.lisp.

Function: return-code* (&optional reply)

The http return code of REPLY. The return codes Hunchentoot can handle are defined in specials.lisp.

Package

hunchentoot.

Source

reply.lisp.

Function: (setf return-code*) (&optional reply)

Sets the http return code of REPLY.

Package

hunchentoot.

Source

reply.lisp.

Function: rewrite-urls (rewrite-fn &optional test-fn)

Reads an (X)HTML document from *STANDARD-INPUT* and writes it back to *STANDARD-OUTPUT*. Any attribute value which is in one of the positions denoted by *URL-REWRITE-TAGS* is rewritten by REWRITE-FN if it passes the test denoted by the optional function TEST-FN which defaults to the complement of STARTS-WITH-SCHEME-P.

This function aims to yield correct results for correct (X)HTML input and it also tries hard to never signal an error although it may warn if it encounters syntax errors. It will NOT detect any possible error nor is there any warranty that it will work correctly with faulty input.

Package

url-rewrite.

Source

url-rewrite.lisp.

Function: rfc-1123-date (&optional time)

Generates a time string according to RFC 1123. Default is current time. This can be used to send a ’Last-Modified’ header - see HANDLE-IF-MODIFIED-SINCE.

Package

hunchentoot.

Source

util.lisp.

Function: script-name* (&optional request)

Returns the file name of the REQUEST object REQUEST. That’s the requested URI without the query string (i.e the GET parameters).

Package

hunchentoot.

Source

request.lisp.

Function: send-headers ()

Sends the initial status line and all headers as determined by the REPLY object *REPLY*. Returns a binary stream to which the body of the reply can be written. Once this function has been called, further changes to *REPLY* don’t have any effect. Also, automatic handling of errors (i.e. sending the corresponding status code to the browser, etc.) is turned off for this request. If your handlers return the full body as a string or as an array of octets you should NOT call this function.

This function does not return control to the caller during HEAD request processing.

Package

hunchentoot.

Source

headers.lisp.

Function: server-protocol* (&optional request)

Returns the request protocol as a Lisp keyword.

Package

hunchentoot.

Source

request.lisp.

Function: session-gc ()

Removes sessions from the current session database which are too old - see SESSION-TOO-OLD-P.

Package

hunchentoot.

Source

session.lisp.

Function: session-too-old-p (session)

Returns true if the SESSION object SESSION has not been active in the last (SESSION-MAX-TIME SESSION) seconds.

Package

hunchentoot.

Source

session.lisp.

Function: session-value (symbol &optional session)

Returns the value associated with SYMBOL from the session object SESSION (the default is the current session) if it exists.

Package

hunchentoot.

Source

session.lisp.

Setf expander for this function

(setf session-value).

Function: set-cookie (name &key value expires max-age path domain secure http-only reply)

Creates a cookie object from the parameters provided and adds it to the outgoing cookies of the REPLY object REPLY. If a cookie with the name NAME (case-sensitive) already exists, it is replaced.

Package

hunchentoot.

Source

cookie.lisp.

Function: set-cookie* (cookie &optional reply)

Adds the COOKIE object COOKIE to the outgoing cookies of the REPLY object REPLY. If a cookie with the same name (case-sensitive) already exists, it is replaced.

Package

hunchentoot.

Source

cookie.lisp.

Function: ssl-p (&optional acceptor)

Whether the current connection to the client is secure. See ACCEPTOR-SSL-P.

Package

hunchentoot.

Source

util.lisp.

Function: start-session ()

Returns the current SESSION object. If there is no current session, creates one and updates the corresponding data structures. In this case the function will also send a session cookie to the browser.

Package

hunchentoot.

Source

session.lisp.

Function: starts-with-scheme-p (string)

Checks whether the string STRING represents a URL which starts with a scheme, i.e. something like ’https://’ or ’mailto:’.

Package

url-rewrite.

Source

url-rewrite.lisp.

Function: url-decode (string &optional external-format decode-plus)

Decodes a URL-encoded string which is assumed to be encoded using the external format EXTERNAL-FORMAT, i.e. this is the inverse of URL-ENCODE. It is assumed that you’ll rarely need this function, if ever. But just in case - here it is. The default for EXTERNAL-FORMAT is the value of *HUNCHENTOOT-DEFAULT-EXTERNAL-FORMAT*.

Package

hunchentoot.

Source

util.lisp.

Function: url-encode (string)

URL-encode a string.

Package

url-rewrite.

Source

url-rewrite.lisp.

Function: url-encode (string &optional external-format)

URL-encodes a string using the external format EXTERNAL-FORMAT. The default for EXTERNAL-FORMAT is the value of *HUNCHENTOOT-DEFAULT-EXTERNAL-FORMAT*.

Package

hunchentoot.

Source

util.lisp.

Function: user-agent (&optional request)

Returns the ’User-Agent’ http header.

Package

hunchentoot.

Source

request.lisp.

Function: within-request-p ()

True if we’re in the context of a request, otherwise nil.

Package

hunchentoot.

Source

request.lisp.


6.1.6 Generic functions

Generic Function: accept-connections (acceptor)

In a loop, accepts a connection and hands it over
to the acceptor’s taskmaster for processing using HANDLE-INCOMING-CONNECTION. On LispWorks, this function returns immediately, on other Lisps it returns only once the acceptor has been stopped.

Package

hunchentoot.

Source

acceptor.lisp.

Methods
Method: accept-connections ((acceptor acceptor))
Generic Reader: acceptor-access-log-destination (object)
Generic Writer: (setf acceptor-access-log-destination) (object)
Package

hunchentoot.

Methods
Reader Method: acceptor-access-log-destination ((acceptor acceptor))
Writer Method: (setf acceptor-access-log-destination) ((acceptor acceptor))

Destination of the access log
which contains one log entry per request handled in a format similar to Apache’s access.log. Can be set to a pathname or string designating the log file, to a open output stream or to NIL to suppress logging.

Source

acceptor.lisp.

Target Slot

access-log-destination.

Generic Reader: acceptor-address (object)
Package

hunchentoot.

Methods
Reader Method: acceptor-address ((acceptor acceptor))

The address the acceptor is listening on.
If address is a string denoting an IP address, then the server only receives connections for that address. This must be one of the addresses associated with the machine and allowed values are host names such as "www.zappa.com" and address strings such as "72.3.247.29". If address is NIL, then the server will receive connections to all IP addresses on the machine. This is the default.

Source

acceptor.lisp.

Target Slot

address.

Generic Function: acceptor-dispatch-request (acceptor request)

This function is called to actually dispatch the
request once the standard logging and error handling has been set up. ACCEPTOR subclasses implement methods for this function in order to perform their own request routing. If a method does not want to handle the request, it is supposed to invoke CALL-NEXT-METHOD so that the next ACCEPTOR in the inheritance chain gets a chance to handle the request.

Package

hunchentoot.

Source

acceptor.lisp.

Methods
Method: acceptor-dispatch-request ((acceptor easy-acceptor) request)

The easy request dispatcher which selects a request handler based on a list of individual request dispatchers all of which can either return a handler or neglect by returning NIL.

Source

easy-handlers.lisp.

Method: acceptor-dispatch-request ((acceptor acceptor) request)

Detault implementation of the request dispatch method, generates an +http-not-found+ error.

Generic Reader: acceptor-document-root (object)
Generic Writer: (setf acceptor-document-root) (object)
Package

hunchentoot.

Methods
Reader Method: acceptor-document-root ((acceptor acceptor))
Writer Method: (setf acceptor-document-root) ((acceptor acceptor))

Directory pathname that points to
files that are served by the acceptor if no more specific acceptor-dispatch-request method handles the request.

Source

acceptor.lisp.

Target Slot

document-root.

Generic Reader: acceptor-error-template-directory (object)
Generic Writer: (setf acceptor-error-template-directory) (object)
Package

hunchentoot.

Methods
Reader Method: acceptor-error-template-directory ((acceptor acceptor))
Writer Method: (setf acceptor-error-template-directory) ((acceptor acceptor))

Directory pathname that
contains error message template files for server-generated error messages. Files must be named <return-code>.html with <return-code> representing the HTTP return code that the file applies to,
i.e. 404.html would be used as the content for a HTTP 404 Not found response.

Source

acceptor.lisp.

Target Slot

error-template-directory.

Generic Reader: acceptor-input-chunking-p (object)
Generic Writer: (setf acceptor-input-chunking-p) (object)
Package

hunchentoot.

Methods
Reader Method: acceptor-input-chunking-p ((acceptor acceptor))
Writer Method: (setf acceptor-input-chunking-p) ((acceptor acceptor))

A generalized boolean denoting
whether the acceptor may use chunked encoding for input, i.e. when accepting request bodies from the client. The default is T and there’s usually no reason to change this to NIL.

Source

acceptor.lisp.

Target Slot

input-chunking-p.

Generic Reader: acceptor-listen-backlog (object)
Package

hunchentoot.

Methods
Reader Method: acceptor-listen-backlog ((acceptor acceptor))

Number of pending connections
allowed in the listen socket before the kernel rejects further incoming connections.

Source

acceptor.lisp.

Target Slot

listen-backlog.

Generic Function: acceptor-log-access (acceptor &key return-code)

Function to call to log access to the acceptor. The RETURN-CODE, CONTENT and CONTENT-LENGTH keyword arguments contain additional information about the request to log. In addition, it can use the standard request accessor functions that are available to handler functions to find out more information about the request.

Package

hunchentoot.

Source

acceptor.lisp.

Methods
Method: acceptor-log-access ((acceptor acceptor) &key return-code)

Default method for access logging. It logs the information to the destination determined by (ACCEPTOR-ACCESS-LOG-DESTINATION ACCEPTOR) (unless that value is NIL) in a format that can be parsed by most Apache log analysis tools.)

Generic Function: acceptor-log-message (acceptor log-level format-string &rest format-arguments)

Function to call to log messages by the ACCEPTOR. It must accept a severity level for the message, which will be one of :ERROR, :INFO, or :WARNING, a format string and an arbitary number of formatting arguments.

Package

hunchentoot.

Source

acceptor.lisp.

Methods
Method: acceptor-log-message ((acceptor acceptor) log-level format-string &rest format-arguments)

Default function to log server messages. Sends a formatted message to the destination denoted by (ACCEPTOR-MESSAGE-LOG-DESTINATION ACCEPTOR). FORMAT and ARGS are as in FORMAT. LOG-LEVEL is a keyword denoting the log level or NIL in which case it is ignored.

Generic Reader: acceptor-message-log-destination (object)
Generic Writer: (setf acceptor-message-log-destination) (object)
Package

hunchentoot.

Methods
Reader Method: acceptor-message-log-destination ((acceptor acceptor))
Writer Method: (setf acceptor-message-log-destination) ((acceptor acceptor))

Destination of the server
error log which is used to log informational, warning and error messages in a free-text format intended for human inspection. Can be set to a pathname or string designating the log file, to a open output stream or to NIL to suppress logging.

Source

acceptor.lisp.

Target Slot

message-log-destination.

Generic Reader: acceptor-name (object)
Generic Writer: (setf acceptor-name) (object)
Package

hunchentoot.

Methods
Reader Method: acceptor-name ((acceptor acceptor))
Writer Method: (setf acceptor-name) ((acceptor acceptor))

The optional name of the acceptor, a symbol.
This name can be utilized when defining "easy handlers" - see DEFINE-EASY-HANDLER. The default name is an uninterned symbol as returned by GENSYM.

Source

acceptor.lisp.

Target Slot

name.

Generic Reader: acceptor-output-chunking-p (object)
Generic Writer: (setf acceptor-output-chunking-p) (object)
Package

hunchentoot.

Methods
Reader Method: acceptor-output-chunking-p ((acceptor acceptor))
Writer Method: (setf acceptor-output-chunking-p) ((acceptor acceptor))

A generalized boolean denoting
whether the acceptor may use chunked encoding for output, i.e. when sending data to the client. The default is T and there’s usually no reason to change this to NIL.

Source

acceptor.lisp.

Target Slot

output-chunking-p.

Generic Reader: acceptor-persistent-connections-p (object)
Generic Writer: (setf acceptor-persistent-connections-p) (object)
Package

hunchentoot.

Methods
Reader Method: acceptor-persistent-connections-p ((acceptor acceptor))
Writer Method: (setf acceptor-persistent-connections-p) ((acceptor acceptor))

A generalized boolean
denoting whether the acceptor supports persistent connections, which is the default for threaded acceptors. If this property is NIL, Hunchentoot closes each incoming connection after having processed one request. This is the default for non-threaded acceptors.

Source

acceptor.lisp.

Target Slot

persistent-connections-p.

Generic Reader: acceptor-port (object)
Package

hunchentoot.

Methods
Reader Method: acceptor-port ((acceptor acceptor))

The port the acceptor is listening on. The
default is 80. Note that depending on your operating system you might need special privileges to listen on port 80. When 0, the port will be chosen by the system the first time the acceptor is started.

Source

acceptor.lisp.

Target Slot

port.

Generic Reader: acceptor-read-timeout (object)
Package

hunchentoot.

Methods
Reader Method: acceptor-read-timeout ((acceptor acceptor))

The read timeout of the acceptor,
specified in (fractional) seconds. The precise semantics of this parameter is determined by the underlying Lisp’s implementation of socket timeouts. NIL means no timeout.

Source

acceptor.lisp.

Target Slot

read-timeout.

Generic Function: acceptor-remove-session (acceptor session)

This function is called whenever a session in ACCEPTOR is being destroyed because of a session timout or an explicit REMOVE-SESSION call.

Package

hunchentoot.

Source

acceptor.lisp.

Methods
Method: acceptor-remove-session ((acceptor acceptor) session)

Default implementation for the session removal hook function. This function is called whenever a session is destroyed.

Generic Reader: acceptor-reply-class (object)
Generic Writer: (setf acceptor-reply-class) (object)
Package

hunchentoot.

Methods
Reader Method: acceptor-reply-class ((acceptor acceptor))
Writer Method: (setf acceptor-reply-class) ((acceptor acceptor))

Determines which class of reply
objects is created when a request is served in and should be (a symbol naming) a class which inherits from REPLY. The default is the symbol REPLY.

Source

acceptor.lisp.

Target Slot

reply-class.

Generic Reader: acceptor-request-class (object)
Generic Writer: (setf acceptor-request-class) (object)
Package

hunchentoot.

Methods
Reader Method: acceptor-request-class ((acceptor acceptor))
Writer Method: (setf acceptor-request-class) ((acceptor acceptor))

Determines which class of request
objects is created when a request comes in and should be (a symbol naming) a class which inherits from REQUEST. The default is the symbol REQUEST.

Source

acceptor.lisp.

Target Slot

request-class.

Generic Reader: acceptor-requests-in-progress (object)
Generic Writer: (setf acceptor-requests-in-progress) (object)
Package

hunchentoot.

Methods
Reader Method: acceptor-requests-in-progress ((acceptor acceptor))
Writer Method: (setf acceptor-requests-in-progress) ((acceptor acceptor))

The number of
requests currently in progress.

Source

acceptor.lisp.

Target Slot

requests-in-progress.

Generic Reader: acceptor-ssl-certificate-file (object)
Package

hunchentoot.

Methods
Reader Method: acceptor-ssl-certificate-file ((ssl-acceptor ssl-acceptor))

A pathname designator for a certificate file in PEM format.

Source

ssl.lisp.

Target Slot

ssl-certificate-file.

Generic Function: acceptor-ssl-p (acceptor)

Returns a true value if ACCEPTOR uses SSL
connections. The default is to unconditionally return NIL and subclasses of ACCEPTOR must specialize this method to signal that they’re using secure connections - see the SSL-ACCEPTOR class.

Package

hunchentoot.

Source

acceptor.lisp.

Methods
Method: acceptor-ssl-p ((acceptor ssl-acceptor))
Source

ssl.lisp.

Method: acceptor-ssl-p (acceptor)
Generic Reader: acceptor-ssl-privatekey-file (object)
Package

hunchentoot.

Methods
Reader Method: acceptor-ssl-privatekey-file ((ssl-acceptor ssl-acceptor))

A pathname designator for a
private key file in PEM format, or (only on LispWorks) NIL if the certificate file contains the private key.

Source

ssl.lisp.

Target Slot

ssl-privatekey-file.

Generic Reader: acceptor-ssl-privatekey-password (object)
Package

hunchentoot.

Methods
Reader Method: acceptor-ssl-privatekey-password ((ssl-acceptor ssl-acceptor))

The password for the
private key file or NIL for no password.

Source

ssl.lisp.

Target Slot

ssl-privatekey-password.

Generic Function: acceptor-status-message (acceptor http-status-code &key &allow-other-keys)

This function is called after the request’s handler has been invoked to convert the HTTP-STATUS-CODE to a HTML message to be displayed to the user. If this function returns a string, that string is sent to the client instead of the content produced by the handler, if any.

If an ERROR-TEMPLATE-DIRECTORY is set in the current acceptor and the directory contains a file corresponding to HTTP-STATUS-CODE named <code>.html, that file is sent to the client after variable substitution. Variables are referenced by ${<variable-name>}.

Additional keyword arguments may be provided which are made available to the templating logic as substitution variables. These variables can be interpolated into error message templates in, which contains the current URL relative to the server and without GET parameters.

In addition to the variables corresponding to keyword arguments, the script-name, lisp-implementation-type, lisp-implementation-version and hunchentoot-version variables are available.

Package

hunchentoot.

Source

acceptor.lisp.

Methods
Method: acceptor-status-message ((acceptor acceptor) http-status-code &rest properties &key &allow-other-keys)

Default function to generate error message sent to the client.

Method: acceptor-status-message :around ((acceptor acceptor) http-status-code &rest args &key &allow-other-keys)
Method: acceptor-status-message (acceptor http-status-code &rest args &key &allow-other-keys)
Generic Reader: acceptor-write-timeout (object)
Package

hunchentoot.

Methods
Reader Method: acceptor-write-timeout ((acceptor acceptor))

The write timeout of the acceptor,
specified in (fractional) seconds. The precise semantics of this parameter is determined by the underlying Lisp’s implementation of socket timeouts. NIL means no timeout.

Source

acceptor.lisp.

Target Slot

write-timeout.

Generic Reader: content-length (object)
Package

hunchentoot.

Methods
Reader Method: content-length ((reply reply))

The outgoing ’Content-Length’
http header which defaults NIL. If this is NIL, Hunchentoot will compute the content length.

Source

reply.lisp.

Target Slot

content-length.

Generic Reader: content-type (object)
Package

hunchentoot.

Methods
Reader Method: content-type ((reply reply))

The outgoing ’Content-Type’ http
header which defaults to the value of *DEFAULT-CONTENT-TYPE*.

Source

reply.lisp.

Target Slot

content-type.

Package

hunchentoot.

Methods

The domain this cookie is valid for (or NIL).

Source

cookie.lisp.

Target Slot

domain.

Package

hunchentoot.

Methods

The time (a universal time) when the cookie expires (or NIL).

Source

cookie.lisp.

Target Slot

expires.

Package

hunchentoot.

Methods

A generalized boolean denoting whether
this cookie is a ‘HttpOnly’ cookie.

This is a Microsoft extension that has been implemented in Firefox as well. See <http://msdn2.microsoft.com/en-us/library/ms533046.aspx>.

Source

cookie.lisp.

Target Slot

http-only.

Package

hunchentoot.

Methods

The time delta (in seconds) after which the cookie expires (or NIL).

Source

cookie.lisp.

Target Slot

max-age.

Package

hunchentoot.

Methods

The name of the cookie - a string.

Source

cookie.lisp.

Target Slot

name.

Package

hunchentoot.

Methods

The path this cookie is valid for (or NIL).

Source

cookie.lisp.

Target Slot

path.

Package

hunchentoot.

Methods

A generalized boolean denoting whether this cookie is a secure cookie.

Source

cookie.lisp.

Target Slot

secure.

Package

hunchentoot.

Methods

The value of the cookie. Will be URL-encoded when sent to the browser.

Source

cookie.lisp.

Target Slot

value.

Generic Reader: cookies-in (object)
Package

hunchentoot.

Methods
Reader Method: cookies-in ((request request))

An alist of the cookies sent by the client.

Source

request.lisp.

Target Slot

cookies-in.

Generic Reader: cookies-out (object)
Generic Writer: (setf cookies-out) (object)
Package

hunchentoot.

Methods
Reader Method: cookies-out ((reply reply))
Writer Method: (setf cookies-out) ((reply reply))

The outgoing cookies. This slot’s
value should only be modified by the functions defined in cookies.lisp.

Source

reply.lisp.

Target Slot

cookies-out.

Generic Function: create-request-handler-thread (taskmaster socket)

Create a new thread in which to process the request.
This thread will call PROCESS-CONNECTION to process the request.

Package

hunchentoot.

Source

taskmaster.lisp.

Methods
Method: create-request-handler-thread ((taskmaster one-thread-per-connection-taskmaster) socket)

Create a thread for handling a single request

Generic Function: decrement-taskmaster-thread-count (taskmaster)

Atomically decrement the number of taskmaster requests

Package

hunchentoot.

Source

taskmaster.lisp.

Methods
Method: decrement-taskmaster-thread-count ((taskmaster one-thread-per-connection-taskmaster))
Method: decrement-taskmaster-thread-count ((taskmaster taskmaster))

Default method – do nothing.

Generic Function: detach-socket (acceptor)

Indicate to Hunchentoot that it should stop serving
requests on the current request’s socket. Hunchentoot will finish processing the current request and then return from PROCESS-CONNECTION without closing the connection to the client. DETACH-SOCKET can only be called from within a request handler function.

Package

hunchentoot.

Source

acceptor.lisp.

Methods
Method: detach-socket ((acceptor acceptor))
Generic Function: execute-acceptor (taskmaster)

This is a callback called by the acceptor once it
has performed all initial processing to start listening for incoming connections (see START-LISTENING). It usually calls the ACCEPT-CONNECTIONS method of the acceptor, but depending on the taskmaster instance the method might be called from a new thread.

Package

hunchentoot.

Source

taskmaster.lisp.

Methods
Method: execute-acceptor ((taskmaster multi-threaded-taskmaster))
Method: execute-acceptor ((taskmaster single-threaded-taskmaster))
Generic Reader: get-parameters (object)
Package

hunchentoot.

Methods
Reader Method: get-parameters ((request request))

An alist of the GET parameters sent by the client.

Source

request.lisp.

Target Slot

get-parameters.

Generic Function: handle-incoming-connection (taskmaster socket)

This function is called by the acceptor to start
processing of requests on a new incoming connection. SOCKET is the usocket instance that represents the new connection (or a socket handle on LispWorks). The taskmaster starts processing requests on the incoming connection by calling the PROCESS-CONNECTION method of the acceptor instance. The SOCKET argument is passed to PROCESS-CONNECTION as an argument.

Package

hunchentoot.

Source

taskmaster.lisp.

Methods
Method: handle-incoming-connection ((taskmaster one-thread-per-connection-taskmaster) socket)
Method: handle-incoming-connection ((taskmaster single-threaded-taskmaster) socket)
Generic Function: handle-request (acceptor request)

This function is called once the request has been
read and a REQUEST object has been created. Its job is to set up standard error handling and request logging.

Might be a good place for around methods specialized for your subclass of ACCEPTOR which bind or rebind special variables which can then be accessed by your handlers.

Package

hunchentoot.

Source

acceptor.lisp.

Methods
Method: handle-request ((*acceptor* acceptor) (*request* request))

Standard method for request handling. Calls the request dispatcher of *ACCEPTOR* to determine how the request should be handled. Also sets up standard error handling which catches any errors within the handler.

Generic Function: header-in (name request)

Returns the incoming header with name NAME. NAME can be a keyword (recommended) or a string.

Package

hunchentoot.

Source

request.lisp.

Methods
Method: header-in (name request)
Generic Function: (setf header-out) (name &optional reply)

Changes the current value of the outgoing http
header named NAME (a keyword or a string). If a header with this name doesn’t exist, it is created.

Package

hunchentoot.

Source

reply.lisp.

Methods
Method: (setf header-out) ((name symbol) &optional reply)
Method: (setf header-out) ((name string) &optional reply)

If NAME is a string, it is converted to a keyword first.

Method: (setf header-out) :after ((name (eql :content-length)) &optional reply)

Special case for the ‘Content-Length’ header.

Method: (setf header-out) :after ((name (eql :content-type)) &optional reply)

Special case for the ‘Content-Type’ header.

Generic Reader: headers-in (object)
Package

hunchentoot.

Methods
Reader Method: headers-in ((request request))

An alist of the incoming headers.

Source

request.lisp.

Target Slot

headers-in.

Generic Reader: headers-out (object)
Package

hunchentoot.

Methods
Reader Method: headers-out ((reply reply))

An alist of the outgoing http headers
not including the ’Set-Cookie’, ’Content-Length’, and ’Content-Type’ headers. Use the functions HEADER-OUT and (SETF HEADER-OUT) to modify this slot.

Source

reply.lisp.

Target Slot

headers-out.

Generic Function: increment-taskmaster-thread-count (taskmaster)

Atomically increment the number of taskmaster requests.

Package

hunchentoot.

Source

taskmaster.lisp.

Methods
Method: increment-taskmaster-thread-count ((taskmaster one-thread-per-connection-taskmaster))
Method: increment-taskmaster-thread-count ((taskmaster taskmaster))

Default method – do nothing.

Generic Function: initialize-connection-stream (acceptor stream)

Can be used to modify the stream which is used to
communicate between client and server before the request is read. The default method of ACCEPTOR does nothing, but see for example the method defined for SSL-ACCEPTOR. All methods of this generic function must return the stream to use.

Package

hunchentoot.

Source

acceptor.lisp.

Methods
Method: initialize-connection-stream ((acceptor ssl-acceptor) stream)
Source

ssl.lisp.

Method: initialize-connection-stream ((acceptor acceptor) stream)
Generic Reader: local-addr (object)
Package

hunchentoot.

Methods
Reader Method: local-addr ((request request))

The IP address of the local system that the client connected to.

Source

request.lisp.

Target Slot

local-addr.

Generic Reader: local-port (object)
Package

hunchentoot.

Methods
Reader Method: local-port ((request request))

The TCP port number of the local system that the client connected to.

Source

request.lisp.

Target Slot

local-port.

Generic Function: maybe-invoke-debugger (condition)

This generic function is called whenever a
condition CONDITION is signaled in Hunchentoot. You might want to specialize it on specific condition classes for debugging purposes.

Package

hunchentoot.

Source

conditions.lisp.

Methods
Method: maybe-invoke-debugger (condition)

The default method invokes the debugger with CONDITION if *CATCH-ERRORS-P* is NIL.

Generic Function: next-session-id (acceptor)

Returns the next sequential session ID, an integer,
which should be unique per session. The default method uses a simple global counter and isn’t guarded by a lock. For a high-performance production environment you might consider using a more robust implementation.

Package

hunchentoot.

Source

session.lisp.

Methods
Method: next-session-id (acceptor)
Generic Function: post-parameters (object)
Package

hunchentoot.

Methods
Reader Method: post-parameters :before ((request request))
Source

request.lisp.

Target Slot

post-parameters.

Method: post-parameters ((request request))

An alist of the POST parameters sent by the client.

Source

request.lisp.

Generic Function: process-connection (acceptor socket)

This function is called by the taskmaster when a
new client connection has been established. Its arguments are the ACCEPTOR object and a LispWorks socket handle or a usocket socket stream object in SOCKET. It reads the request headers, sets up the request and reply objects, and hands over to PROCESS-REQUEST. This is done in a loop until the stream has to be closed or until a connection timeout occurs.

It is probably not a good idea to re-implement this method until you really, really know what you’re doing.

Package

hunchentoot.

Source

acceptor.lisp.

Methods
Method: process-connection ((*acceptor* acceptor) socket)
Method: process-connection :around ((*acceptor* acceptor) socket)
Generic Function: process-request (request)

This function is called by PROCESS-CONNECTION after
the incoming headers have been read. It calls HANDLE-REQUEST to select and call a handler and sends the output of this handler to the client using START-OUTPUT. Note that PROCESS-CONNECTION is called once per connection and loops in case of a persistent connection while PROCESS-REQUEST is called anew for each request.

Essentially, you can view process-request as a thin wrapper around HANDLE-REQUEST.

The return value of this function is ignored.

Package

hunchentoot.

Source

request.lisp.

Methods
Method: process-request (request)

Standard implementation for processing a request.

Generic Reader: query-string (object)
Package

hunchentoot.

Methods
Reader Method: query-string ((request request))

The query string of this request.

Source

request.lisp.

Target Slot

query-string.

Generic Reader: remote-addr (object)
Package

hunchentoot.

Methods
Reader Method: remote-addr ((request request))

The IP address of the client that initiated this request.

Source

request.lisp.

Target Slot

remote-addr.

Generic Reader: remote-port (object)
Package

hunchentoot.

Methods
Reader Method: remote-port ((request request))

The TCP port number of the client socket from which this request originated.

Source

request.lisp.

Target Slot

remote-port.

Generic Reader: reply-external-format (object)
Generic Writer: (setf reply-external-format) (object)
Package

hunchentoot.

Methods
Reader Method: reply-external-format ((reply reply))
Writer Method: (setf reply-external-format) ((reply reply))

The external format of the reply - used for character output.

Source

reply.lisp.

Target Slot

external-format.

Generic Reader: request-acceptor (object)
Package

hunchentoot.

Methods
Reader Method: request-acceptor ((request request))

The acceptor which created this request object.

Source

request.lisp.

Target Slot

acceptor.

Generic Reader: request-method (object)
Package

hunchentoot.

Methods
Reader Method: request-method ((request request))

The request method as a keyword.

Source

request.lisp.

Target Slot

method.

Generic Reader: request-uri (object)
Package

hunchentoot.

Methods
Reader Method: request-uri ((request request))

The request URI as a string.

Source

request.lisp.

Target Slot

uri.

Generic Function: reset-connection-stream (acceptor stream)

Resets the stream which is used to communicate
between client and server after one request has been served so that it can be used to process the next request. This generic function is called after a request has been processed and must return the stream.

Package

hunchentoot.

Source

acceptor.lisp.

Methods
Method: reset-connection-stream ((acceptor acceptor) stream)
Generic Reader: return-code (object)
Generic Writer: (setf return-code) (object)
Package

hunchentoot.

Methods
Reader Method: return-code ((reply reply))
Writer Method: (setf return-code) ((reply reply))

The http return code of this
reply. The return codes Hunchentoot can handle are defined in specials.lisp.

Source

reply.lisp.

Target Slot

return-code.

Generic Reader: script-name (object)
Package

hunchentoot.

Methods
Reader Method: script-name ((request request))

The URI requested by the client without the query string.

Source

request.lisp.

Target Slot

script-name.

Generic Reader: server-protocol (object)
Package

hunchentoot.

Methods
Reader Method: server-protocol ((request request))

The HTTP protocol as a keyword.

Source

request.lisp.

Target Slot

server-protocol.

Generic Reader: session (object)
Generic Writer: (setf session) (object)
Package

hunchentoot.

Methods
Reader Method: session ((request request))
Writer Method: (setf session) ((request request))

The session object associated with this request.

Source

request.lisp.

Target Slot

session.

Generic Function: session-cookie-name (acceptor)

Returns the name (a string) of the cookie (or the
GET parameter) which is used to store a session on the client side. The default is to use the string "hunchentoot-session", but you can specialize this function if you want another name.

Package

hunchentoot.

Source

session.lisp.

Methods
Method: session-cookie-name (acceptor)
Generic Function: session-cookie-value (session)

Returns a string which can be used to safely
restore the session SESSION if as session has already been established. This is used as the value stored in the session cookie or in the corresponding GET parameter and verified by SESSION-VERIFY.

A default method is provided and there’s no reason to change it unless you want to use your own session objects.

Package

hunchentoot.

Source

session.lisp.

Methods
Method: session-cookie-value ((session session))
Generic Function: session-created (acceptor new-session)

This function is called whenever a new session has
been created. There’s a default method which might trigger a session GC based on the value of *SESSION-GC-FREQUENCY*.

The return value is ignored.

Package

hunchentoot.

Source

session.lisp.

Methods
Method: session-created (acceptor session)

Counts session usage globally and triggers session GC if necessary.

Generic Function: session-db (acceptor)

Returns the current session database which is an
alist where each car is a session’s ID and the cdr is the corresponding SESSION object itself. The default is to use a global list for all acceptors.

Package

hunchentoot.

Source

session.lisp.

Methods
Method: session-db (acceptor)
Generic Function: (setf session-db) (acceptor)

Modifies the current session database. See SESSION-DB.

Package

hunchentoot.

Source

session.lisp.

Methods
Method: (setf session-db) (acceptor)
Generic Function: session-db-lock (acceptor &key whole-db-p)

A function which returns a lock that will be used
to prevent concurrent access to sessions. The first argument will be the acceptor that handles the current request, the second argument is true if the whole (current) session database is modified. If it is NIL, only one existing session in the database is modified.

This function can return NIL which means that sessions or session databases will be modified without a lock held (for example for single-threaded environments). The default is to always return a global lock (ignoring the ACCEPTOR argument) for Lisps that support threads and NIL otherwise.

Package

hunchentoot.

Source

session.lisp.

Methods
Method: session-db-lock (acceptor &key whole-db-p)
Generic Reader: session-id (object)
Package

hunchentoot.

Methods
Reader Method: session-id ((session session))

The unique ID (an INTEGER) of the session.

Source

session.lisp.

Target Slot

session-id.

Generic Reader: session-max-time (object)
Generic Writer: (setf session-max-time) (object)
Package

hunchentoot.

Methods
Reader Method: session-max-time ((session session))
Writer Method: (setf session-max-time) ((session session))

The time (in seconds) after which this session expires if it’s not used.

Source

session.lisp.

Target Slot

max-time.

Generic Reader: session-remote-addr (object)
Package

hunchentoot.

Methods
Reader Method: session-remote-addr ((session session))

The remote IP address of the client
when this session was started as returned by REAL-REMOTE-ADDR.

Source

session.lisp.

Target Slot

remote-addr.

Generic Reader: session-start (object)
Package

hunchentoot.

Methods
Reader Method: session-start ((session session))

The time this session was started.

Source

session.lisp.

Target Slot

session-start.

Generic Reader: session-user-agent (object)
Package

hunchentoot.

Methods
Reader Method: session-user-agent ((session session))

The incoming ’User-Agent’ header that was sent when this session was created.

Source

session.lisp.

Target Slot

user-agent.

Generic Function: session-verify (request)

Tries to get a session identifier from the cookies
(or alternatively from the GET parameters) sent by the client (see SESSION-COOKIE-NAME and SESSION-COOKIE-VALUE). This identifier is then checked for validity against the REQUEST object REQUEST. On success the corresponding session object (if not too old) is returned (and updated). Otherwise NIL is returned.

A default method is provided and you only need to write your own one if you want to maintain your own sessions.

Package

hunchentoot.

Source

session.lisp.

Methods
Method: session-verify ((request request))
Generic Function: shutdown (taskmaster)

Shuts down the taskmaster, i.e. frees all resources
that were set up by it. For example, a multi-threaded taskmaster might terminate all threads that are currently associated with it. This function is called by the acceptor’s STOP method.

Package

hunchentoot.

Source

taskmaster.lisp.

Methods
Method: shutdown ((taskmaster one-thread-per-connection-taskmaster))
Method: shutdown ((taskmaster taskmaster))
Generic Function: start (acceptor)

Starts the ACCEPTOR so that it begins accepting connections. Returns the acceptor.

Package

hunchentoot.

Source

acceptor.lisp.

Methods
Method: start ((acceptor acceptor))
Generic Function: start-listening (acceptor)

Sets up a listen socket for the given ACCEPTOR and
enables it to listen to incoming connections. This function is called from the thread that starts the acceptor initially and may return errors resulting from the listening operation (like ’address in use’ or similar).

Package

hunchentoot.

Source

acceptor.lisp.

Methods
Method: start-listening :after ((acceptor acceptor))
Method: start-listening ((acceptor acceptor))
Generic Function: start-thread (taskmaster thunk &key name)

Start a name thread in which to call the THUNK, in the context of the given TASKMASTER. Keyword arguments provide TASKMASTER-dependent options.
Return a thread object.

Hunchentoot taskmaster methods will call it with the taskmaster as the context, allowing hunchentoot extensions to define specialized methods that may e.g.
wrap the thunk within a proper set of bindings and condition handlers.

Package

hunchentoot.

Source

taskmaster.lisp.

Methods
Method: start-thread (taskmaster thunk &key name)
Generic Function: started-p (acceptor)

Tells if ACCEPTOR has been started.
The default implementation simply queries ACCEPTOR for its listening status, so if T is returned to the calling thread, then some thread has called START or some thread’s call to STOP hasn’t finished. If NIL is returned either some thread has called STOP, or some thread’s call to START hasn’t finished or START was never called at all for ACCEPTOR.

Package

hunchentoot.

Source

acceptor.lisp.

Methods
Method: started-p (acceptor)
Generic Function: stop (acceptor &key soft)

Stops the ACCEPTOR so that it no longer accepts
requests. If SOFT is true, and there are any requests in progress, wait until all requests are fully processed, but meanwhile do not accept new requests. Note that SOFT must not be set when calling STOP from within a request handler, as that will deadlock.

Package

hunchentoot.

Source

acceptor.lisp.

Methods
Method: stop ((acceptor acceptor) &key soft)
Generic Reader: taskmaster-acceptor (object)
Generic Writer: (setf taskmaster-acceptor) (object)
Package

hunchentoot.

Methods
Reader Method: taskmaster-acceptor ((taskmaster taskmaster))
Writer Method: (setf taskmaster-acceptor) ((taskmaster taskmaster))

A backpointer to the acceptor instance this taskmaster works for.

Source

taskmaster.lisp.

Target Slot

acceptor.

Generic Function: taskmaster-max-accept-count (taskmaster)

The maximum number of connections this taskmaster will accept before refusing new connections. If supplied, this must be greater than MAX-THREAD-COUNT. The number of queued requests is the difference between MAX-ACCEPT-COUNT and MAX-THREAD-COUNT.

Package

hunchentoot.

Source

taskmaster.lisp.

Methods
Reader Method: taskmaster-max-accept-count ((one-thread-per-connection-taskmaster one-thread-per-connection-taskmaster))

The maximum number of connections this taskmaster will accept before refusing new connections. If supplied, this must be greater than MAX-THREAD-COUNT. The number of queued requests is the difference between MAX-ACCEPT-COUNT and MAX-THREAD-COUNT.

Target Slot

max-accept-count.

Method: taskmaster-max-accept-count ((taskmaster taskmaster))

Default method – no limit on the number of connections.

Generic Writer: (setf taskmaster-max-accept-count) (object)
Package

hunchentoot.

Methods
Writer Method: (setf taskmaster-max-accept-count) ((one-thread-per-connection-taskmaster one-thread-per-connection-taskmaster))

The maximum number of connections this taskmaster will accept before refusing new connections. If supplied, this must be greater than MAX-THREAD-COUNT. The number of queued requests is the difference between MAX-ACCEPT-COUNT and MAX-THREAD-COUNT.

Source

taskmaster.lisp.

Target Slot

max-accept-count.

Generic Function: taskmaster-max-thread-count (taskmaster)

The maximum number of request threads this taskmaster will simultaneously run before refusing or queueing new connections requests. If the value is null, then there is no limit.

Package

hunchentoot.

Source

taskmaster.lisp.

Methods
Reader Method: taskmaster-max-thread-count ((one-thread-per-connection-taskmaster one-thread-per-connection-taskmaster))

The maximum number of request threads this taskmaster will simultaneously run before refusing or queueing new connections requests. If the value is null, then there is no limit.

Target Slot

max-thread-count.

Method: taskmaster-max-thread-count ((taskmaster taskmaster))

Default method – no limit on the number of threads.

Generic Writer: (setf taskmaster-max-thread-count) (object)
Package

hunchentoot.

Methods
Writer Method: (setf taskmaster-max-thread-count) ((one-thread-per-connection-taskmaster one-thread-per-connection-taskmaster))

The maximum number of request threads this taskmaster will simultaneously run before refusing or queueing new connections requests. If the value is null, then there is no limit.

Source

taskmaster.lisp.

Target Slot

max-thread-count.

Generic Function: taskmaster-thread-count (taskmaster)

Returns the current number of taskmaster requests.

Package

hunchentoot.

Source

taskmaster.lisp.

Methods
Reader Method: taskmaster-thread-count ((one-thread-per-connection-taskmaster one-thread-per-connection-taskmaster))

The number of taskmaster processing threads currently running.

Target Slot

thread-count.

Method: taskmaster-thread-count ((taskmaster taskmaster))

Default method – claim there is one connection thread.

Generic Writer: (setf taskmaster-thread-count) (object)
Package

hunchentoot.

Methods
Writer Method: (setf taskmaster-thread-count) ((one-thread-per-connection-taskmaster one-thread-per-connection-taskmaster))

The number of taskmaster processing threads currently running.

Source

taskmaster.lisp.

Target Slot

thread-count.

Generic Function: too-many-taskmaster-requests (taskmaster socket)

Signal a "too many requests" error, just prior to closing the connection.

Package

hunchentoot.

Source

taskmaster.lisp.

Methods
Method: too-many-taskmaster-requests ((taskmaster one-thread-per-connection-taskmaster) socket)

6.1.7 Standalone methods

Method: initialize-instance :after ((reply reply) &key)
Source

reply.lisp.

Method: initialize-instance :after ((request request) &rest init-args)

The only initarg for a REQUEST object is :HEADERS-IN. All other slot values are computed in this :AFTER method.

Source

request.lisp.

Method: initialize-instance :after ((acceptor acceptor) &key)
Source

acceptor.lisp.

Method: initialize-instance :after ((taskmaster one-thread-per-connection-taskmaster) &rest init-args)

Ensure the if MAX-ACCEPT-COUNT is supplied, that it is greater than MAX-THREAD-COUNT.

Source

taskmaster.lisp.

Method: initialize-instance :after ((session session) &rest init-args)

Set SESSION-STRING slot after the session has been initialized.

Source

session.lisp.

Method: initialize-instance :after ((acceptor ssl-acceptor) &rest initargs)
Source

ssl.lisp.

Method: initialize-instance :around ((cookie cookie) &rest init-args)

Ensure COOKIE has a correct slot-value for NAME.

Source

cookie.lisp.

Method: print-object ((acceptor acceptor) stream)
Source

acceptor.lisp.


6.1.8 Conditions

Condition: bad-request
Package

hunchentoot.

Source

conditions.lisp.

Direct superclasses

hunchentoot-error.

Condition: hunchentoot-condition

Superclass for all conditions related to Hunchentoot.

Package

hunchentoot.

Source

conditions.lisp.

Direct superclasses

condition.

Direct subclasses
Condition: hunchentoot-error

Superclass for all errors related to Hunchentoot.

Package

hunchentoot.

Source

conditions.lisp.

Direct superclasses
Direct subclasses
Condition: hunchentoot-warning

Superclass for all warnings related to Hunchentoot.

Package

hunchentoot.

Source

conditions.lisp.

Direct superclasses
Direct subclasses

hunchentoot-simple-warning.

Condition: parameter-error

Signalled if a function was called with incosistent or illegal parameters.

Package

hunchentoot.

Source

conditions.lisp.

Direct superclasses

hunchentoot-simple-error.


6.1.9 Classes

Class: acceptor

To create a Hunchentoot webserver, you make an
instance of this class and use the generic function START to start it (and STOP to stop it). Use the :PORT initarg if you don’t want to listen on the default http port 80. There are other initargs most of which you probably won’t need very often. They are explained in detail in the docstrings of the slot definitions for this class.

Unless you are in a Lisp without MP capabilities, you can have several active instances of ACCEPTOR (listening on different ports) at the same time.

Package

hunchentoot.

Source

acceptor.lisp.

Direct subclasses
Direct methods
Direct Default Initargs
InitargValue
:addressnil
:port80
:name(gensym)
:request-class(quote request)
:reply-class(quote reply)
:listen-backlog50
:taskmaster(make-instance (cond (*supports-threads-p* (quote one-thread-per-connection-taskmaster)) (t (quote single-threaded-taskmaster))))
:output-chunking-pt
:input-chunking-pt
:persistent-connections-pt
:read-timeout*default-connection-timeout*
:write-timeout*default-connection-timeout*
:access-log-destination*error-output*
:message-log-destination*error-output*
:document-root(load-time-value (default-document-directory))
:error-template-directory(load-time-value (default-document-directory errors))
Direct slots
Slot: port

The port the acceptor is listening on. The
default is 80. Note that depending on your operating system you might need special privileges to listen on port 80. When 0, the port will be chosen by the system the first time the acceptor is started.

Initargs

:port

Readers

acceptor-port.

Writers

This slot is read-only.

Slot: address

The address the acceptor is listening on.
If address is a string denoting an IP address, then the server only receives connections for that address. This must be one of the addresses associated with the machine and allowed values are host names such as "www.zappa.com" and address strings such as "72.3.247.29". If address is NIL, then the server will receive connections to all IP addresses on the machine. This is the default.

Initargs

:address

Readers

acceptor-address.

Writers

This slot is read-only.

Slot: name

The optional name of the acceptor, a symbol.
This name can be utilized when defining "easy handlers" - see DEFINE-EASY-HANDLER. The default name is an uninterned symbol as returned by GENSYM.

Initargs

:name

Readers

acceptor-name.

Writers

(setf acceptor-name).

Slot: request-class

Determines which class of request
objects is created when a request comes in and should be (a symbol naming) a class which inherits from REQUEST. The default is the symbol REQUEST.

Initargs

:request-class

Readers

acceptor-request-class.

Writers

(setf acceptor-request-class).

Slot: reply-class

Determines which class of reply
objects is created when a request is served in and should be (a symbol naming) a class which inherits from REPLY. The default is the symbol REPLY.

Initargs

:reply-class

Readers

acceptor-reply-class.

Writers

(setf acceptor-reply-class).

Slot: taskmaster

The taskmaster (i.e. an instance of a
subclass of TASKMASTER) that is responsible for scheduling the work for this acceptor. The default depends on the MP capabilities of the underlying Lisp.

Initargs

:taskmaster

Readers

acceptor-taskmaster.

Writers

This slot is read-only.

Slot: output-chunking-p

A generalized boolean denoting
whether the acceptor may use chunked encoding for output, i.e. when sending data to the client. The default is T and there’s usually no reason to change this to NIL.

Initargs

:output-chunking-p

Readers

acceptor-output-chunking-p.

Writers

(setf acceptor-output-chunking-p).

Slot: input-chunking-p

A generalized boolean denoting
whether the acceptor may use chunked encoding for input, i.e. when accepting request bodies from the client. The default is T and there’s usually no reason to change this to NIL.

Initargs

:input-chunking-p

Readers

acceptor-input-chunking-p.

Writers

(setf acceptor-input-chunking-p).

Slot: persistent-connections-p

A generalized boolean
denoting whether the acceptor supports persistent connections, which is the default for threaded acceptors. If this property is NIL, Hunchentoot closes each incoming connection after having processed one request. This is the default for non-threaded acceptors.

Initargs

:persistent-connections-p

Readers

acceptor-persistent-connections-p.

Writers

(setf acceptor-persistent-connections-p).

Slot: read-timeout

The read timeout of the acceptor,
specified in (fractional) seconds. The precise semantics of this parameter is determined by the underlying Lisp’s implementation of socket timeouts. NIL means no timeout.

Initargs

:read-timeout

Readers

acceptor-read-timeout.

Writers

This slot is read-only.

Slot: write-timeout

The write timeout of the acceptor,
specified in (fractional) seconds. The precise semantics of this parameter is determined by the underlying Lisp’s implementation of socket timeouts. NIL means no timeout.

Initargs

:write-timeout

Readers

acceptor-write-timeout.

Writers

This slot is read-only.

Slot: listen-socket

The socket listening for incoming connections.

Readers

acceptor-listen-socket.

Writers

(setf acceptor-listen-socket).

Slot: listen-backlog

Number of pending connections
allowed in the listen socket before the kernel rejects further incoming connections.

Initargs

:listen-backlog

Readers

acceptor-listen-backlog.

Writers

This slot is read-only.

Slot: acceptor-shutdown-p

A flag that makes the acceptor
shutdown itself when set to something other than NIL.

Initform

t

Readers

acceptor-shutdown-p.

Writers

(setf acceptor-shutdown-p).

Slot: requests-in-progress

The number of
requests currently in progress.

Initform

0

Readers

acceptor-requests-in-progress.

Writers

(setf acceptor-requests-in-progress).

Slot: shutdown-queue

A condition variable
used with soft shutdown, signaled when all requests have been processed.

Initform

(hunchentoot::make-condition-variable)

Readers

acceptor-shutdown-queue.

Writers

(setf acceptor-shutdown-queue).

Slot: shutdown-lock

The lock protecting the shutdown-queue
condition variable and the requests-in-progress counter.

Initform

(hunchentoot::make-lock "hunchentoot-acceptor-shutdown")

Readers

acceptor-shutdown-lock.

Writers

(setf acceptor-shutdown-lock).

Slot: access-log-destination

Destination of the access log
which contains one log entry per request handled in a format similar to Apache’s access.log. Can be set to a pathname or string designating the log file, to a open output stream or to NIL to suppress logging.

Initargs

:access-log-destination

Readers

acceptor-access-log-destination.

Writers

(setf acceptor-access-log-destination).

Slot: message-log-destination

Destination of the server
error log which is used to log informational, warning and error messages in a free-text format intended for human inspection. Can be set to a pathname or string designating the log file, to a open output stream or to NIL to suppress logging.

Initargs

:message-log-destination

Readers

acceptor-message-log-destination.

Writers

(setf acceptor-message-log-destination).

Slot: error-template-directory

Directory pathname that
contains error message template files for server-generated error messages. Files must be named <return-code>.html with <return-code> representing the HTTP return code that the file applies to,
i.e. 404.html would be used as the content for a HTTP 404 Not found response.

Initargs

:error-template-directory

Readers

acceptor-error-template-directory.

Writers

(setf acceptor-error-template-directory).

Slot: document-root

Directory pathname that points to
files that are served by the acceptor if no more specific acceptor-dispatch-request method handles the request.

Initargs

:document-root

Readers

acceptor-document-root.

Writers

(setf acceptor-document-root).

Class: easy-acceptor

This is the acceptor of the “easy” Hunchentoot framework.

Package

hunchentoot.

Source

easy-handlers.lisp.

Direct superclasses

acceptor.

Direct subclasses

easy-ssl-acceptor.

Direct methods

acceptor-dispatch-request.

Class: easy-ssl-acceptor

This is an acceptor that mixes the “easy” Hunchentoot with SSL connections.

Package

hunchentoot.

Source

easy-handlers.lisp.

Direct superclasses
Class: multi-threaded-taskmaster

An abstract class for taskmasters that use multiple threads.
For a concrete class to instantiate, use one-thread-per-connection-taskmaster.

Package

hunchentoot.

Source

taskmaster.lisp.

Direct superclasses

taskmaster.

Direct subclasses

one-thread-per-connection-taskmaster.

Direct methods
Direct slots
Slot: acceptor-process

A process that accepts incoming connections and hands them off to new processes for request handling.

Readers

acceptor-process.

Writers

(setf acceptor-process).

Class: one-thread-per-connection-taskmaster

A taskmaster that starts one thread for listening
to incoming requests and one new thread for each incoming connection.

If MAX-THREAD-COUNT is null, a new thread will always be created for
each request.

If MAX-THREAD-COUNT is supplied, the number of request threads is
limited to that. Furthermore, if MAX-ACCEPT-COUNT is not supplied, an
HTTP 503 will be sent if the thread limit is exceeded. Otherwise, if MAX-ACCEPT-COUNT is supplied, it must be greater than MAX-THREAD-COUNT;
in this case, requests are accepted up to MAX-ACCEPT-COUNT, and only
then is HTTP 503 sent.

It is important to note that MAX-ACCEPT-COUNT and the HTTP 503 behavior described above is racing with the acceptor listen backlog. If we are receiving requests faster than threads can be spawned and 503 sent, the requests will be silently rejected by the kernel.

In a load-balanced environment with multiple Hunchentoot servers, it’s reasonable to provide MAX-THREAD-COUNT but leave MAX-ACCEPT-COUNT null. This will immediately result in HTTP 503 when one server is out of resources, so the load balancer can try to find another server.

In an environment with a single Hunchentoot server, it’s reasonable
to provide both MAX-THREAD-COUNT and a somewhat larger value for MAX-ACCEPT-COUNT. This will cause a server that’s almost out of
resources to wait a bit; if the server is completely out of resources,
then the reply will be HTTP 503.

This is the default taskmaster implementation for multi-threaded Lisp implementations.

Package

hunchentoot.

Source

taskmaster.lisp.

Direct superclasses

multi-threaded-taskmaster.

Direct methods
Direct Default Initargs
InitargValue
:max-thread-count*default-max-thread-count*
:max-accept-count*default-max-accept-count*
Direct slots
Slot: max-thread-count

The maximum number of request threads this taskmaster will simultaneously run before refusing or queueing new connections requests. If the value is null, then there is no limit.

Type

(or integer null)

Initargs

:max-thread-count

Readers

taskmaster-max-thread-count.

Writers

(setf taskmaster-max-thread-count).

Slot: thread-count

The number of taskmaster processing threads currently running.

Type

integer

Initform

0

Readers

taskmaster-thread-count.

Writers

(setf taskmaster-thread-count).

Slot: thread-count-lock

In the absence of ’atomic-incf’, we need this to atomically increment and decrement the request count.

Initform

(hunchentoot::make-lock "taskmaster-thread-count")

Readers

taskmaster-thread-count-lock.

Writers

This slot is read-only.

Slot: max-accept-count

The maximum number of connections this taskmaster will accept before refusing new connections. If supplied, this must be greater than MAX-THREAD-COUNT. The number of queued requests is the difference between MAX-ACCEPT-COUNT and MAX-THREAD-COUNT.

Type

(or integer null)

Initargs

:max-accept-count

Readers

taskmaster-max-accept-count.

Writers

(setf taskmaster-max-accept-count).

Slot: accept-count

The number of connection currently accepted by the taskmaster. These connections are not ensured to be processed, thay may be waiting for an empty processing slot or rejected because the load is too heavy.

Type

integer

Initform

0

Readers

taskmaster-accept-count.

Writers

(setf taskmaster-accept-count).

Slot: accept-count-lock

In the absence of ’atomic-incf’, we need this to atomically increment and decrement the accept count.

Initform

(hunchentoot::make-lock "taskmaster-accept-count")

Readers

taskmaster-accept-count-lock.

Writers

This slot is read-only.

Slot: wait-queue

A queue that we use to wait for a free connection.

Initform

(hunchentoot::make-condition-variable)

Readers

taskmaster-wait-queue.

Writers

This slot is read-only.

Slot: wait-lock

The lock for the connection wait queue.

Initform

(hunchentoot::make-lock "taskmaster-thread-lock")

Readers

taskmaster-wait-lock.

Writers

This slot is read-only.

Slot: worker-thread-name-format
Type

(or string null)

Initform

"hunchentoot-worker-~a"

Initargs

:worker-thread-name-format

Readers

taskmaster-worker-thread-name-format.

Writers

(setf taskmaster-worker-thread-name-format).

Class: reply

Objects of this class hold all the information
about an outgoing reply. They are created automatically by Hunchentoot and can be accessed and modified by the corresponding handler.

You should not mess with the slots of these objects directly, but you can subclass REPLY in order to implement your own behaviour. See the REPLY-CLASS slot of the ACCEPTOR class.

Package

hunchentoot.

Source

reply.lisp.

Direct methods
Direct slots
Slot: content-type

The outgoing ’Content-Type’ http
header which defaults to the value of *DEFAULT-CONTENT-TYPE*.

Readers

content-type.

Writers

This slot is read-only.

Slot: content-length

The outgoing ’Content-Length’
http header which defaults NIL. If this is NIL, Hunchentoot will compute the content length.

Readers

content-length.

Writers

This slot is read-only.

Slot: headers-out

An alist of the outgoing http headers
not including the ’Set-Cookie’, ’Content-Length’, and ’Content-Type’ headers. Use the functions HEADER-OUT and (SETF HEADER-OUT) to modify this slot.

Readers

headers-out.

Writers

This slot is read-only.

Slot: return-code

The http return code of this
reply. The return codes Hunchentoot can handle are defined in specials.lisp.

Initform

hunchentoot:+http-ok+

Readers

return-code.

Writers

(setf return-code).

Slot: external-format

The external format of the reply - used for character output.

Initform

hunchentoot:*hunchentoot-default-external-format*

Readers

reply-external-format.

Writers

(setf reply-external-format).

Slot: cookies-out

The outgoing cookies. This slot’s
value should only be modified by the functions defined in cookies.lisp.

Readers

cookies-out.

Writers

(setf cookies-out).

Class: request

Objects of this class hold all the information
about an incoming request. They are created automatically by acceptors and can be accessed by the corresponding handler.

You should not mess with the slots of these objects directly, but you can subclass REQUEST in order to implement your own behaviour. See the REQUEST-CLASS slot of the ACCEPTOR class.

Package

hunchentoot.

Source

request.lisp.

Direct methods
Direct slots
Slot: acceptor

The acceptor which created this request object.

Initargs

:acceptor

Readers

request-acceptor.

Writers

This slot is read-only.

Slot: headers-in

An alist of the incoming headers.

Initargs

:headers-in

Readers

headers-in.

Writers

This slot is read-only.

Slot: method

The request method as a keyword.

Package

common-lisp.

Initargs

:method

Readers

request-method.

Writers

This slot is read-only.

Slot: uri

The request URI as a string.

Initargs

:uri

Readers

request-uri.

Writers

This slot is read-only.

Slot: server-protocol

The HTTP protocol as a keyword.

Initargs

:server-protocol

Readers

server-protocol.

Writers

This slot is read-only.

Slot: local-addr

The IP address of the local system that the client connected to.

Initargs

:local-addr

Readers

local-addr.

Writers

This slot is read-only.

Slot: local-port

The TCP port number of the local system that the client connected to.

Initargs

:local-port

Readers

local-port.

Writers

This slot is read-only.

Slot: remote-addr

The IP address of the client that initiated this request.

Initargs

:remote-addr

Readers

remote-addr.

Writers

This slot is read-only.

Slot: remote-port

The TCP port number of the client socket from which this request originated.

Initargs

:remote-port

Readers

remote-port.

Writers

This slot is read-only.

Slot: content-stream

A stream from which the request body can be read if there is one.

Initargs

:content-stream

Readers

content-stream.

Writers

This slot is read-only.

Slot: cookies-in

An alist of the cookies sent by the client.

Readers

cookies-in.

Writers

This slot is read-only.

Slot: get-parameters

An alist of the GET parameters sent by the client.

Readers

get-parameters.

Writers

This slot is read-only.

Slot: post-parameters

An alist of the POST parameters sent by the client.

Readers

post-parameters.

Writers

This slot is read-only.

Slot: script-name

The URI requested by the client without the query string.

Readers

script-name.

Writers

This slot is read-only.

Slot: query-string

The query string of this request.

Readers

query-string.

Writers

This slot is read-only.

Slot: session

The session object associated with this request.

Readers

session.

Writers

(setf session).

Slot: aux-data

Used to keep a user-modifiable alist with arbitrary data during the request.

Readers

aux-data.

Writers

(setf aux-data).

Slot: raw-post-data

The raw string sent as the body of a
POST request, populated only if not a multipart/form-data request.

Class: session

SESSION objects are automatically maintained by
Hunchentoot. They should not be created explicitly with MAKE-INSTANCE but implicitly with START-SESSION and they should be treated as opaque objects.

You can ignore Hunchentoot’s SESSION objects altogether and implement your own sessions if you provide corresponding methods for SESSION-COOKIE-VALUE and SESSION-VERIFY.

Package

hunchentoot.

Source

session.lisp.

Direct methods
Direct slots
Slot: session-id

The unique ID (an INTEGER) of the session.

Type

integer

Initform

(hunchentoot:next-session-id (hunchentoot:request-acceptor hunchentoot:*request*))

Readers

session-id.

Writers

This slot is read-only.

Slot: session-string

The session string encodes enough
data to safely retrieve this session. It is sent to the browser as a cookie value or as a GET parameter.

Readers

session-string.

Writers

This slot is read-only.

Slot: user-agent

The incoming ’User-Agent’ header that was sent when this session was created.

Initform

(hunchentoot:user-agent hunchentoot:*request*)

Readers

session-user-agent.

Writers

This slot is read-only.

Slot: remote-addr

The remote IP address of the client
when this session was started as returned by REAL-REMOTE-ADDR.

Initform

(hunchentoot:real-remote-addr hunchentoot:*request*)

Readers

session-remote-addr.

Writers

This slot is read-only.

Slot: session-start

The time this session was started.

Initform

(get-universal-time)

Readers

session-start.

Writers

This slot is read-only.

Slot: last-click

The last time this session was used.

Initform

(get-universal-time)

Readers

session-last-click.

Writers

This slot is read-only.

Slot: session-data

Data associated with this session - see SESSION-VALUE.

Initargs

:session-data

Readers

session-data.

Writers

This slot is read-only.

Slot: max-time

The time (in seconds) after which this session expires if it’s not used.

Type

fixnum

Initform

hunchentoot:*session-max-time*

Initargs

:max-time

Readers

session-max-time.

Writers

(setf session-max-time).

Class: single-threaded-taskmaster

A taskmaster that runs synchronously in the thread
where the START function was invoked (or in the case of LispWorks in the thread started by COMM:START-UP-SERVER). This is the simplest possible taskmaster implementation in that its methods do nothing but calling their acceptor "sister" methods - EXECUTE-ACCEPTOR calls ACCEPT-CONNECTIONS, HANDLE-INCOMING-CONNECTION calls PROCESS-CONNECTION.

Package

hunchentoot.

Source

taskmaster.lisp.

Direct superclasses

taskmaster.

Direct methods
Class: ssl-acceptor

Create and START an instance of this class
(instead of ACCEPTOR) if you want an https server. There are two required initargs, :SSL-CERTIFICATE-FILE and :SSL-PRIVATEKEY-FILE, for pathname designators denoting the certificate file and the key file in PEM format. On LispWorks, you can have both in one file in which case the second initarg is optional. You can also use the :SSL-PRIVATEKEY-PASSWORD initarg to provide a password (as a string) for the key file (or NIL, the default, for no password).

The default port for SSL-ACCEPTOR instances is 443 instead of 80

Package

hunchentoot.

Source

ssl.lisp.

Direct superclasses

acceptor.

Direct subclasses

easy-ssl-acceptor.

Direct methods
Direct Default Initargs
InitargValue
:port443
Direct slots
Slot: ssl-certificate-file

A pathname designator for a certificate file in PEM format.

Initargs

:ssl-certificate-file

Readers

acceptor-ssl-certificate-file.

Writers

This slot is read-only.

Slot: ssl-privatekey-file

A pathname designator for a
private key file in PEM format, or (only on LispWorks) NIL if the certificate file contains the private key.

Initargs

:ssl-privatekey-file

Readers

acceptor-ssl-privatekey-file.

Writers

This slot is read-only.

Slot: ssl-privatekey-password

The password for the
private key file or NIL for no password.

Initargs

:ssl-privatekey-password

Readers

acceptor-ssl-privatekey-password.

Writers

This slot is read-only.

Class: taskmaster

An instance of this class is responsible for
distributing the work of handling requests for its acceptor. This is an "abstract" class in the sense that usually only instances of subclasses of TASKMASTER will be used.

Package

hunchentoot.

Source

taskmaster.lisp.

Direct subclasses
Direct methods
Direct slots
Slot: acceptor

A backpointer to the acceptor instance this taskmaster works for.

Readers

taskmaster-acceptor.

Writers

(setf taskmaster-acceptor).


6.2 Internals


6.2.1 Constants

Constant: +buffer-length+

Length of buffers used for internal purposes.

Package

hunchentoot.

Source

specials.lisp.

Constant: +crlf+

A 2-element array consisting of the character codes for a CRLF sequence.

Package

hunchentoot.

Source

specials.lisp.

Constant: +day-names+

The three-character names of the seven days of the week - needed for cookie date format.

Package

hunchentoot.

Source

specials.lisp.

A link to the website of the underlying Lisp implementation.

Package

hunchentoot.

Source

specials.lisp.

Constant: +latin-1+

A FLEXI-STREAMS external format used for ‘faithful’ input and output of binary data.

Package

hunchentoot.

Source

specials.lisp.

Constant: +month-names+

The three-character names of the twelve months - needed for cookie date format.

Package

hunchentoot.

Source

specials.lisp.

Constant: +utf-8+

A FLEXI-STREAMS external format used internally for logging and to encode cookie values.

Package

hunchentoot.

Source

specials.lisp.

Constant: +valid-protocol-versions+
Package

hunchentoot.

Source

headers.lisp.

Constant: +valid-request-methods+
Package

hunchentoot.

Source

headers.lisp.


6.2.2 Special variables

Special Variable: *access-log-lock*

A global lock to prevent concurrent access to the log file used by the ACCEPTOR-LOG-ACCESS function.

Package

hunchentoot.

Source

specials.lisp.

Special Variable: *close-hunchentoot-stream*

This variable is set to NIL during the processing of a handler to tell the acceptor not to close the connection after it is done.

Package

hunchentoot.

Source

specials.lisp.

Special Variable: *default-max-accept-count*
Package

hunchentoot.

Source

taskmaster.lisp.

Special Variable: *default-max-thread-count*
Package

hunchentoot.

Source

taskmaster.lisp.

Special Variable: *easy-handler-alist*

An alist of (URI acceptor-names function host) lists defined by DEFINE-EASY-HANDLER.

Package

hunchentoot.

Source

easy-handlers.lisp.

Special Variable: *find-string-hash*

Hash tables used internally by READ-UNTIL to cache offset arrays.

Package

url-rewrite.

Source

specials.lisp.

Special Variable: *finish-processing-socket*

Will be set to T if PROCESS-CONNECTION is to stop processing more requests on the current socket connection.

Package

hunchentoot.

Source

specials.lisp.

Special Variable: *global-session-db-lock*

A global lock to prevent two threads from modifying *session-db* at the same time (or NIL for Lisps which don’t have threads).

Package

hunchentoot.

Source

specials.lisp.

Special Variable: *headers-sent*

Used internally to check whether the reply headers have already been sent for this request.

Package

hunchentoot.

Source

specials.lisp.

Special Variable: *http-reason-phrase-map*

Used to map numerical return codes to reason phrases.

Package

hunchentoot.

Source

specials.lisp.

Special Variable: *hunchentoot-stream*

The stream representing the socket Hunchentoot is listening on.

Package

hunchentoot.

Source

specials.lisp.

Special Variable: *hyperdoc-base-uri*
Package

url-rewrite.

Source

specials.lisp.

Special Variable: *hyperdoc-base-uri*
Package

hunchentoot.

Source

specials.lisp.

Special Variable: *message-log-lock*

A global lock to prevent concurrent access to the log file used by the ACCEPTOR-LOG-MESSAGE function.

Package

hunchentoot.

Source

specials.lisp.

Special Variable: *mime-type-hash*

A hash table which maps file suffixes to MIME types.

Package

hunchentoot.

Source

mime-types.lisp.

Special Variable: *mime-type-list*

An alist where the cars are MIME types and the cdrs are list of file suffixes for the corresponding type.

Package

hunchentoot.

Source

mime-types.lisp.

Special Variable: *session-db*

The default (global) session database.

Package

hunchentoot.

Source

specials.lisp.

Special Variable: *the-random-state*

A fresh random state.

Package

hunchentoot.

Source

specials.lisp.

Special Variable: *tmp-files*

A list of temporary files created while a request was handled.

Package

hunchentoot.

Source

specials.lisp.


6.2.3 Symbol macros

Symbol Macro: *supports-threads-p*
Package

hunchentoot.

Source

specials.lisp.


6.2.4 Macros

Macro: def-http-return-code (name value reason-phrase)

Shortcut to define constants for return codes. NAME is a Lisp symbol, VALUE is the numerical value of the return code, and REASON-PHRASE is the phrase (a string) to be shown in the server’s status line.

Package

hunchentoot.

Source

specials.lisp.

Macro: defconstant (name value &optional doc)

Make sure VALUE is evaluated only once (to appease SBCL).

Package

hunchentoot.

Source

specials.lisp.

Macro: defvar-unbound (name &optional doc-string)

Convenience macro to declare unbound special variables with a documentation string.

Package

hunchentoot.

Source

specials.lisp.

Macro: handler-case* (expression &rest clauses)

Like HANDLER-CASE, but observes *CATCH-ERRORS-P*.

Package

hunchentoot.

Source

conditions.lisp.

Macro: ignore-errors* (&body body)

Like IGNORE-ERRORS, but observes *CATCH-ERRORS-P*.

Package

hunchentoot.

Source

conditions.lisp.

Macro: upgrade-vector (vector new-type &key converter)

Returns a vector with the same length and the same elements as VECTOR (a variable holding a vector) but having element type NEW-TYPE. If CONVERTER is not NIL, it should designate a function which will be applied to each element of VECTOR before the result is stored in the new vector. The resulting vector will have a fill pointer set to its end.

The macro also uses SETQ to store the new vector in VECTOR.

Package

hunchentoot.

Source

util.lisp.

Macro: with-acceptor-request-count-incremented ((acceptor) &body body)

Execute BODY with ACCEPTOR-REQUESTS-IN-PROGRESS of ACCEPTOR incremented by one. If the ACCEPTOR-SHUTDOWN-P returns true after the BODY has been executed, the ACCEPTOR-SHUTDOWN-QUEUE condition variable of the ACCEPTOR is signalled in order to finish shutdown processing.

Package

hunchentoot.

Source

acceptor.lisp.

Macro: with-conditions-caught-and-logged (() &body body)

Run BODY with conditions caught and logged by the *ACCEPTOR*. Errors are stopped right away so no other part of the software is impacted by them.

Package

hunchentoot.

Source

util.lisp.

Macro: with-debugger (&body body)

Executes BODY and invokes the debugger if an error is signaled and *CATCH-ERRORS-P* is NIL.

Package

hunchentoot.

Source

conditions.lisp.

Macro: with-lock-held ((lock) &body body)

Simple wrapper to allow LispWorks and Bordeaux Threads to coexist.

Package

hunchentoot.

Source

compat.lisp.

Macro: with-log-stream ((stream-var destination lock) &body body)

Helper macro to write log entries. STREAM-VAR is a symbol that will be bound to the logging stream during the execution of BODY. DESTINATION is the logging destination, which can be either a pathname designator of the log file, a symbol designating an open stream or NIL if no logging should be done. LOCK refers to the lock that should be held during the logging operation. If DESTINATION is a pathname, a flexi stream with UTF-8 encoding will be created and bound to STREAM-VAR. If an error occurs while writing to the log file, that error will be logged to *ERROR-OUTPUT*.

Note that logging to a file involves opening and closing the log file for every logging operation, which is overall costly. Web servers with high throughput demands should make use of a specialized logging function rather than relying on Hunchentoot’s default logging facility.

Package

hunchentoot.

Source

log.lisp.

Macro: with-mapped-conditions (() &body body)

Run BODY with usocket condition mapping in effect, i.e. platform specific network errors will be signalled as usocket conditions. For Lispworks, no mapping is performed.

Package

hunchentoot.

Source

util.lisp.

Macro: with-session-lock-held ((lock) &body body)

This is like WITH-LOCK-HELD except that it will accept NIL as a "lock" and just execute BODY in this case.

Package

hunchentoot.

Source

session.lisp.


6.2.5 Ordinary functions

Function: acceptor-make-request (acceptor socket &key headers-in content-stream method uri remote local server-protocol)

Make a REQUEST instance for the ACCEPTOR, setting up those slots that are determined from the SOCKET by calling the appropriate socket query functions.

Package

hunchentoot.

Source

acceptor.lisp.

Function: add-cookie-value-to-url (url &key cookie-name value replace-ampersands-p)

Removes all GET parameters named COOKIE-NAME from URL and then adds a new GET parameter with the name COOKIE-NAME and the value VALUE. If REPLACE-AMPERSANDS-P is true all literal ampersands in URL are replaced with ’&amp;’. The resulting URL is returned.

Package

hunchentoot.

Source

misc.lisp.

Function: address-string ()

Returns a string with information about Hunchentoot suitable for inclusion in HTML output.

Package

hunchentoot.

Source

util.lisp.

Function: comment-start-p ()

Checks whether *STANDARD-OUTPUT* currently ’looks at’ the string "–". Will move the position within the stream by one unless the first characters it sees is not a hyphen.

Package

url-rewrite.

Source

primitives.lisp.

Function: compute-array-parameter (parameter-name type parameters)

Retrieves all parameters from PARAMETERS which are named like "PARAMETER-NAME[N]" (where N is a non-negative integer), converts them to TYPE, and returns an array where the Nth element is the corresponding value.

Package

hunchentoot.

Source

easy-handlers.lisp.

Function: compute-hash-table-parameter (parameter-name type parameters key-type test-function)

Retrieves all parameters from PARAMETERS which are named like "PARAMETER-NAME{FOO}" (where FOO is any sequence of characters not containing curly brackets), converts them to TYPE, and returns a hash table with test function TEST-FUNCTION where the corresponding value is associated with the key FOO (converted to KEY-TYPE).

Package

hunchentoot.

Source

easy-handlers.lisp.

Function: compute-list-parameter (parameter-name type parameters)

Retrieves all parameters from PARAMETERS which are named PARAMETER-NAME, converts them to TYPE, and returns a list of them.

Package

hunchentoot.

Source

easy-handlers.lisp.

Function: compute-parameter (parameter-name parameter-type request-type)

Computes and returns the parameter(s) called PARAMETER-NAME and converts it/them according to the value of PARAMETER-TYPE. REQUEST-TYPE is one of :GET, :POST, or :BOTH.

Package

hunchentoot.

Source

easy-handlers.lisp.

Function: compute-real-name (symbol)

Computes the ‘real’ paramater name (a string) from the Lisp symbol SYMBOL. Used in cases where no parameter name is provided.

Package

hunchentoot.

Source

easy-handlers.lisp.

Function: compute-simple-parameter (parameter-name type parameter-reader)

Retrieves the parameter named PARAMETER-NAME using the reader PARAMETER-READER and converts it to TYPE.

Package

hunchentoot.

Source

easy-handlers.lisp.

Function: condition-variable-signal (condition-variable)
Package

hunchentoot.

Source

compat.lisp.

Function: condition-variable-wait (condition-variable lock)
Package

hunchentoot.

Source

compat.lisp.

Function: convert-hack (string external-format)

The rfc2388 package is buggy in that it operates on a character stream and thus only accepts encodings which are 8 bit transparent. In order to support different encodings for parameter values submitted, we post process whatever string values the rfc2388 package has returned.

Package

hunchentoot.

Source

request.lisp.

Function: convert-parameter (argument type)

Converts the string ARGUMENT to TYPE where TYPE is one of the symbols STRING, CHARACTERS, INTEGER, KEYWORD, or BOOLEAN - or otherwise a function designator for a function of one argument. ARGUMENT can also be NIL in which case this function also returns NIL unconditionally.

Package

hunchentoot.

Source

easy-handlers.lisp.

Converts UNIVERSAL-TIME to cookie date format.

Package

hunchentoot.

Source

cookie.lisp.

Function: cookies-to-alist (cookies)

Converts a list of cookies of the form "key=value" to an alist. No character set processing is done.

Package

hunchentoot.

Source

util.lisp.

Function: create-random-string (&optional n base)

Returns a random number (as a string) with base BASE and N digits.

Package

hunchentoot.

Source

util.lisp.

Function: do-with-acceptor-request-count-incremented (*acceptor* function)
Package

hunchentoot.

Source

acceptor.lisp.

Function: encode-session-string (id user-agent remote-addr start)

Creates a uniquely encoded session string based on the values ID, USER-AGENT, REMOTE-ADDR, and START

Package

hunchentoot.

Source

session.lisp.

Function: ensure-parse-integer (string &key start end radix)
Package

hunchentoot.

Source

util.lisp.

Function: external-format-from-content-type (content-type)

Creates and returns an external format corresponding to the value of the content type header provided in CONTENT-TYPE. If the content type was not set or if the character set specified was invalid, NIL is returned.

Package

hunchentoot.

Source

request.lisp.

Function: form-url-encoded-list-to-alist (form-url-encoded-list &optional external-format)

Converts a list FORM-URL-ENCODED-LIST of name/value pairs into an alist. Both names and values are url-decoded while doing this.

Package

hunchentoot.

Source

util.lisp.

Function: get-backtrace ()

Returns a string with a backtrace of what the Lisp system thinks is the "current" error.

Package

hunchentoot.

Source

conditions.lisp.

Function: get-local-address-and-port (socket)

Returns the local address and port of the socket SOCKET as two values. The address is returned as a string in dotted IP address notation, resp. IPv6 notation.

Package

hunchentoot.

Source

compat.lisp.

Function: get-peer-address-and-port (socket)

Returns the peer address and port of the socket SOCKET as two values. The address is returned as a string in dotted IP address notation, resp. IPv6 notation.

Package

hunchentoot.

Source

compat.lisp.

Function: get-post-data (&key request want-stream already-read)

Reads the request body from the stream and stores the raw contents (as an array of octets) in the corresponding slot of the REQUEST object. Returns just the stream if WANT-STREAM is true. If there’s a Content-Length header, it is assumed, that ALREADY-READ octets have already been read.

Package

hunchentoot.

Source

request.lisp.

Function: get-request-data (stream)

Reads incoming headers from the client via STREAM. Returns as multiple values the headers as an alist, the method, the URI, and the protocol of the request.

Package

hunchentoot.

Source

headers.lisp.

Function: get-stored-session (id)

Returns the SESSION object corresponding to the number ID if the session has not expired. Will remove the session if it has expired but will not create a new one.

Package

hunchentoot.

Source

session.lisp.

Function: header-out-set-p (name &optional reply)

Returns a true value if the outgoing http header named NAME has been specified already. NAME should be a keyword or a string.

Package

hunchentoot.

Source

reply.lisp.

Function: hunchentoot-warn (format-control &rest format-arguments)

Signals a warning of type HUNCHENTOOT-SIMPLE-WARNING with the provided format control and arguments.

Package

hunchentoot.

Source

conditions.lisp.

Function: hyperdoc-lookup (symbol type)
Package

url-rewrite.

Source

specials.lisp.

Function: hyperdoc-lookup (symbol type)
Package

hunchentoot.

Source

specials.lisp.

Function: input-chunking-p ()

Whether input chunking is currently switched on for *HUNCHENTOOT-STREAM* - note that this will return NIL if the stream not a chunked stream.

Package

hunchentoot.

Source

util.lisp.

Function: iso-time (&optional time)

Returns the universal time TIME as a string in full ISO format.

Package

hunchentoot.

Source

util.lisp.

Function: keep-alive-p (request)

Returns a true value unless the incoming request’s headers or the server’s PERSISTENT-CONNECTIONS-P setting obviate a keep-alive reply. The second return value denotes whether the client has explicitly asked for a persistent connection.

Package

hunchentoot.

Source

util.lisp.

Function: letterp (c)

Checks whether C is a character between A and Z (case-insensitive).

Package

url-rewrite.

Source

primitives.lisp.

Function: make-condition-variable (&key name)
Package

hunchentoot.

Source

compat.lisp.

Function: make-cooked-message (http-status-code &key error backtrace)
Package

hunchentoot.

Source

acceptor.lisp.

Function: make-defun-parameter (description default-parameter-type default-request-type)

Creates a keyword parameter to be used by DEFINE-EASY-HANDLER. DESCRIPTION is one of the elements of DEFINE-EASY-HANDLER’s LAMBDA-LIST and DEFAULT-PARAMETER-TYPE and DEFAULT-REQUEST-TYPE are the global default values.

Package

hunchentoot.

Source

easy-handlers.lisp.

Function: make-lock (name)

Simple wrapper to allow LispWorks and Bordeaux Threads to coexist.

Package

hunchentoot.

Source

compat.lisp.

Function: make-socket-stream (socket acceptor)

Returns a stream for the socket SOCKET. The ACCEPTOR argument is ignored.

Package

hunchentoot.

Source

compat.lisp.

Function: make-tmp-file-name (&optional prefix)

Generates a unique name for a temporary file. This function is called from the RFC2388 library when a file is uploaded.

Package

hunchentoot.

Source

util.lisp.

Function: maybe-add-charset-to-content-type-header (content-type external-format)

Given the contents of a CONTENT-TYPE header, add a charset= attribute describing the given EXTERNAL-FORMAT if no charset= attribute is already present and the content type is a text content type. Returns the augmented content type.

Package

hunchentoot.

Source

headers.lisp.

Function: maybe-handle-range-header (file)

Helper function for handle-static-file. Determines whether the requests specifies a Range header. If so, parses the header and position the already opened file to the location specified. Returns the number of bytes to transfer from the file. Invalid specified ranges are reported to the client with a HTTP 416 status code.

Package

hunchentoot.

Source

misc.lisp.

Function: maybe-read-post-parameters (&key request force external-format)

Make surce that any POST parameters in the REQUEST are parsed. The body of the request must be either application/x-www-form-urlencoded or multipart/form-data to be considered as containing POST parameters. If FORCE is true, parsing is done unconditionally. Otherwise, parsing will only be done if the RAW-POST-DATA slot in the REQUEST is false. EXTERNAL-FORMAT specifies the external format of the data in the request body. By default, the encoding is determined from the Content-Type header of the request or from *HUNCHENTOOT-DEFAULT-EXTERNAL-FORMAT* if none is found.

Package

hunchentoot.

Source

request.lisp.

Function: maybe-rewrite-urls-for-session (html &key cookie-name value)

Rewrites the HTML page HTML such that the name/value pair COOKIE-NAME/COOKIE-VALUE is inserted if the client hasn’t sent a cookie of the same name but only if *REWRITE-FOR-SESSION-URLS* is true. See the docs for URL-REWRITE:REWRITE-URLS.

Package

hunchentoot.

Source

misc.lisp.

Function: md5-hex (string)

Calculates the md5 sum of the string STRING and returns it as a hex string.

Package

hunchentoot.

Source

util.lisp.

Function: name-char-p (c)

Checks whether C is a name constituent character in the sense of HTML.

Package

url-rewrite.

Source

primitives.lisp.

Function: not-implemented (name)

Used to signal an error if an operation named NAME is not implemented.

Package

hunchentoot.

Source

conditions.lisp.

Function: parse-content-type (content-type-header)

Reads and parses a ‘Content-Type’ header and returns it as three values - the type, the subtype, and the requests’ character set as specified in the ’charset’ parameter in the header, if there is one and if the content type is "text". CONTENT-TYPE-HEADER is supposed to be the corresponding header value as a string.

Package

hunchentoot.

Source

util.lisp.

Function: parse-multipart-form-data (request external-format)

Parse the REQUEST body as multipart/form-data, assuming that its content type has already been verified. Returns the form data as alist or NIL if there was no data or the data could not be parsed.

Package

hunchentoot.

Source

request.lisp.

Function: parse-path (path)

Return a relative pathname that has been verified to not contain any directory traversals or explicit device or host fields. Returns NIL if the path is not acceptable.

Package

hunchentoot.

Source

request.lisp.

Function: parse-rfc2388-form-data (stream content-type-header external-format)

Creates an alist of POST parameters from the stream STREAM which is supposed to be of content type ’multipart/form-data’.

Package

hunchentoot.

Source

request.lisp.

Function: peek-char* ()

PEEK-CHAR with input stream bound to *STANDARD-INPUT* and returning NIL on EOF.

Package

url-rewrite.

Source

primitives.lisp.

Function: printable-ascii-char-p (char)
Package

hunchentoot.

Source

headers.lisp.

Function: quote-string (string)

Quotes string according to RFC 2616’s definition of ‘quoted-string’.

Package

hunchentoot.

Source

util.lisp.

Function: read-attribute (&key skip write-through)

Read characters from *STANDARD-INPUT* assuming that they constitue a SGML-style attribute/value pair. Returns three values - the name of the attribute, its value, and the whole string which was read. On EOF the string(s) read so far is/are returned. If SKIP is true NIL is returned. Writes all characters read to *STANDARD-OUTPUT* if WRITE-THROUGH is true.

Package

url-rewrite.

Source

util.lisp.

Function: read-delimited-string (&key skip write-through)

Reads and returns as its first value a string from *STANDARD-INPUT*. The string is either delimited by ’ or " in which case the delimiters aren’t part of the string but the second return value is the delimiter character or it is assumed to extend to the next character which is not a name constituent (see NAME-CHAR-P). On EOF the string read so far is returned. If SKIP is true NIL is returned. Writes all characters read to *STANDARD-OUTPUT* if WRITE-THROUGH is true.

Package

url-rewrite.

Source

util.lisp.

Function: read-initial-request-line (stream)

Reads and returns the initial HTTP request line, catching permitted errors and handling *BREAK-EVEN-WHILE-READING-REQUEST-TYPE-P*. If no request could be read, returns NIL. At this point, both an end-of-file as well as a timeout condition are normal; end-of-file will occur when the client has decided to not send another request but to close the connection instead, a timeout indicates that the connection timeout established by Hunchentoot has expired and we do not want to wait for another request any longer.

Package

hunchentoot.

Source

headers.lisp.

Function: read-name (&key skip write-through)

Read characters from *STANDARD-INPUT* as long as they are name constituents. Returns the string which was read unless SKIP is true. On EOF the string read so far is returned. Writes all characters read to *STANDARD-OUTPUT* if WRITE-THROUGH is true.

Package

url-rewrite.

Source

util.lisp.

Function: read-until (string &key skip write-through)

Reads characters from *STANDARD-INPUT* up to and including STRING. Returns the string which was read (excluding STRING) unless SKIP is true. Writes all characters read to *STANDARD-OUTPUT* if WRITE-THROUGH is true. On EOF the string read so far is returned.

Package

url-rewrite.

Source

primitives.lisp.

Function: read-while (predicate &key skip write-through)

Reads characters from *STANDARD-INPUT* while PREDICATE returns a true value for each character. Returns the string which was read unless SKIP is true. Writes all characters read to *STANDARD-OUTPUT* if WRITE-THROUGH is true. On EOF the string read so far is returned.

Package

url-rewrite.

Source

primitives.lisp.

Function: scanner-for-get-param (param-name)

Returns a CL-PPCRE scanner which matches a GET parameter in a URL. Scanners are memoized in SCANNER-HASH once they are created.

Package

hunchentoot.

Source

misc.lisp.

Function: send-bad-request-response (stream &optional additional-info)

Send a “Bad Request” response to the client.

Package

hunchentoot.

Source

headers.lisp.

Function: send-response (acceptor stream status-code &key headers cookies content)

Send a HTTP response to the STREAM and log the event in ACCEPTOR. STATUS-CODE is the HTTP status code used in the response. HEADERS and COOKIES are used to create the response header. If CONTENT is provided, it is sent as the response body.

If *HEADER-STREAM* is not NIL, the response headers are written to that stream when they are written to the client.

STREAM is returned.

Package

hunchentoot.

Source

headers.lisp.

Function: send-service-unavailable-reply (taskmaster socket)

A helper function to send out a quick error reply, before any state is set up via PROCESS-REQUEST.

Package

hunchentoot.

Source

taskmaster.lisp.

Function: send-unknown-protocol-response (stream &optional additional-info)

Send a “HTTP Version Not Supported” response to the client.

Package

hunchentoot.

Source

headers.lisp.

Function: set-timeouts (usocket read-timeout write-timeout)

Sets up timeouts on the given USOCKET object. READ-TIMEOUT is the read timeout period, WRITE-TIMEOUT is the write timeout, specified in (fractional) seconds. The timeouts can either be implemented using the low-level socket options SO_RCVTIMEO and SO_SNDTIMEO or some other, implementation specific mechanism. On platforms that do not support separate read and write timeouts, both must be equal or an error will be signaled. READ-TIMEOUT and WRITE-TIMEOUT may be NIL, which means that the corresponding socket timeout value will not be set.

Package

hunchentoot.

Source

set-timeouts.lisp.

Function: skip-comment ()

Skip SGML comment from *STANDARD-INPUT*, i.e. a string enclosed in ’–’ on both sides. Returns no values. Writes all characters read to *STANDARD-OUTPUT*. This function assumes (without checking) that the current position of *STANDARD-INPUT* is at the beginning of a comment, after the first hyphen - see COMMENT-START-P.

Package

url-rewrite.

Source

util.lisp.

Function: skip-whitespace (&key skip write-through)

Read characters from *STANDARD-INPUT* as long as they are whitespace. Returns the string which was read unless SKIP is true. On EOF the string read so far is returned. Writes all characters read to *STANDARD-OUTPUT* if WRITE-THROUGH is true.

Package

url-rewrite.

Source

util.lisp.

Function: start-output (return-code &optional content)

Sends all headers and maybe the content body to *HUNCHENTOOT-STREAM*. Returns immediately and does nothing if called more than once per request. Called by PROCESS-REQUEST and/or SEND-HEADERS. The RETURN-CODE argument represents the integer return code of the request. The corresponding reason phrase is determined by calling the REASON-PHRASE function. The CONTENT provided represents the body data to send to the client, if any. If it is not specified, no body is written to the client. The handler function is expected to directly write to the stream in this case.

Returns the stream that is connected to the client.

Package

hunchentoot.

Source

headers.lisp.

Function: starts-with-one-of-p (seq subseq-list &key test)

Tests whether the sequence SEQ starts with one of the sequences in SUBSEQ-LIST. Individual elements are compared with TEST.

Package

hunchentoot.

Source

util.lisp.

Function: starts-with-p (seq subseq &key test)

Tests whether the sequence SEQ starts with the sequence SUBSEQ. Individual elements are compared with TEST.

Package

hunchentoot.

Source

util.lisp.

Function: string-as-keyword (string)

Intern STRING as keyword using the reader so that case conversion is done with the reader defaults.

Package

hunchentoot.

Source

acceptor.lisp.

Function: stringify-session (session)

Creates a string representing the SESSION object SESSION. See ENCODE-SESSION-STRING.

Package

hunchentoot.

Source

session.lisp.

Function: wake-acceptor-for-shutdown (acceptor)

Creates a dummy connection to the acceptor, waking ACCEPT-CONNECTIONS while it is waiting. This is supposed to force a check of ACCEPTOR-SHUTDOWN-P.

Package

hunchentoot.

Source

acceptor.lisp.

Function: whitespacep (c)

Checks whether C is a whitespace character.

Package

url-rewrite.

Source

primitives.lisp.


6.2.6 Generic functions

Generic Reader: acceptor-listen-socket (object)
Generic Writer: (setf acceptor-listen-socket) (object)
Package

hunchentoot.

Methods
Reader Method: acceptor-listen-socket ((acceptor acceptor))
Writer Method: (setf acceptor-listen-socket) ((acceptor acceptor))

The socket listening for incoming connections.

Source

acceptor.lisp.

Target Slot

listen-socket.

Generic Reader: acceptor-process (object)
Generic Writer: (setf acceptor-process) (object)
Package

hunchentoot.

Methods
Reader Method: acceptor-process ((multi-threaded-taskmaster multi-threaded-taskmaster))
Writer Method: (setf acceptor-process) ((multi-threaded-taskmaster multi-threaded-taskmaster))

A process that accepts incoming connections and hands them off to new processes for request handling.

Source

taskmaster.lisp.

Target Slot

acceptor-process.

Generic Function: acceptor-server-name (acceptor)

Returns a string which can be used for ’Server’ headers.

Package

hunchentoot.

Source

acceptor.lisp.

Methods
Method: acceptor-server-name ((acceptor acceptor))
Generic Reader: acceptor-shutdown-lock (object)
Generic Writer: (setf acceptor-shutdown-lock) (object)
Package

hunchentoot.

Methods
Reader Method: acceptor-shutdown-lock ((acceptor acceptor))
Writer Method: (setf acceptor-shutdown-lock) ((acceptor acceptor))

The lock protecting the shutdown-queue
condition variable and the requests-in-progress counter.

Source

acceptor.lisp.

Target Slot

shutdown-lock.

Generic Reader: acceptor-shutdown-p (object)
Generic Writer: (setf acceptor-shutdown-p) (object)
Package

hunchentoot.

Methods
Reader Method: acceptor-shutdown-p ((acceptor acceptor))
Writer Method: (setf acceptor-shutdown-p) ((acceptor acceptor))

A flag that makes the acceptor
shutdown itself when set to something other than NIL.

Source

acceptor.lisp.

Target Slot

acceptor-shutdown-p.

Generic Reader: acceptor-shutdown-queue (object)
Generic Writer: (setf acceptor-shutdown-queue) (object)
Package

hunchentoot.

Methods
Reader Method: acceptor-shutdown-queue ((acceptor acceptor))
Writer Method: (setf acceptor-shutdown-queue) ((acceptor acceptor))

A condition variable
used with soft shutdown, signaled when all requests have been processed.

Source

acceptor.lisp.

Target Slot

shutdown-queue.

Generic Reader: acceptor-taskmaster (object)
Package

hunchentoot.

Methods
Reader Method: acceptor-taskmaster ((acceptor acceptor))

The taskmaster (i.e. an instance of a
subclass of TASKMASTER) that is responsible for scheduling the work for this acceptor. The default depends on the MP capabilities of the underlying Lisp.

Source

acceptor.lisp.

Target Slot

taskmaster.

Generic Function: assoc* (thing alist)

Similar to CL:ASSOC, but ’does the right thing’ if THING is a string or a symbol.

Package

hunchentoot.

Source

util.lisp.

Methods
Method: assoc* ((thing symbol) alist)
Method: assoc* ((thing string) alist)
Method: assoc* (thing alist)
Generic Reader: aux-data (object)
Generic Writer: (setf aux-data) (object)
Package

hunchentoot.

Methods
Reader Method: aux-data ((request request))
Writer Method: (setf aux-data) ((request request))

Used to keep a user-modifiable alist with arbitrary data during the request.

Source

request.lisp.

Target Slot

aux-data.

Generic Reader: content-stream (object)
Package

hunchentoot.

Methods
Reader Method: content-stream ((request request))

A stream from which the request body can be read if there is one.

Source

request.lisp.

Target Slot

content-stream.

Generic Function: decrement-taskmaster-accept-count (taskmaster)
Package

hunchentoot.

Methods
Method: decrement-taskmaster-accept-count ((taskmaster one-thread-per-connection-taskmaster))
Source

taskmaster.lisp.

Generic Function: handle-incoming-connection% (taskmaster socket)
Package

hunchentoot.

Methods
Method: handle-incoming-connection% ((taskmaster one-thread-per-connection-taskmaster) socket)
Source

taskmaster.lisp.

Generic Reader: hunchentoot-operation-not-implemented-operation (condition)
Package

hunchentoot.

Methods
Reader Method: hunchentoot-operation-not-implemented-operation ((condition operation-not-implemented))
Source

conditions.lisp.

Target Slot

operation.

Generic Function: increment-taskmaster-accept-count (taskmaster)
Package

hunchentoot.

Methods
Method: increment-taskmaster-accept-count ((taskmaster one-thread-per-connection-taskmaster))
Source

taskmaster.lisp.

Generic Function: note-free-connection (taskmaster)
Package

hunchentoot.

Methods
Method: note-free-connection ((taskmaster one-thread-per-connection-taskmaster))

Note that a connection has been freed up

Source

taskmaster.lisp.

Generic Reader: session-data (object)
Package

hunchentoot.

Methods
Reader Method: session-data ((session session))

Data associated with this session - see SESSION-VALUE.

Source

session.lisp.

Target Slot

session-data.

Generic Reader: session-last-click (object)
Package

hunchentoot.

Methods
Reader Method: session-last-click ((session session))

The last time this session was used.

Source

session.lisp.

Target Slot

last-click.

Generic Reader: session-string (object)
Package

hunchentoot.

Methods
Reader Method: session-string ((session session))

The session string encodes enough
data to safely retrieve this session. It is sent to the browser as a cookie value or as a GET parameter.

Source

session.lisp.

Target Slot

session-string.

Generic Function: stringify-cookie (cookie)
Package

hunchentoot.

Methods
Method: stringify-cookie ((cookie cookie))

Converts the COOKIE object COOKIE to a string suitable for a ’Set-Cookie’ header to be sent to the client.

Source

cookie.lisp.

Generic Reader: taskmaster-accept-count (object)
Generic Writer: (setf taskmaster-accept-count) (object)
Package

hunchentoot.

Methods
Reader Method: taskmaster-accept-count ((one-thread-per-connection-taskmaster one-thread-per-connection-taskmaster))
Writer Method: (setf taskmaster-accept-count) ((one-thread-per-connection-taskmaster one-thread-per-connection-taskmaster))

The number of connection currently accepted by the taskmaster. These connections are not ensured to be processed, thay may be waiting for an empty processing slot or rejected because the load is too heavy.

Source

taskmaster.lisp.

Target Slot

accept-count.

Generic Reader: taskmaster-accept-count-lock (object)
Package

hunchentoot.

Methods
Reader Method: taskmaster-accept-count-lock ((one-thread-per-connection-taskmaster one-thread-per-connection-taskmaster))

In the absence of ’atomic-incf’, we need this to atomically increment and decrement the accept count.

Source

taskmaster.lisp.

Target Slot

accept-count-lock.

Generic Reader: taskmaster-thread-count-lock (object)
Package

hunchentoot.

Methods
Reader Method: taskmaster-thread-count-lock ((one-thread-per-connection-taskmaster one-thread-per-connection-taskmaster))

In the absence of ’atomic-incf’, we need this to atomically increment and decrement the request count.

Source

taskmaster.lisp.

Target Slot

thread-count-lock.

Generic Reader: taskmaster-wait-lock (object)
Package

hunchentoot.

Methods
Reader Method: taskmaster-wait-lock ((one-thread-per-connection-taskmaster one-thread-per-connection-taskmaster))

The lock for the connection wait queue.

Source

taskmaster.lisp.

Target Slot

wait-lock.

Generic Reader: taskmaster-wait-queue (object)
Package

hunchentoot.

Methods
Reader Method: taskmaster-wait-queue ((one-thread-per-connection-taskmaster one-thread-per-connection-taskmaster))

A queue that we use to wait for a free connection.

Source

taskmaster.lisp.

Target Slot

wait-queue.

Generic Reader: taskmaster-worker-thread-name-format (object)
Package

hunchentoot.

Methods
Reader Method: taskmaster-worker-thread-name-format ((one-thread-per-connection-taskmaster one-thread-per-connection-taskmaster))

automatically generated reader method

Source

taskmaster.lisp.

Target Slot

worker-thread-name-format.

Generic Writer: (setf taskmaster-worker-thread-name-format) (object)
Package

hunchentoot.

Methods
Writer Method: (setf taskmaster-worker-thread-name-format) ((one-thread-per-connection-taskmaster one-thread-per-connection-taskmaster))

automatically generated writer method

Source

taskmaster.lisp.

Target Slot

worker-thread-name-format.

Generic Function: wait-for-free-connection (taskmaster)
Package

hunchentoot.

Methods
Method: wait-for-free-connection ((taskmaster one-thread-per-connection-taskmaster))

Wait for a connection to be freed up

Source

taskmaster.lisp.

Generic Function: write-header-line (key value stream)

Accepts a string KEY and a Lisp object VALUE and writes them directly to the client as an HTTP header line.

Package

hunchentoot.

Source

headers.lisp.

Methods
Method: write-header-line (key (string string) stream)
Method: write-header-line (key (number number) stream)
Method: write-header-line (key value stream)

6.2.7 Conditions

Condition: hunchentoot-simple-error

Like HUNCHENTOOT-ERROR but with formatting capabilities.

Package

hunchentoot.

Source

conditions.lisp.

Direct superclasses
Direct subclasses

parameter-error.

Condition: hunchentoot-simple-warning

Like HUNCHENTOOT-WARNING but with formatting capabilities.

Package

hunchentoot.

Source

conditions.lisp.

Direct superclasses
Condition: operation-not-implemented

This warning is signalled when an operation (like SETUID for example) is not implemented for a specific Lisp.

Package

hunchentoot.

Source

conditions.lisp.

Direct superclasses

hunchentoot-error.

Direct methods

hunchentoot-operation-not-implemented-operation.

Direct slots
Slot: operation

The name of the unimplemented operation.

Initargs

:operation

Readers

hunchentoot-operation-not-implemented-operation.

Writers

This slot is read-only.


6.2.8 Classes

Each COOKIE objects describes one outgoing cookie.

Package

hunchentoot.

Source

cookie.lisp.

Direct methods
Direct slots
Slot: name

The name of the cookie - a string.

Type

string

Initargs

:name

Readers

cookie-name.

Writers

This slot is read-only.

Slot: value

The value of the cookie. Will be URL-encoded when sent to the browser.

Initform

""

Initargs

:value

Readers

cookie-value.

Writers

(setf cookie-value).

Slot: expires

The time (a universal time) when the cookie expires (or NIL).

Initargs

:expires

Readers

cookie-expires.

Writers

(setf cookie-expires).

Slot: max-age

The time delta (in seconds) after which the cookie expires (or NIL).

Initargs

:max-age

Readers

cookie-max-age.

Writers

(setf cookie-max-age).

Slot: path

The path this cookie is valid for (or NIL).

Initargs

:path

Readers

cookie-path.

Writers

(setf cookie-path).

Slot: domain

The domain this cookie is valid for (or NIL).

Initargs

:domain

Readers

cookie-domain.

Writers

(setf cookie-domain).

Slot: secure

A generalized boolean denoting whether this cookie is a secure cookie.

Initargs

:secure

Readers

cookie-secure.

Writers

(setf cookie-secure).

Slot: http-only

A generalized boolean denoting whether
this cookie is a ‘HttpOnly’ cookie.

This is a Microsoft extension that has been implemented in Firefox as well. See <http://msdn2.microsoft.com/en-us/library/ms533046.aspx>.

Initargs

:http-only

Readers

cookie-http-only.

Writers

(setf cookie-http-only).


Appendix A Indexes


A.1 Concepts


A.2 Functions

Jump to:   (  
A   C   D   E   F   G   H   I   K   L   M   N   P   Q   R   S   T   U   W  
Index Entry  Section

(
(setf acceptor-access-log-destination): Public generic functions
(setf acceptor-access-log-destination): Public generic functions
(setf acceptor-document-root): Public generic functions
(setf acceptor-document-root): Public generic functions
(setf acceptor-error-template-directory): Public generic functions
(setf acceptor-error-template-directory): Public generic functions
(setf acceptor-input-chunking-p): Public generic functions
(setf acceptor-input-chunking-p): Public generic functions
(setf acceptor-listen-socket): Private generic functions
(setf acceptor-listen-socket): Private generic functions
(setf acceptor-message-log-destination): Public generic functions
(setf acceptor-message-log-destination): Public generic functions
(setf acceptor-name): Public generic functions
(setf acceptor-name): Public generic functions
(setf acceptor-output-chunking-p): Public generic functions
(setf acceptor-output-chunking-p): Public generic functions
(setf acceptor-persistent-connections-p): Public generic functions
(setf acceptor-persistent-connections-p): Public generic functions
(setf acceptor-process): Private generic functions
(setf acceptor-process): Private generic functions
(setf acceptor-reply-class): Public generic functions
(setf acceptor-reply-class): Public generic functions
(setf acceptor-request-class): Public generic functions
(setf acceptor-request-class): Public generic functions
(setf acceptor-requests-in-progress): Public generic functions
(setf acceptor-requests-in-progress): Public generic functions
(setf acceptor-shutdown-lock): Private generic functions
(setf acceptor-shutdown-lock): Private generic functions
(setf acceptor-shutdown-p): Private generic functions
(setf acceptor-shutdown-p): Private generic functions
(setf acceptor-shutdown-queue): Private generic functions
(setf acceptor-shutdown-queue): Private generic functions
(setf aux-data): Private generic functions
(setf aux-data): Private generic functions
(setf aux-request-value): Public setf expanders
(setf content-length*): Public ordinary functions
(setf content-type*): Public ordinary functions
(setf cookie-domain): Public generic functions
(setf cookie-domain): Public generic functions
(setf cookie-expires): Public generic functions
(setf cookie-expires): Public generic functions
(setf cookie-http-only): Public generic functions
(setf cookie-http-only): Public generic functions
(setf cookie-max-age): Public generic functions
(setf cookie-max-age): Public generic functions
(setf cookie-path): Public generic functions
(setf cookie-path): Public generic functions
(setf cookie-secure): Public generic functions
(setf cookie-secure): Public generic functions
(setf cookie-value): Public generic functions
(setf cookie-value): Public generic functions
(setf cookies-out): Public generic functions
(setf cookies-out): Public generic functions
(setf cookies-out*): Public ordinary functions
(setf header-out): Public generic functions
(setf header-out): Public generic functions
(setf header-out): Public generic functions
(setf header-out): Public generic functions
(setf header-out): Public generic functions
(setf reply-external-format): Public generic functions
(setf reply-external-format): Public generic functions
(setf reply-external-format*): Public ordinary functions
(setf return-code): Public generic functions
(setf return-code): Public generic functions
(setf return-code*): Public ordinary functions
(setf session): Public generic functions
(setf session): Public generic functions
(setf session-db): Public generic functions
(setf session-db): Public generic functions
(setf session-max-time): Public generic functions
(setf session-max-time): Public generic functions
(setf session-value): Public setf expanders
(setf taskmaster-accept-count): Private generic functions
(setf taskmaster-accept-count): Private generic functions
(setf taskmaster-acceptor): Public generic functions
(setf taskmaster-acceptor): Public generic functions
(setf taskmaster-max-accept-count): Public generic functions
(setf taskmaster-max-accept-count): Public generic functions
(setf taskmaster-max-thread-count): Public generic functions
(setf taskmaster-max-thread-count): Public generic functions
(setf taskmaster-thread-count): Public generic functions
(setf taskmaster-thread-count): Public generic functions
(setf taskmaster-worker-thread-name-format): Private generic functions
(setf taskmaster-worker-thread-name-format): Private generic functions

A
abort-request-handler: Public ordinary functions
accept-connections: Public generic functions
accept-connections: Public generic functions
acceptor-access-log-destination: Public generic functions
acceptor-access-log-destination: Public generic functions
acceptor-address: Public generic functions
acceptor-address: Public generic functions
acceptor-dispatch-request: Public generic functions
acceptor-dispatch-request: Public generic functions
acceptor-dispatch-request: Public generic functions
acceptor-document-root: Public generic functions
acceptor-document-root: Public generic functions
acceptor-error-template-directory: Public generic functions
acceptor-error-template-directory: Public generic functions
acceptor-input-chunking-p: Public generic functions
acceptor-input-chunking-p: Public generic functions
acceptor-listen-backlog: Public generic functions
acceptor-listen-backlog: Public generic functions
acceptor-listen-socket: Private generic functions
acceptor-listen-socket: Private generic functions
acceptor-log-access: Public generic functions
acceptor-log-access: Public generic functions
acceptor-log-message: Public generic functions
acceptor-log-message: Public generic functions
acceptor-make-request: Private ordinary functions
acceptor-message-log-destination: Public generic functions
acceptor-message-log-destination: Public generic functions
acceptor-name: Public generic functions
acceptor-name: Public generic functions
acceptor-output-chunking-p: Public generic functions
acceptor-output-chunking-p: Public generic functions
acceptor-persistent-connections-p: Public generic functions
acceptor-persistent-connections-p: Public generic functions
acceptor-port: Public generic functions
acceptor-port: Public generic functions
acceptor-process: Private generic functions
acceptor-process: Private generic functions
acceptor-read-timeout: Public generic functions
acceptor-read-timeout: Public generic functions
acceptor-remove-session: Public generic functions
acceptor-remove-session: Public generic functions
acceptor-reply-class: Public generic functions
acceptor-reply-class: Public generic functions
acceptor-request-class: Public generic functions
acceptor-request-class: Public generic functions
acceptor-requests-in-progress: Public generic functions
acceptor-requests-in-progress: Public generic functions
acceptor-server-name: Private generic functions
acceptor-server-name: Private generic functions
acceptor-shutdown-lock: Private generic functions
acceptor-shutdown-lock: Private generic functions
acceptor-shutdown-p: Private generic functions
acceptor-shutdown-p: Private generic functions
acceptor-shutdown-queue: Private generic functions
acceptor-shutdown-queue: Private generic functions
acceptor-ssl-certificate-file: Public generic functions
acceptor-ssl-certificate-file: Public generic functions
acceptor-ssl-p: Public generic functions
acceptor-ssl-p: Public generic functions
acceptor-ssl-p: Public generic functions
acceptor-ssl-privatekey-file: Public generic functions
acceptor-ssl-privatekey-file: Public generic functions
acceptor-ssl-privatekey-password: Public generic functions
acceptor-ssl-privatekey-password: Public generic functions
acceptor-status-message: Public generic functions
acceptor-status-message: Public generic functions
acceptor-status-message: Public generic functions
acceptor-status-message: Public generic functions
acceptor-taskmaster: Private generic functions
acceptor-taskmaster: Private generic functions
acceptor-write-timeout: Public generic functions
acceptor-write-timeout: Public generic functions
add-cookie-value-to-url: Private ordinary functions
add-get-param-to-url: Public ordinary functions
address-string: Private ordinary functions
assoc*: Private generic functions
assoc*: Private generic functions
assoc*: Private generic functions
assoc*: Private generic functions
authorization: Public ordinary functions
aux-data: Private generic functions
aux-data: Private generic functions
aux-request-value: Public ordinary functions

C
client-as-string: Public ordinary functions
comment-start-p: Private ordinary functions
compute-array-parameter: Private ordinary functions
compute-hash-table-parameter: Private ordinary functions
compute-list-parameter: Private ordinary functions
compute-parameter: Private ordinary functions
compute-real-name: Private ordinary functions
compute-simple-parameter: Private ordinary functions
condition-variable-signal: Private ordinary functions
condition-variable-wait: Private ordinary functions
content-length: Public generic functions
content-length: Public generic functions
content-length*: Public ordinary functions
content-stream: Private generic functions
content-stream: Private generic functions
content-type: Public generic functions
content-type: Public generic functions
content-type*: Public ordinary functions
convert-hack: Private ordinary functions
convert-parameter: Private ordinary functions
cookie-date: Private ordinary functions
cookie-domain: Public generic functions
cookie-domain: Public generic functions
cookie-expires: Public generic functions
cookie-expires: Public generic functions
cookie-http-only: Public generic functions
cookie-http-only: Public generic functions
cookie-in: Public ordinary functions
cookie-max-age: Public generic functions
cookie-max-age: Public generic functions
cookie-name: Public generic functions
cookie-name: Public generic functions
cookie-out: Public ordinary functions
cookie-path: Public generic functions
cookie-path: Public generic functions
cookie-secure: Public generic functions
cookie-secure: Public generic functions
cookie-value: Public generic functions
cookie-value: Public generic functions
cookies-in: Public generic functions
cookies-in: Public generic functions
cookies-in*: Public ordinary functions
cookies-out: Public generic functions
cookies-out: Public generic functions
cookies-out*: Public ordinary functions
cookies-to-alist: Private ordinary functions
create-folder-dispatcher-and-handler: Public ordinary functions
create-prefix-dispatcher: Public ordinary functions
create-random-string: Private ordinary functions
create-regex-dispatcher: Public ordinary functions
create-request-handler-thread: Public generic functions
create-request-handler-thread: Public generic functions
create-static-file-dispatcher-and-handler: Public ordinary functions

D
decrement-taskmaster-accept-count: Private generic functions
decrement-taskmaster-accept-count: Private generic functions
decrement-taskmaster-thread-count: Public generic functions
decrement-taskmaster-thread-count: Public generic functions
decrement-taskmaster-thread-count: Public generic functions
def-http-return-code: Private macros
default-document-directory: Public ordinary functions
defconstant: Private macros
define-easy-handler: Public macros
defvar-unbound: Private macros
delete-aux-request-value: Public ordinary functions
delete-session-value: Public ordinary functions
detach-socket: Public generic functions
detach-socket: Public generic functions
dispatch-easy-handlers: Public ordinary functions
do-with-acceptor-request-count-incremented: Private ordinary functions

E
encode-session-string: Private ordinary functions
ensure-parse-integer: Private ordinary functions
escape-for-html: Public ordinary functions
execute-acceptor: Public generic functions
execute-acceptor: Public generic functions
execute-acceptor: Public generic functions
external-format-from-content-type: Private ordinary functions

F
form-url-encoded-list-to-alist: Private ordinary functions
Function, (setf content-length*): Public ordinary functions
Function, (setf content-type*): Public ordinary functions
Function, (setf cookies-out*): Public ordinary functions
Function, (setf reply-external-format*): Public ordinary functions
Function, (setf return-code*): Public ordinary functions
Function, abort-request-handler: Public ordinary functions
Function, acceptor-make-request: Private ordinary functions
Function, add-cookie-value-to-url: Private ordinary functions
Function, add-get-param-to-url: Public ordinary functions
Function, address-string: Private ordinary functions
Function, authorization: Public ordinary functions
Function, aux-request-value: Public ordinary functions
Function, client-as-string: Public ordinary functions
Function, comment-start-p: Private ordinary functions
Function, compute-array-parameter: Private ordinary functions
Function, compute-hash-table-parameter: Private ordinary functions
Function, compute-list-parameter: Private ordinary functions
Function, compute-parameter: Private ordinary functions
Function, compute-real-name: Private ordinary functions
Function, compute-simple-parameter: Private ordinary functions
Function, condition-variable-signal: Private ordinary functions
Function, condition-variable-wait: Private ordinary functions
Function, content-length*: Public ordinary functions
Function, content-type*: Public ordinary functions
Function, convert-hack: Private ordinary functions
Function, convert-parameter: Private ordinary functions
Function, cookie-date: Private ordinary functions
Function, cookie-in: Public ordinary functions
Function, cookie-out: Public ordinary functions
Function, cookies-in*: Public ordinary functions
Function, cookies-out*: Public ordinary functions
Function, cookies-to-alist: Private ordinary functions
Function, create-folder-dispatcher-and-handler: Public ordinary functions
Function, create-prefix-dispatcher: Public ordinary functions
Function, create-random-string: Private ordinary functions
Function, create-regex-dispatcher: Public ordinary functions
Function, create-static-file-dispatcher-and-handler: Public ordinary functions
Function, default-document-directory: Public ordinary functions
Function, delete-aux-request-value: Public ordinary functions
Function, delete-session-value: Public ordinary functions
Function, dispatch-easy-handlers: Public ordinary functions
Function, do-with-acceptor-request-count-incremented: Private ordinary functions
Function, encode-session-string: Private ordinary functions
Function, ensure-parse-integer: Private ordinary functions
Function, escape-for-html: Public ordinary functions
Function, external-format-from-content-type: Private ordinary functions
Function, form-url-encoded-list-to-alist: Private ordinary functions
Function, get-backtrace: Private ordinary functions
Function, get-local-address-and-port: Private ordinary functions
Function, get-parameter: Public ordinary functions
Function, get-parameters*: Public ordinary functions
Function, get-peer-address-and-port: Private ordinary functions
Function, get-peer-ssl-certificate: Public ordinary functions
Function, get-post-data: Private ordinary functions
Function, get-request-data: Private ordinary functions
Function, get-stored-session: Private ordinary functions
Function, handle-if-modified-since: Public ordinary functions
Function, handle-static-file: Public ordinary functions
Function, header-in*: Public ordinary functions
Function, header-out: Public ordinary functions
Function, header-out-set-p: Private ordinary functions
Function, headers-in*: Public ordinary functions
Function, headers-out*: Public ordinary functions
Function, host: Public ordinary functions
Function, http-token-p: Public ordinary functions
Function, hunchentoot-error: Public ordinary functions
Function, hunchentoot-warn: Private ordinary functions
Function, hyperdoc-lookup: Private ordinary functions
Function, hyperdoc-lookup: Private ordinary functions
Function, input-chunking-p: Private ordinary functions
Function, iso-time: Private ordinary functions
Function, keep-alive-p: Private ordinary functions
Function, letterp: Private ordinary functions
Function, local-addr*: Public ordinary functions
Function, local-port*: Public ordinary functions
Function, log-message*: Public ordinary functions
Function, make-condition-variable: Private ordinary functions
Function, make-cooked-message: Private ordinary functions
Function, make-defun-parameter: Private ordinary functions
Function, make-lock: Private ordinary functions
Function, make-socket-stream: Private ordinary functions
Function, make-tmp-file-name: Private ordinary functions
Function, maybe-add-charset-to-content-type-header: Private ordinary functions
Function, maybe-handle-range-header: Private ordinary functions
Function, maybe-read-post-parameters: Private ordinary functions
Function, maybe-rewrite-urls-for-session: Private ordinary functions
Function, md5-hex: Private ordinary functions
Function, mime-type: Public ordinary functions
Function, name-char-p: Private ordinary functions
Function, no-cache: Public ordinary functions
Function, not-implemented: Private ordinary functions
Function, parameter: Public ordinary functions
Function, parameter-error: Public ordinary functions
Function, parse-content-type: Private ordinary functions
Function, parse-multipart-form-data: Private ordinary functions
Function, parse-path: Private ordinary functions
Function, parse-rfc2388-form-data: Private ordinary functions
Function, peek-char*: Private ordinary functions
Function, post-parameter: Public ordinary functions
Function, post-parameters*: Public ordinary functions
Function, printable-ascii-char-p: Private ordinary functions
Function, query-string*: Public ordinary functions
Function, quote-string: Private ordinary functions
Function, raw-post-data: Public ordinary functions
Function, read-attribute: Private ordinary functions
Function, read-delimited-string: Private ordinary functions
Function, read-initial-request-line: Private ordinary functions
Function, read-name: Private ordinary functions
Function, read-until: Private ordinary functions
Function, read-while: Private ordinary functions
Function, real-remote-addr: Public ordinary functions
Function, reason-phrase: Public ordinary functions
Function, recompute-request-parameters: Public ordinary functions
Function, redirect: Public ordinary functions
Function, referer: Public ordinary functions
Function, regenerate-session-cookie-value: Public ordinary functions
Function, remote-addr*: Public ordinary functions
Function, remote-port*: Public ordinary functions
Function, remove-session: Public ordinary functions
Function, reply-external-format*: Public ordinary functions
Function, request-method*: Public ordinary functions
Function, request-pathname: Public ordinary functions
Function, request-uri*: Public ordinary functions
Function, require-authorization: Public ordinary functions
Function, reset-session-secret: Public ordinary functions
Function, reset-sessions: Public ordinary functions
Function, return-code*: Public ordinary functions
Function, rewrite-urls: Public ordinary functions
Function, rfc-1123-date: Public ordinary functions
Function, scanner-for-get-param: Private ordinary functions
Function, script-name*: Public ordinary functions
Function, send-bad-request-response: Private ordinary functions
Function, send-headers: Public ordinary functions
Function, send-response: Private ordinary functions
Function, send-service-unavailable-reply: Private ordinary functions
Function, send-unknown-protocol-response: Private ordinary functions
Function, server-protocol*: Public ordinary functions
Function, session-gc: Public ordinary functions
Function, session-too-old-p: Public ordinary functions
Function, session-value: Public ordinary functions
Function, set-cookie: Public ordinary functions
Function, set-cookie*: Public ordinary functions
Function, set-timeouts: Private ordinary functions
Function, skip-comment: Private ordinary functions
Function, skip-whitespace: Private ordinary functions
Function, ssl-p: Public ordinary functions
Function, start-output: Private ordinary functions
Function, start-session: Public ordinary functions
Function, starts-with-one-of-p: Private ordinary functions
Function, starts-with-p: Private ordinary functions
Function, starts-with-scheme-p: Public ordinary functions
Function, string-as-keyword: Private ordinary functions
Function, stringify-session: Private ordinary functions
Function, url-decode: Public ordinary functions
Function, url-encode: Public ordinary functions
Function, url-encode: Public ordinary functions
Function, user-agent: Public ordinary functions
Function, wake-acceptor-for-shutdown: Private ordinary functions
Function, whitespacep: Private ordinary functions
Function, within-request-p: Public ordinary functions

G
Generic Function, (setf acceptor-access-log-destination): Public generic functions
Generic Function, (setf acceptor-document-root): Public generic functions
Generic Function, (setf acceptor-error-template-directory): Public generic functions
Generic Function, (setf acceptor-input-chunking-p): Public generic functions
Generic Function, (setf acceptor-listen-socket): Private generic functions
Generic Function, (setf acceptor-message-log-destination): Public generic functions
Generic Function, (setf acceptor-name): Public generic functions
Generic Function, (setf acceptor-output-chunking-p): Public generic functions
Generic Function, (setf acceptor-persistent-connections-p): Public generic functions
Generic Function, (setf acceptor-process): Private generic functions
Generic Function, (setf acceptor-reply-class): Public generic functions
Generic Function, (setf acceptor-request-class): Public generic functions
Generic Function, (setf acceptor-requests-in-progress): Public generic functions
Generic Function, (setf acceptor-shutdown-lock): Private generic functions
Generic Function, (setf acceptor-shutdown-p): Private generic functions
Generic Function, (setf acceptor-shutdown-queue): Private generic functions
Generic Function, (setf aux-data): Private generic functions
Generic Function, (setf cookie-domain): Public generic functions
Generic Function, (setf cookie-expires): Public generic functions
Generic Function, (setf cookie-http-only): Public generic functions
Generic Function, (setf cookie-max-age): Public generic functions
Generic Function, (setf cookie-path): Public generic functions
Generic Function, (setf cookie-secure): Public generic functions
Generic Function, (setf cookie-value): Public generic functions
Generic Function, (setf cookies-out): Public generic functions
Generic Function, (setf header-out): Public generic functions
Generic Function, (setf reply-external-format): Public generic functions
Generic Function, (setf return-code): Public generic functions
Generic Function, (setf session): Public generic functions
Generic Function, (setf session-db): Public generic functions
Generic Function, (setf session-max-time): Public generic functions
Generic Function, (setf taskmaster-accept-count): Private generic functions
Generic Function, (setf taskmaster-acceptor): Public generic functions
Generic Function, (setf taskmaster-max-accept-count): Public generic functions
Generic Function, (setf taskmaster-max-thread-count): Public generic functions
Generic Function, (setf taskmaster-thread-count): Public generic functions
Generic Function, (setf taskmaster-worker-thread-name-format): Private generic functions
Generic Function, accept-connections: Public generic functions
Generic Function, acceptor-access-log-destination: Public generic functions
Generic Function, acceptor-address: Public generic functions
Generic Function, acceptor-dispatch-request: Public generic functions
Generic Function, acceptor-document-root: Public generic functions
Generic Function, acceptor-error-template-directory: Public generic functions
Generic Function, acceptor-input-chunking-p: Public generic functions
Generic Function, acceptor-listen-backlog: Public generic functions
Generic Function, acceptor-listen-socket: Private generic functions
Generic Function, acceptor-log-access: Public generic functions
Generic Function, acceptor-log-message: Public generic functions
Generic Function, acceptor-message-log-destination: Public generic functions
Generic Function, acceptor-name: Public generic functions
Generic Function, acceptor-output-chunking-p: Public generic functions
Generic Function, acceptor-persistent-connections-p: Public generic functions
Generic Function, acceptor-port: Public generic functions
Generic Function, acceptor-process: Private generic functions
Generic Function, acceptor-read-timeout: Public generic functions
Generic Function, acceptor-remove-session: Public generic functions
Generic Function, acceptor-reply-class: Public generic functions
Generic Function, acceptor-request-class: Public generic functions
Generic Function, acceptor-requests-in-progress: Public generic functions
Generic Function, acceptor-server-name: Private generic functions
Generic Function, acceptor-shutdown-lock: Private generic functions
Generic Function, acceptor-shutdown-p: Private generic functions
Generic Function, acceptor-shutdown-queue: Private generic functions
Generic Function, acceptor-ssl-certificate-file: Public generic functions
Generic Function, acceptor-ssl-p: Public generic functions
Generic Function, acceptor-ssl-privatekey-file: Public generic functions
Generic Function, acceptor-ssl-privatekey-password: Public generic functions
Generic Function, acceptor-status-message: Public generic functions
Generic Function, acceptor-taskmaster: Private generic functions
Generic Function, acceptor-write-timeout: Public generic functions
Generic Function, assoc*: Private generic functions
Generic Function, aux-data: Private generic functions
Generic Function, content-length: Public generic functions
Generic Function, content-stream: Private generic functions
Generic Function, content-type: Public generic functions
Generic Function, cookie-domain: Public generic functions
Generic Function, cookie-expires: Public generic functions
Generic Function, cookie-http-only: Public generic functions
Generic Function, cookie-max-age: Public generic functions
Generic Function, cookie-name: Public generic functions
Generic Function, cookie-path: Public generic functions
Generic Function, cookie-secure: Public generic functions
Generic Function, cookie-value: Public generic functions
Generic Function, cookies-in: Public generic functions
Generic Function, cookies-out: Public generic functions
Generic Function, create-request-handler-thread: Public generic functions
Generic Function, decrement-taskmaster-accept-count: Private generic functions
Generic Function, decrement-taskmaster-thread-count: Public generic functions
Generic Function, detach-socket: Public generic functions
Generic Function, execute-acceptor: Public generic functions
Generic Function, get-parameters: Public generic functions
Generic Function, handle-incoming-connection: Public generic functions
Generic Function, handle-incoming-connection%: Private generic functions
Generic Function, handle-request: Public generic functions
Generic Function, header-in: Public generic functions
Generic Function, headers-in: Public generic functions
Generic Function, headers-out: Public generic functions
Generic Function, hunchentoot-operation-not-implemented-operation: Private generic functions
Generic Function, increment-taskmaster-accept-count: Private generic functions
Generic Function, increment-taskmaster-thread-count: Public generic functions
Generic Function, initialize-connection-stream: Public generic functions
Generic Function, local-addr: Public generic functions
Generic Function, local-port: Public generic functions
Generic Function, maybe-invoke-debugger: Public generic functions
Generic Function, next-session-id: Public generic functions
Generic Function, note-free-connection: Private generic functions
Generic Function, post-parameters: Public generic functions
Generic Function, process-connection: Public generic functions
Generic Function, process-request: Public generic functions
Generic Function, query-string: Public generic functions
Generic Function, remote-addr: Public generic functions
Generic Function, remote-port: Public generic functions
Generic Function, reply-external-format: Public generic functions
Generic Function, request-acceptor: Public generic functions
Generic Function, request-method: Public generic functions
Generic Function, request-uri: Public generic functions
Generic Function, reset-connection-stream: Public generic functions
Generic Function, return-code: Public generic functions
Generic Function, script-name: Public generic functions
Generic Function, server-protocol: Public generic functions
Generic Function, session: Public generic functions
Generic Function, session-cookie-name: Public generic functions
Generic Function, session-cookie-value: Public generic functions
Generic Function, session-created: Public generic functions
Generic Function, session-data: Private generic functions
Generic Function, session-db: Public generic functions
Generic Function, session-db-lock: Public generic functions
Generic Function, session-id: Public generic functions
Generic Function, session-last-click: Private generic functions
Generic Function, session-max-time: Public generic functions
Generic Function, session-remote-addr: Public generic functions
Generic Function, session-start: Public generic functions
Generic Function, session-string: Private generic functions
Generic Function, session-user-agent: Public generic functions
Generic Function, session-verify: Public generic functions
Generic Function, shutdown: Public generic functions
Generic Function, start: Public generic functions
Generic Function, start-listening: Public generic functions
Generic Function, start-thread: Public generic functions
Generic Function, started-p: Public generic functions
Generic Function, stop: Public generic functions
Generic Function, stringify-cookie: Private generic functions
Generic Function, taskmaster-accept-count: Private generic functions
Generic Function, taskmaster-accept-count-lock: Private generic functions
Generic Function, taskmaster-acceptor: Public generic functions
Generic Function, taskmaster-max-accept-count: Public generic functions
Generic Function, taskmaster-max-thread-count: Public generic functions
Generic Function, taskmaster-thread-count: Public generic functions
Generic Function, taskmaster-thread-count-lock: Private generic functions
Generic Function, taskmaster-wait-lock: Private generic functions
Generic Function, taskmaster-wait-queue: Private generic functions
Generic Function, taskmaster-worker-thread-name-format: Private generic functions
Generic Function, too-many-taskmaster-requests: Public generic functions
Generic Function, wait-for-free-connection: Private generic functions
Generic Function, write-header-line: Private generic functions
get-backtrace: Private ordinary functions
get-local-address-and-port: Private ordinary functions
get-parameter: Public ordinary functions
get-parameters: Public generic functions
get-parameters: Public generic functions
get-parameters*: Public ordinary functions
get-peer-address-and-port: Private ordinary functions
get-peer-ssl-certificate: Public ordinary functions
get-post-data: Private ordinary functions
get-request-data: Private ordinary functions
get-stored-session: Private ordinary functions

H
handle-if-modified-since: Public ordinary functions
handle-incoming-connection: Public generic functions
handle-incoming-connection: Public generic functions
handle-incoming-connection: Public generic functions
handle-incoming-connection%: Private generic functions
handle-incoming-connection%: Private generic functions
handle-request: Public generic functions
handle-request: Public generic functions
handle-static-file: Public ordinary functions
handler-case*: Private macros
header-in: Public generic functions
header-in: Public generic functions
header-in*: Public ordinary functions
header-out: Public ordinary functions
header-out-set-p: Private ordinary functions
headers-in: Public generic functions
headers-in: Public generic functions
headers-in*: Public ordinary functions
headers-out: Public generic functions
headers-out: Public generic functions
headers-out*: Public ordinary functions
host: Public ordinary functions
http-token-p: Public ordinary functions
hunchentoot-error: Public ordinary functions
hunchentoot-operation-not-implemented-operation: Private generic functions
hunchentoot-operation-not-implemented-operation: Private generic functions
hunchentoot-warn: Private ordinary functions
hyperdoc-lookup: Private ordinary functions
hyperdoc-lookup: Private ordinary functions

I
ignore-errors*: Private macros
increment-taskmaster-accept-count: Private generic functions
increment-taskmaster-accept-count: Private generic functions
increment-taskmaster-thread-count: Public generic functions
increment-taskmaster-thread-count: Public generic functions
increment-taskmaster-thread-count: Public generic functions
initialize-connection-stream: Public generic functions
initialize-connection-stream: Public generic functions
initialize-connection-stream: Public generic functions
initialize-instance: Public standalone methods
initialize-instance: Public standalone methods
initialize-instance: Public standalone methods
initialize-instance: Public standalone methods
initialize-instance: Public standalone methods
initialize-instance: Public standalone methods
initialize-instance: Public standalone methods
input-chunking-p: Private ordinary functions
iso-time: Private ordinary functions

K
keep-alive-p: Private ordinary functions

L
letterp: Private ordinary functions
local-addr: Public generic functions
local-addr: Public generic functions
local-addr*: Public ordinary functions
local-port: Public generic functions
local-port: Public generic functions
local-port*: Public ordinary functions
log-message*: Public ordinary functions

M
Macro, def-http-return-code: Private macros
Macro, defconstant: Private macros
Macro, define-easy-handler: Public macros
Macro, defvar-unbound: Private macros
Macro, handler-case*: Private macros
Macro, ignore-errors*: Private macros
Macro, upgrade-vector: Private macros
Macro, with-acceptor-request-count-incremented: Private macros
Macro, with-conditions-caught-and-logged: Private macros
Macro, with-debugger: Private macros
Macro, with-lock-held: Private macros
Macro, with-log-stream: Private macros
Macro, with-mapped-conditions: Private macros
Macro, with-session-lock-held: Private macros
make-condition-variable: Private ordinary functions
make-cooked-message: Private ordinary functions
make-defun-parameter: Private ordinary functions
make-lock: Private ordinary functions
make-socket-stream: Private ordinary functions
make-tmp-file-name: Private ordinary functions
maybe-add-charset-to-content-type-header: Private ordinary functions
maybe-handle-range-header: Private ordinary functions
maybe-invoke-debugger: Public generic functions
maybe-invoke-debugger: Public generic functions
maybe-read-post-parameters: Private ordinary functions
maybe-rewrite-urls-for-session: Private ordinary functions
md5-hex: Private ordinary functions
Method, (setf acceptor-access-log-destination): Public generic functions
Method, (setf acceptor-document-root): Public generic functions
Method, (setf acceptor-error-template-directory): Public generic functions
Method, (setf acceptor-input-chunking-p): Public generic functions
Method, (setf acceptor-listen-socket): Private generic functions
Method, (setf acceptor-message-log-destination): Public generic functions
Method, (setf acceptor-name): Public generic functions
Method, (setf acceptor-output-chunking-p): Public generic functions
Method, (setf acceptor-persistent-connections-p): Public generic functions
Method, (setf acceptor-process): Private generic functions
Method, (setf acceptor-reply-class): Public generic functions
Method, (setf acceptor-request-class): Public generic functions
Method, (setf acceptor-requests-in-progress): Public generic functions
Method, (setf acceptor-shutdown-lock): Private generic functions
Method, (setf acceptor-shutdown-p): Private generic functions
Method, (setf acceptor-shutdown-queue): Private generic functions
Method, (setf aux-data): Private generic functions
Method, (setf cookie-domain): Public generic functions
Method, (setf cookie-expires): Public generic functions
Method, (setf cookie-http-only): Public generic functions
Method, (setf cookie-max-age): Public generic functions
Method, (setf cookie-path): Public generic functions
Method, (setf cookie-secure): Public generic functions
Method, (setf cookie-value): Public generic functions
Method, (setf cookies-out): Public generic functions
Method, (setf header-out): Public generic functions
Method, (setf header-out): Public generic functions
Method, (setf header-out): Public generic functions
Method, (setf header-out): Public generic functions
Method, (setf reply-external-format): Public generic functions
Method, (setf return-code): Public generic functions
Method, (setf session): Public generic functions
Method, (setf session-db): Public generic functions
Method, (setf session-max-time): Public generic functions
Method, (setf taskmaster-accept-count): Private generic functions
Method, (setf taskmaster-acceptor): Public generic functions
Method, (setf taskmaster-max-accept-count): Public generic functions
Method, (setf taskmaster-max-thread-count): Public generic functions
Method, (setf taskmaster-thread-count): Public generic functions
Method, (setf taskmaster-worker-thread-name-format): Private generic functions
Method, accept-connections: Public generic functions
Method, acceptor-access-log-destination: Public generic functions
Method, acceptor-address: Public generic functions
Method, acceptor-dispatch-request: Public generic functions
Method, acceptor-dispatch-request: Public generic functions
Method, acceptor-document-root: Public generic functions
Method, acceptor-error-template-directory: Public generic functions
Method, acceptor-input-chunking-p: Public generic functions
Method, acceptor-listen-backlog: Public generic functions
Method, acceptor-listen-socket: Private generic functions
Method, acceptor-log-access: Public generic functions
Method, acceptor-log-message: Public generic functions
Method, acceptor-message-log-destination: Public generic functions
Method, acceptor-name: Public generic functions
Method, acceptor-output-chunking-p: Public generic functions
Method, acceptor-persistent-connections-p: Public generic functions
Method, acceptor-port: Public generic functions
Method, acceptor-process: Private generic functions
Method, acceptor-read-timeout: Public generic functions
Method, acceptor-remove-session: Public generic functions
Method, acceptor-reply-class: Public generic functions
Method, acceptor-request-class: Public generic functions
Method, acceptor-requests-in-progress: Public generic functions
Method, acceptor-server-name: Private generic functions
Method, acceptor-shutdown-lock: Private generic functions
Method, acceptor-shutdown-p: Private generic functions
Method, acceptor-shutdown-queue: Private generic functions
Method, acceptor-ssl-certificate-file: Public generic functions
Method, acceptor-ssl-p: Public generic functions
Method, acceptor-ssl-p: Public generic functions
Method, acceptor-ssl-privatekey-file: Public generic functions
Method, acceptor-ssl-privatekey-password: Public generic functions
Method, acceptor-status-message: Public generic functions
Method, acceptor-status-message: Public generic functions
Method, acceptor-status-message: Public generic functions
Method, acceptor-taskmaster: Private generic functions
Method, acceptor-write-timeout: Public generic functions
Method, assoc*: Private generic functions
Method, ass