The fast-http Reference Manual

This is the fast-http Reference Manual, version 0.2.0, generated automatically by Declt version 4.0 beta 2 "William Riker" on Mon Feb 26 16:23:38 2024 GMT+0.

Table of Contents


1 Introduction


2 Systems

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


2.1 fast-http

A fast HTTP protocol parser in Common Lisp

Author

Eitaro Fukamachi

License

MIT

Long Description

# fast-http

[![Build Status](https://travis-ci.org/fukamachi/fast-http.svg?branch=master)](https://travis-ci.org/fukamachi/fast-http)

This is a fast HTTP request/response protocol parser for Common Lisp.

## Features

* Parses both HTTP requests and responses.
* Handles persistent streams (keep-alive).
* Decodes chunked encoding.
* Exports low-level APIs which don’t any memory allocations during parsing.

## API differences from http-parse

The API is quite similar to [http-parse](https://github.com/orthecreedence/http-parse), although there’s some differences.

* ‘http‘, ‘http-request‘ and ‘http-response‘ are structure classes, not standard classes.
* ‘http‘ doesn’t have ‘:force-stream‘ option. (always streaming)
* ‘http‘ doesn’t have ‘:store-body‘ option because it can consume much memory.
* ‘body-callback‘ for ‘make-parser‘ doesn’t take a flag ‘body-complete-p‘.
* Use ‘finish-callback‘ to know if the parsing is finished.
* ‘body-callback‘ for ‘make-parser‘ takes pointers ‘start‘ and ‘end‘.
* ‘multipart-callback‘ for ‘make-parser‘ has been deleted.
* Use ‘make-multipart-parser‘ and ‘body-callback‘ by yourself.
* ‘:callback‘ of ‘make-multipart-parser‘ takes a stream, not a body octet vector at the 4th argument.
* Raises errors aggressively while parsing.
* Handle ‘fast-http-error‘ as you needed.
* Doesn’t use a property list as a representation of HTTP headers. (See [issue #1](https://github.com/fukamachi/fast-http/issues/1))

## APIs

### \[Structure] http

Base structure class extended by ‘http-request‘ and ‘http-response‘.

**NOTE**: Don’t use this class directly unless you’re intended to use low-level APIs of fast-http.

“‘common-lisp
(make-http)
;=> #S(FAST-HTTP.HTTP:HTTP
; :METHOD NIL
; :MAJOR-VERSION 0
; :MINOR-VERSION 9
; :STATUS 0
; :CONTENT-LENGTH NIL
; :CHUNKED-P NIL
; :UPGRADE-P NIL
; :HEADERS NIL
; :HEADER-READ 0
; :MARK -1
; :STATE 0)
“‘

#### Methods

- ‘http-method‘: Returns a HTTP request method in a keyword (such like ‘:GET‘, ‘:POST‘ or ‘:HEAD‘).
- ‘http-major-version‘: Returns a HTTP protocol major version in an integer (such like ‘1‘ or ‘0‘).
- ‘http-minor-version‘: Returns a HTTP protocol minor version in an integer (such like ‘1‘ or ‘0‘).
- ‘http-version‘: Returns a HTTP protocol version in a float (such like ‘1.0‘ or ‘1.1‘).
- ‘http-status‘: Returns a HTTP response status code in an integer (such like ‘200‘ or ‘302‘).
- ‘http-content-length‘: Returns a value of ‘Content-Length‘ header in an integer. If the header doesn’t exist, it returns ‘NIL‘.
- ‘http-chunked-p‘: Returns ‘T‘ if the value of ‘Transfer-Encoding‘ header is ‘chunked‘. If the header doesn’t exist, it returns ‘NIL‘.
- ‘http-upgrade-p‘: Returns ‘T‘ if ‘Upgrade‘ header exists.
- ‘http-headers‘: Returns a hash-table which represents HTTP headers. Note all hash keys are lower-cased and all values are string except ‘Set-Cookie‘ header, whose value is a list of strings. (‘Content-Length‘ -> ‘"content-length"‘).

### \[Structure] http-request (extends http)

Structure class holds values specific to an HTTP request.

“‘common-lisp
(make-http-request)
;=> #S(FAST-HTTP.HTTP:HTTP-REQUEST
; :METHOD NIL
; :MAJOR-VERSION 0
; :MINOR-VERSION 9
; :STATUS 0
; :CONTENT-LENGTH NIL
; :CHUNKED-P NIL
; :UPGRADE-P NIL
; :HEADERS NIL
; :HEADER-READ 0
; :MARK -1
; :STATE 0
; :RESOURCE NIL)
“‘

#### Methods

- ‘http-resource‘: Returns an URI string.

### \[Structure] http-response (extends http)

Structure class holds values specific to an HTTP response.

“‘common-lisp
(make-http-response)
;=> #S(FAST-HTTP.HTTP:HTTP-RESPONSE
; :METHOD NIL
; :MAJOR-VERSION 0
; :MINOR-VERSION 9
; :STATUS 0
; :CONTENT-LENGTH NIL
; :CHUNKED-P NIL
; :UPGRADE-P NIL
; :HEADERS NIL
; :HEADER-READ 0
; :MARK -1
; :STATE 0
; :STATUS-TEXT NIL)
“‘

#### Methods

- ‘http-status-text‘: Returns an response status text (such like ‘Continue‘, ‘OK‘ or ‘Bad Request‘).

### \[Function] make-parser (http &key first-line-callback header-callback body-callback finish-callback)

Makes a parser closure and returns it.

“‘common-lisp
(let ((http (make-http-request)))
(make-parser http
:body-callback
(lambda (data start end)
(write-to-buffer data start end))
:finish-callback
(lambda ()
(handle-response http))))
;=> #<CLOSURE (LAMBDA (DATA &KEY (START 0) END)
; :IN
; FAST-HTTP.PARSER:MAKE-PARSER) {10090BDD0B}>
“‘

The closure takes one required argument ‘data‘, that is a simple byte vector and two keyword arguments ‘start‘ and ‘end‘.

#### Callbacks

- ‘first-line-callback‘ (): This callback function will be called when the first line is parsed.
- ‘header-callback‘ (headers-hash-table): This callback function will be called when the header lines are parsed. This function is the same object to the ‘http‘ object holds.
- ‘body-callback‘ (data-byte-vector): This callback function will be called whenever it gets a chunk of HTTP body. Which means this can be called multiple times.
- ‘finish-callback‘ (): This callback function will be called when the HTTP message ends.

NOTE: If the HTTP request/response has multiple messages (like HTTP/1.1 pipelining), all these functions can be called multiple times.

### \[Function] make-multipart-parser (content-type callback)

Makes a multipart/form-data parser closure and returns it.

This takes 2 arguments, ‘content-type‘ (such like ‘"multipart/form-data; boundary=–AsB03x"‘) and ‘callback‘. The ‘callback‘ is a function which takes exact 4 arguments – a field name, field headers, field meta data and body bytes.

## Low-level APIs

The following functions are intended to be used for internally. These APIs are likely to change in the future.

Most of functions are declared as ‘(optimize (speed 3) (safety 0))‘ which means it won’t check the type of arguments.

### \[Structure] callbacks

Structure class holds callback functions. The callbacks are similar to ‘make-parser‘’s, but don’t correspond to them directly.

#### Slots

- ‘message-begin‘ (http): This will be called when a new HTTP message begins.
- ‘url‘ (http data start end): This will be called when an URL part of the HTTP request parsed.
- ‘first-line‘ (http): This will be called when the first line of the HTTP request/response parsed.
- ‘status‘ (http data start end): This will be called when the status text (not code) of the HTTP response parsed.
- ‘header-field‘ (http data start end): This will be called when a header field parsed.
- ‘header-value‘ (http data start end): This will be called when a header value parsed. This function can be called multiple times when the header value is folded onto multiple lines.
- ‘headers-complete‘ (http): This will be called when all headers parsed.
- ‘body‘ (http data start end): This will be called whenever the parser gets a chunk of HTTP body.
- ‘message-complete‘ (http): This will be called when the HTTP message ends.

### \[Function] parse-request (http callbacks data &key (start 0) end)

Parses ‘data‘ as an HTTP request, sets values to ‘http‘ and invokes callbacks in ‘callbacks‘.

This takes a ‘http‘ object, a ‘callbacks‘ object, and a simple byte vector ‘data‘ and two pointers – ‘start‘ and ‘end‘. If ‘end‘ is ‘nil‘, the length of ‘data‘ will be used.

### \[Function] parse-response (http callbacks data &key (start 0) end)

Parses ‘data‘ as an HTTP response, sets values to ‘http‘ and invokes callbacks in ‘callbacks‘.

Takes a ‘http‘ object, a ‘callbacks‘ object, and a simple byte vector ‘data‘ and two pointers – ‘start‘ and ‘end‘. If ‘end‘ is ‘nil‘, the length of ‘data‘ will be used.

### \[Condition] eof

Will be raised when the ‘data‘ ends in the middle of parsing.

## Installation

“‘common-lisp
(ql:quickload :fast-http)
“‘

## Running tests

“‘common-lisp
(asdf:test-system :fast-http)
“‘

## Benchmark

- Parsing an HTTP request header 100000 times.

In this benchmark, fast-http is **1.25 times faster** than [http-parser](https://github.com/joyent/http-parser), a C equivalent.

| http-parser (C) | fast-http |
| —————:| ———:|
| 0.108s | 0.086s |

### Environment

* Travis CI
* SBCL 1.2.6

You can see the latest result at [Travis CI](https://travis-ci.org/fukamachi/fast-http).

### fast-http (Common Lisp)

“‘common-lisp
(ql:quickload :fast-http-test)
(fast-http-test.benchmark:run-ll-benchmark)
“‘

“‘
Evaluation took:
0.086 seconds of real time
0.085897 seconds of total run time (0.084763 user, 0.001134 system)
100.00% CPU
257,140,751 processor cycles
0 bytes consed
“‘

### http-parser (C)

“‘c
#include "http_parser.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <time.h>

static http_parser *parser;

static http_parser_settings settings_null =
{.on_message_begin = 0
,.on_header_field = 0
,.on_header_value = 0
,.on_url = 0
,.on_status = 0
,.on_body = 0
,.on_headers_complete = 0
,.on_message_complete = 0
};

int
main (void)
{
const char *buf;
int i;
float start, end;
size_t parsed;

parser = malloc(sizeof(http_parser));

buf = "GET /cookies HTTP/1.1\r\nHost: 127.0.0.1:8090\r\nConnection: keep-alive\r\nCache-Control: max-age=0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17\r\nAccept-Encoding: gzip,deflate,sdch\r\nAccept-Language: en-US,en;q=0.8\r\nAccept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3\r\nCookie: name=wookie\r\n\r\n";

start = (float)clock()/CLOCKS_PER_SEC;
for (i = 0; i < 100000; i++) {
http_parser_init(parser, HTTP_REQUEST);
parsed = http_parser_execute(parser, &settings_null, buf, strlen(buf));
}
end = (float)clock()/CLOCKS_PER_SEC;

free(parser);
parser = NULL;

printf("Elapsed %f seconds.\n", (end - start));

return 0;
}
“‘

“‘
$ make http_parser.o
$ gcc -Wall -Wextra -Werror -Wno-error=unused-but-set-variable -O3 http_parser.o mybench.c -o mybench
$ mybench
Elapsed 0.108815 seconds.
“‘

## Author

* Eitaro Fukamachi (e.arrows@gmail.com)

## Copyright

Copyright (c) 2014 Eitaro Fukamachi

## License

Licensed under the MIT License.

Version

0.2.0

Dependencies
  • alexandria (system).
  • cl-utilities (system).
  • proc-parse (system).
  • babel (system).
  • xsubseq (system).
  • smart-buffer (system).
Source

fast-http.asd.

Child Component

src (module).


3 Modules

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


3.1 fast-http/src

Source

fast-http.asd.

Parent Component

fast-http (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 fast-http/fast-http.asd

Source

fast-http.asd.

Parent Component

fast-http (system).

ASDF Systems

fast-http.

Packages

fast-http-asd.


4.1.2 fast-http/src/fast-http.lisp

Dependencies
Source

fast-http.asd.

Parent Component

src (module).

Packages

fast-http.

Public Interface
Internals

find-boundary (function).


4.1.3 fast-http/src/http.lisp

Source

fast-http.asd.

Parent Component

src (module).

Packages

fast-http.http.

Public Interface
Internals

4.1.4 fast-http/src/parser.lisp

Dependencies
Source

fast-http.asd.

Parent Component

src (module).

Packages

fast-http.parser.

Public Interface
Internals

4.1.5 fast-http/src/multipart-parser.lisp

Dependencies
Source

fast-http.asd.

Parent Component

src (module).

Packages

fast-http.multipart-parser.

Public Interface
Internals

4.1.6 fast-http/src/byte-vector.lisp

Source

fast-http.asd.

Parent Component

src (module).

Packages

fast-http.byte-vector.

Public Interface
Internals

byte-to-ascii-lower (function).


4.1.7 fast-http/src/error.lisp

Source

fast-http.asd.

Parent Component

src (module).

Packages

fast-http.error.

Public Interface

4.1.8 fast-http/src/util.lisp

Dependency

error.lisp (file).

Source

fast-http.asd.

Parent Component

src (module).

Packages

fast-http.util.

Public Interface
Internals

5 Packages

Packages are listed by definition order.


5.1 fast-http.multipart-parser

Source

multipart-parser.lisp.

Use List
Used By List

fast-http.

Public Interface
Internals

5.2 fast-http

Source

fast-http.lisp.

Use List
Public Interface
Internals

find-boundary (function).


5.3 fast-http-asd

Source

fast-http.asd.

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

5.4 fast-http.parser

Source

parser.lisp.

Use List
Used By List

fast-http.

Public Interface
Internals

5.5 fast-http.error

Source

error.lisp.

Use List

common-lisp.

Used By List
Public Interface
Internals

description (slot).


5.6 fast-http.http

Source

http.lisp.

Use List

common-lisp.

Used By List
Public Interface
Internals

5.7 fast-http.util

Source

util.lisp.

Use List

common-lisp.

Public Interface
Internals

5.8 fast-http.byte-vector

Source

byte-vector.lisp.

Use List

common-lisp.

Used By List
Public Interface
Internals

byte-to-ascii-lower (function).


6 Definitions

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


6.1 Public Interface


6.1.1 Constants

Constant: +cr+
Package

fast-http.byte-vector.

Source

byte-vector.lisp.

Constant: +crlf+
Package

fast-http.byte-vector.

Source

byte-vector.lisp.

Constant: +dash+
Package

fast-http.byte-vector.

Source

byte-vector.lisp.

Constant: +lf+
Package

fast-http.byte-vector.

Source

byte-vector.lisp.

Constant: +page+
Package

fast-http.byte-vector.

Source

byte-vector.lisp.

Constant: +space+
Package

fast-http.byte-vector.

Source

byte-vector.lisp.

Constant: +state-body+
Package

fast-http.http.

Source

http.lisp.

Constant: +state-chunk-body-end-crlf+
Package

fast-http.http.

Source

http.lisp.

Constant: +state-chunk-size+
Package

fast-http.http.

Source

http.lisp.

Constant: +state-first-line+
Package

fast-http.http.

Source

http.lisp.

Constant: +state-headers+
Package

fast-http.http.

Source

http.lisp.

Constant: +state-trailing-headers+
Package

fast-http.http.

Source

http.lisp.

Constant: +tab+
Package

fast-http.byte-vector.

Source

byte-vector.lisp.


6.1.2 Macros

Macro: case-byte (byte &body cases)
Package

fast-http.util.

Source

util.lisp.

Macro: casev (keyform &body clauses)
Package

fast-http.util.

Source

util.lisp.

Macro: casev= (keyform &body clauses)
Package

fast-http.util.

Source

util.lisp.

Macro: defun-careful (name lambda-list &body body)
Package

fast-http.util.

Source

util.lisp.

Macro: defun-insane (name lambda-list &body body)
Package

fast-http.util.

Source

util.lisp.

Macro: defun-speedy (name lambda-list &body body)
Package

fast-http.util.

Source

util.lisp.

Macro: tagcase (keyform &body blocks)
Package

fast-http.util.

Source

util.lisp.

Macro: tagcasev (keyform &body blocks)
Package

fast-http.util.

Source

util.lisp.

Macro: tagcasev= (keyform &body blocks)
Package

fast-http.util.

Source

util.lisp.


6.1.3 Ordinary functions

Function: alpha-byte-char-p (byte)
Package

fast-http.byte-vector.

Source

byte-vector.lisp.

Function: alpha-byte-char-to-lower-char (byte)
Package

fast-http.byte-vector.

Source

byte-vector.lisp.

Function: alphanumeric-byte-char-p (byte)
Package

fast-http.byte-vector.

Source

byte-vector.lisp.

Function: append-byte-vectors (vec1 vec2)
Package

fast-http.byte-vector.

Source

byte-vector.lisp.

Function: ascii-octets-to-lower-string (octets &key start end)
Package

fast-http.byte-vector.

Source

byte-vector.lisp.

Function: ascii-octets-to-string (octets &key start end)
Package

fast-http.byte-vector.

Source

byte-vector.lisp.

Function: digit-byte-char-p (byte)
Package

fast-http.byte-vector.

Source

byte-vector.lisp.

Function: digit-byte-char-to-integer (byte)
Package

fast-http.byte-vector.

Source

byte-vector.lisp.

Reader: http-chunked-p (instance)
Writer: (setf http-chunked-p) (instance)
Package

fast-http.http.

Source

http.lisp.

Target Slot

chunked-p.

Reader: http-content-length (instance)
Writer: (setf http-content-length) (instance)
Package

fast-http.http.

Source

http.lisp.

Target Slot

content-length.

Reader: http-header-read (instance)
Writer: (setf http-header-read) (instance)
Package

fast-http.http.

Source

http.lisp.

Target Slot

header-read.

Reader: http-headers (instance)
Writer: (setf http-headers) (instance)
Package

fast-http.http.

Source

http.lisp.

Target Slot

headers.

Reader: http-major-version (instance)
Writer: (setf http-major-version) (instance)
Package

fast-http.http.

Source

http.lisp.

Target Slot

major-version.

Reader: http-mark (instance)
Writer: (setf http-mark) (instance)
Package

fast-http.http.

Source

http.lisp.

Target Slot

mark.

Reader: http-method (instance)
Writer: (setf http-method) (instance)
Package

fast-http.http.

Source

http.lisp.

Target Slot

method.

Reader: http-minor-version (instance)
Writer: (setf http-minor-version) (instance)
Package

fast-http.http.

Source

http.lisp.

Target Slot

minor-version.

Function: http-multipart-parse (parser callbacks data &key start end)
Package

fast-http.multipart-parser.

Source

multipart-parser.lisp.

Function: http-p (object)
Package

fast-http.http.

Source

http.lisp.

Function: http-request-p (object)
Package

fast-http.http.

Source

http.lisp.

Reader: http-resource (instance)
Writer: (setf http-resource) (instance)
Package

fast-http.http.

Source

http.lisp.

Target Slot

resource.

Function: http-response-p (object)
Package

fast-http.http.

Source

http.lisp.

Reader: http-state (instance)
Writer: (setf http-state) (instance)
Package

fast-http.http.

Source

http.lisp.

Target Slot

state.

Reader: http-status (instance)
Writer: (setf http-status) (instance)
Package

fast-http.http.

Source

http.lisp.

Target Slot

status.

Reader: http-status-text (instance)
Writer: (setf http-status-text) (instance)
Package

fast-http.http.

Source

http.lisp.

Target Slot

status-text.

Reader: http-upgrade-p (instance)
Writer: (setf http-upgrade-p) (instance)
Package

fast-http.http.

Source

http.lisp.

Target Slot

upgrade-p.

Function: http-version (http)
Package

fast-http.http.

Source

http.lisp.

Reader: ll-multipart-parser-state (instance)
Writer: (setf ll-multipart-parser-state) (instance)
Package

fast-http.multipart-parser.

Source

multipart-parser.lisp.

Target Slot

state.

Function: make-callbacks (&key message-begin url first-line status header-field header-value headers-complete body message-complete)
Package

fast-http.parser.

Source

parser.lisp.

Function: make-collector ()
Package

fast-http.util.

Source

util.lisp.

Function: make-http (&key method major-version minor-version status content-length chunked-p upgrade-p headers header-read mark state)
Package

fast-http.http.

Source

http.lisp.

Function: make-http-request (&key method major-version minor-version status content-length chunked-p upgrade-p headers header-read mark state resource)
Package

fast-http.http.

Source

http.lisp.

Function: make-http-response (&key method major-version minor-version status content-length chunked-p upgrade-p headers header-read mark state status-text)
Package

fast-http.http.

Source

http.lisp.

Function: make-ll-multipart-parser (&key boundary)
Package

fast-http.multipart-parser.

Source

multipart-parser.lisp.

Function: make-multipart-parser (content-type callback)
Package

fast-http.

Source

fast-http.lisp.

Function: make-parser (http &key first-line-callback header-callback body-callback finish-callback)
Package

fast-http.

Source

fast-http.lisp.

Function: mark-byte-char-p (byte)
Package

fast-http.byte-vector.

Source

byte-vector.lisp.

Function: number-string-p (string)
Package

fast-http.util.

Source

util.lisp.

Function: parse-request (http callbacks data &key start end)
Package

fast-http.parser.

Source

parser.lisp.

Function: parse-response (http callbacks data &key start end)
Package

fast-http.parser.

Source

parser.lisp.


6.1.4 Conditions

Condition: callback-error
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

fast-http-error.

Direct subclasses
Direct slots
Slot: error
Package

common-lisp.

Initform

(quote nil)

Initargs

:error

Condition: cb-body
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

callback-error.

Direct slots
Slot: description
Initform

(quote "the body callback failed")

Condition: cb-first-line
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

callback-error.

Direct slots
Slot: description
Initform

(quote "the first line callback failed")

Condition: cb-header-field
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

callback-error.

Direct slots
Slot: description
Initform

(quote "the header-field callback failed")

Condition: cb-header-value
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

callback-error.

Direct slots
Slot: description
Initform

(quote "the header-value callback failed")

Condition: cb-headers-complete
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

callback-error.

Direct slots
Slot: description
Initform

(quote "the headers-complete callback failed")

Condition: cb-message-begin
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

callback-error.

Direct slots
Slot: description
Initform

(quote "the message-begin callback failed")

Condition: cb-message-complete
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

callback-error.

Direct slots
Slot: description
Initform

(quote "the message-complete callback failed")

Condition: cb-status
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

callback-error.

Direct slots
Slot: description
Initform

(quote "the status callback failed")

Condition: cb-url
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

callback-error.

Direct slots
Slot: description
Initform

(quote "the url callback failed")

Condition: closed-connection
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

parsing-error.

Direct slots
Slot: description
Initform

(quote "data received after completed connection: close message")

Condition: eof
Package

fast-http.parser.

Source

parser.lisp.

Direct superclasses

condition.

Condition: fast-http-error
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

simple-error.

Direct subclasses
Direct slots
Slot: description
Condition: header-overflow
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

parsing-error.

Direct slots
Slot: description
Initform

(quote "too many header bytes seen; overflow detected")

Condition: header-value-parsing-error
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

multipart-parsing-error.

Direct subclasses
Condition: invalid-boundary
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

multipart-parsing-error.

Direct slots
Slot: description
Initform

(quote "invalid boundary")

Condition: invalid-chunk-size
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

parsing-error.

Direct slots
Slot: description
Initform

(quote "invalid character in chunk size header")

Condition: invalid-constant
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

parsing-error.

Direct slots
Slot: description
Initform

(quote "invalid constant string")

Condition: invalid-content-length
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

parsing-error.

Direct slots
Slot: description
Initform

(quote "invalid character in content-length header")

Condition: invalid-eof-state
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

parsing-error.

Direct slots
Slot: description
Initform

(quote "stream ended at an unexpected time")

Condition: invalid-fragment
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

parsing-error.

Direct slots
Slot: description
Initform

(quote "invalid fragment")

Condition: invalid-header-token
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

parsing-error.

Direct slots
Slot: description
Initform

(quote "invalid character in header")

Condition: invalid-header-value
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

header-value-parsing-error.

Direct slots
Slot: description
Initform

(quote "invalid header value")

Condition: invalid-host
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

parsing-error.

Direct slots
Slot: description
Initform

(quote "invalid host")

Condition: invalid-internal-state
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

parsing-error.

Direct slots
Slot: description
Initform

(quote "encountered unexpected internal state")

Slot: code
Initargs

:code

Condition: invalid-method
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

parsing-error.

Direct slots
Slot: description
Initform

(quote "invalid http method")

Condition: invalid-multipart-body
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

multipart-parsing-error.

Direct slots
Slot: description
Initform

(quote "invalid multipart body")

Condition: invalid-parameter-key
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

header-value-parsing-error.

Direct slots
Slot: description
Initform

(quote "invalid parameter key")

Condition: invalid-parameter-value
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

header-value-parsing-error.

Direct slots
Slot: description
Initform

(quote "invalid parameter value")

Condition: invalid-path
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

parsing-error.

Direct slots
Slot: description
Initform

(quote "invalid path")

Condition: invalid-port
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

parsing-error.

Direct slots
Slot: description
Initform

(quote "invalid port")

Condition: invalid-query-string
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

parsing-error.

Direct slots
Slot: description
Initform

(quote "invalid query string")

Condition: invalid-status
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

parsing-error.

Direct slots
Slot: description
Initform

(quote "invalid http status code")

Slot: status-code
Initform

(quote nil)

Initargs

:status-code

Condition: invalid-url
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

parsing-error.

Direct slots
Slot: description
Initform

(quote "invalid url")

Condition: invalid-version
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

parsing-error.

Direct slots
Slot: description
Initform

(quote "invalid http version")

Condition: lf-expected
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

parsing-error.

Direct slots
Slot: description
Initform

(quote "lf character expected")

Condition: multipart-parsing-error
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

fast-http-error.

Direct subclasses
Condition: parsing-error
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

fast-http-error.

Direct subclasses
Condition: paused-error
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

parsing-error.

Direct slots
Slot: description
Initform

(quote "parser is paused")

Condition: strict-error
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

parsing-error.

Direct slots
Slot: description
Initform

(quote "strict mode assertion failed")

Slot: form
Initargs

:form

Condition: unknown-error
Package

fast-http.error.

Source

error.lisp.

Direct superclasses

parsing-error.

Direct slots
Slot: description
Initform

(quote "an unknown error occured")


6.1.5 Structures

Structure: callbacks
Package

fast-http.parser.

Source

parser.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: message-begin
Type

(or null function)

Readers

callbacks-message-begin.

Writers

(setf callbacks-message-begin).

Slot: url
Type

(or null function)

Readers

callbacks-url.

Writers

(setf callbacks-url).

Slot: first-line
Type

(or null function)

Readers

callbacks-first-line.

Writers

(setf callbacks-first-line).

Slot: status
Type

(or null function)

Readers

callbacks-status.

Writers

(setf callbacks-status).

Slot: header-field
Type

(or null function)

Readers

callbacks-header-field.

Writers

(setf callbacks-header-field).

Slot: header-value
Type

(or null function)

Readers

callbacks-header-value.

Writers

(setf callbacks-header-value).

Slot: headers-complete
Type

(or null function)

Readers

callbacks-headers-complete.

Writers

(setf callbacks-headers-complete).

Slot: body
Type

(or null function)

Readers

callbacks-body.

Writers

(setf callbacks-body).

Slot: message-complete
Type

(or null function)

Readers

callbacks-message-complete.

Writers

(setf callbacks-message-complete).

Structure: http
Package

fast-http.http.

Source

http.lisp.

Direct superclasses

structure-object.

Direct subclasses
Direct slots
Slot: method
Package

common-lisp.

Type

symbol

Readers

http-method.

Writers

(setf http-method).

Slot: major-version
Type

fixnum

Initform

0

Readers

http-major-version.

Writers

(setf http-major-version).

Slot: minor-version
Type

fixnum

Initform

9

Readers

http-minor-version.

Writers

(setf http-minor-version).

Slot: status
Type

fast-http.http:status-code

Initform

0

Readers

http-status.

Writers

(setf http-status).

Slot: content-length
Type

(or null integer)

Readers

http-content-length.

Writers

(setf http-content-length).

Slot: chunked-p
Type

boolean

Readers

http-chunked-p.

Writers

(setf http-chunked-p).

Slot: upgrade-p
Type

boolean

Readers

http-upgrade-p.

Writers

(setf http-upgrade-p).

Slot: headers
Readers

http-headers.

Writers

(setf http-headers).

Slot: header-read
Type

fixnum

Initform

0

Readers

http-header-read.

Writers

(setf http-header-read).

Slot: mark
Type

fixnum

Initform

-1

Readers

http-mark.

Writers

(setf http-mark).

Slot: state
Type

fixnum

Initform

fast-http.http:+state-first-line+

Readers

http-state.

Writers

(setf http-state).

Structure: http-request
Package

fast-http.http.

Source

http.lisp.

Direct superclasses

http.

Direct slots
Slot: resource
Readers

http-resource.

Writers

(setf http-resource).

Structure: http-response
Package

fast-http.http.

Source

http.lisp.

Direct superclasses

http.

Direct slots
Slot: status-text
Readers

http-status-text.

Writers

(setf http-status-text).

Structure: ll-multipart-parser
Package

fast-http.multipart-parser.

Source

multipart-parser.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: state
Type

fixnum

Initform

0

Readers

ll-multipart-parser-state.

Writers

(setf ll-multipart-parser-state).

Slot: header-parser
Readers

ll-multipart-parser-header-parser.

Writers

(setf ll-multipart-parser-header-parser).

Slot: boundary
Readers

ll-multipart-parser-boundary.

Writers

(setf ll-multipart-parser-boundary).

Slot: body-mark
Readers

ll-multipart-parser-body-mark.

Writers

(setf ll-multipart-parser-body-mark).

Slot: body-buffer
Readers

ll-multipart-parser-body-buffer.

Writers

(setf ll-multipart-parser-body-buffer).

Slot: boundary-mark
Readers

ll-multipart-parser-boundary-mark.

Writers

(setf ll-multipart-parser-boundary-mark).

Slot: boundary-buffer
Readers

ll-multipart-parser-boundary-buffer.

Writers

(setf ll-multipart-parser-boundary-buffer).


6.1.6 Types

Type: pointer ()
Package

fast-http.parser.

Source

parser.lisp.

Type: simple-byte-vector (&optional len)
Package

fast-http.byte-vector.

Source

byte-vector.lisp.

Type: status-code ()
Package

fast-http.http.

Source

http.lisp.


6.2 Internals


6.2.1 Constants

Constant: +body-almost-done+
Package

fast-http.multipart-parser.

Source

multipart-parser.lisp.

Constant: +body-done+
Package

fast-http.multipart-parser.

Source

multipart-parser.lisp.

Constant: +body-start+
Package

fast-http.multipart-parser.

Source

multipart-parser.lisp.

Constant: +header-field-start+
Package

fast-http.multipart-parser.

Source

multipart-parser.lisp.

Constant: +looking-for-delimiter+
Package

fast-http.multipart-parser.

Source

multipart-parser.lisp.

Constant: +max-header-line+

Maximum number of header lines allowed.

This restriction is for protecting users’ application against denial-of-service attacks where the attacker feeds us a never-ending header that the application keeps buffering.

Package

fast-http.parser.

Source

parser.lisp.

Constant: +maybe-delimiter-first-dash+
Package

fast-http.multipart-parser.

Source

multipart-parser.lisp.

Constant: +maybe-delimiter-second-dash+
Package

fast-http.multipart-parser.

Source

multipart-parser.lisp.

Constant: +maybe-delimiter-start+
Package

fast-http.multipart-parser.

Source

multipart-parser.lisp.

Constant: +parsing-delimiter+
Package

fast-http.multipart-parser.

Source

multipart-parser.lisp.

Constant: +parsing-delimiter-almost-done+
Package

fast-http.multipart-parser.

Source

multipart-parser.lisp.

Constant: +parsing-delimiter-dash+
Package

fast-http.multipart-parser.

Source

multipart-parser.lisp.

Constant: +parsing-delimiter-dash-start+
Package

fast-http.multipart-parser.

Source

multipart-parser.lisp.

Constant: +parsing-delimiter-done+
Package

fast-http.multipart-parser.

Source

multipart-parser.lisp.

Constant: +parsing-delimiter-end+
Package

fast-http.multipart-parser.

Source

multipart-parser.lisp.

Constant: +tokens+
Package

fast-http.parser.

Source

parser.lisp.

Constant: +unhex+
Package

fast-http.parser.

Source

parser.lisp.


6.2.2 Special variables

Special Variable: *careful-declaration*
Package

fast-http.util.

Source

util.lisp.

Special Variable: *insane-declaration*
Package

fast-http.util.

Source

util.lisp.

Special Variable: *speedy-declaration*
Package

fast-http.util.

Source

util.lisp.


6.2.3 Macros

Macro: callback-data (name http callbacks data start end)
Package

fast-http.parser.

Source

parser.lisp.

Macro: callback-notify (name http callbacks)
Package

fast-http.parser.

Source

parser.lisp.


6.2.4 Ordinary functions

Function: %whitespacep (char)
Package

fast-http.util.

Source

util.lisp.

Function: byte-to-ascii-lower (x)
Package

fast-http.byte-vector.

Source

byte-vector.lisp.

Reader: callbacks-body (instance)
Writer: (setf callbacks-body) (instance)
Package

fast-http.parser.

Source

parser.lisp.

Target Slot

body.

Reader: callbacks-first-line (instance)
Writer: (setf callbacks-first-line) (instance)
Package

fast-http.parser.

Source

parser.lisp.

Target Slot

first-line.

Reader: callbacks-header-field (instance)
Writer: (setf callbacks-header-field) (instance)
Package

fast-http.parser.

Source

parser.lisp.

Target Slot

header-field.

Reader: callbacks-header-value (instance)
Writer: (setf callbacks-header-value) (instance)
Package

fast-http.parser.

Source

parser.lisp.

Target Slot

header-value.

Reader: callbacks-headers-complete (instance)
Writer: (setf callbacks-headers-complete) (instance)
Package

fast-http.parser.

Source

parser.lisp.

Target Slot

headers-complete.

Reader: callbacks-message-begin (instance)
Writer: (setf callbacks-message-begin) (instance)
Package

fast-http.parser.

Source

parser.lisp.

Target Slot

message-begin.

Reader: callbacks-message-complete (instance)
Writer: (setf callbacks-message-complete) (instance)
Package

fast-http.parser.

Source

parser.lisp.

Target Slot

message-complete.

Function: callbacks-p (object)
Package

fast-http.parser.

Source

parser.lisp.

Reader: callbacks-status (instance)
Writer: (setf callbacks-status) (instance)
Package

fast-http.parser.

Source

parser.lisp.

Target Slot

status.

Reader: callbacks-url (instance)
Writer: (setf callbacks-url) (instance)
Package

fast-http.parser.

Source

parser.lisp.

Target Slot

url.

Function: copy-callbacks (instance)
Package

fast-http.parser.

Source

parser.lisp.

Function: copy-http (instance)
Package

fast-http.http.

Source

http.lisp.

Function: copy-http-request (instance)
Package

fast-http.http.

Source

http.lisp.

Function: copy-http-response (instance)
Package

fast-http.http.

Source

http.lisp.

Function: copy-ll-multipart-parser (instance)
Package

fast-http.multipart-parser.

Source

multipart-parser.lisp.

Function: find-boundary (content-type)
Package

fast-http.

Source

fast-http.lisp.

Function: http-message-needs-eof-p (http)
Package

fast-http.parser.

Source

parser.lisp.

Reader: ll-multipart-parser-body-buffer (instance)
Writer: (setf ll-multipart-parser-body-buffer) (instance)
Package

fast-http.multipart-parser.

Source

multipart-parser.lisp.

Target Slot

body-buffer.

Reader: ll-multipart-parser-body-mark (instance)
Writer: (setf ll-multipart-parser-body-mark) (instance)
Package

fast-http.multipart-parser.

Source

multipart-parser.lisp.

Target Slot

body-mark.

Reader: ll-multipart-parser-boundary (instance)
Writer: (setf ll-multipart-parser-boundary) (instance)
Package

fast-http.multipart-parser.

Source

multipart-parser.lisp.

Target Slot

boundary.

Reader: ll-multipart-parser-boundary-buffer (instance)
Writer: (setf ll-multipart-parser-boundary-buffer) (instance)
Package

fast-http.multipart-parser.

Source

multipart-parser.lisp.

Target Slot

boundary-buffer.

Reader: ll-multipart-parser-boundary-mark (instance)
Writer: (setf ll-multipart-parser-boundary-mark) (instance)
Package

fast-http.multipart-parser.

Source

multipart-parser.lisp.

Target Slot

boundary-mark.

Reader: ll-multipart-parser-header-parser (instance)
Writer: (setf ll-multipart-parser-header-parser) (instance)
Package

fast-http.multipart-parser.

Source

multipart-parser.lisp.

Target Slot

header-parser.

Function: ll-multipart-parser-p (object)
Package

fast-http.multipart-parser.

Source

multipart-parser.lisp.

Function: parse-body (http callbacks data start end requestp)
Package

fast-http.parser.

Source

parser.lisp.

Function: parse-chunked-body (http callbacks data start end)
Package

fast-http.parser.

Source

parser.lisp.

Function: parse-header-field-and-value (http callbacks data start end)
Package

fast-http.parser.

Source

parser.lisp.

Function: parse-header-line (http callbacks data start end)
Package

fast-http.parser.

Source

parser.lisp.

Function: parse-header-value (http callbacks data start end &optional field-start field-end)
Package

fast-http.parser.

Source

parser.lisp.

Function: parse-header-value-content-length (data start end)
Package

fast-http.parser.

Source

parser.lisp.

Function: parse-header-value-parameters (data &key header-value-callback header-parameter-key-callback header-parameter-value-callback)
Package

fast-http.parser.

Source

parser.lisp.

Function: parse-header-value-transfer-encoding (data start end)
Package

fast-http.parser.

Source

parser.lisp.

Function: parse-headers (http callbacks data start end)
Package

fast-http.parser.

Source

parser.lisp.

Function: parse-http-version (data start end)
Package

fast-http.parser.

Source

parser.lisp.

Function: parse-method (data start end)
Package

fast-http.parser.

Source

parser.lisp.

Function: parse-status-code (http callbacks data start end)
Package

fast-http.parser.

Source

parser.lisp.

Function: parse-url (data start end)
Package

fast-http.parser.

Source

parser.lisp.

Function: position-not-whitespace (string &key from-end)
Package

fast-http.util.

Source

util.lisp.

Function: read-body-data (http callbacks data start end)
Package

fast-http.parser.

Source

parser.lisp.

Function: unhex-byte (byte)
Package

fast-http.parser.

Source

parser.lisp.


6.2.5 Conditions

Condition: expect-failed
Package

fast-http.parser.

Source

parser.lisp.

Direct superclasses

parsing-error.

Direct slots
Slot: description
Package

fast-http.error.

Initform

(quote "expect failed")


Appendix A Indexes


A.1 Concepts


A.2 Functions

Jump to:   %   (  
A   B   C   D   F   H   L   M   N   P   R   T   U  
Index Entry  Section

%
%whitespacep: Private ordinary functions

(
(setf callbacks-body): Private ordinary functions
(setf callbacks-first-line): Private ordinary functions
(setf callbacks-header-field): Private ordinary functions
(setf callbacks-header-value): Private ordinary functions
(setf callbacks-headers-complete): Private ordinary functions
(setf callbacks-message-begin): Private ordinary functions
(setf callbacks-message-complete): Private ordinary functions
(setf callbacks-status): Private ordinary functions
(setf callbacks-url): Private ordinary functions
(setf http-chunked-p): Public ordinary functions
(setf http-content-length): Public ordinary functions
(setf http-header-read): Public ordinary functions
(setf http-headers): Public ordinary functions
(setf http-major-version): Public ordinary functions
(setf http-mark): Public ordinary functions
(setf http-method): Public ordinary functions
(setf http-minor-version): Public ordinary functions
(setf http-resource): Public ordinary functions
(setf http-state): Public ordinary functions
(setf http-status): Public ordinary functions
(setf http-status-text): Public ordinary functions
(setf http-upgrade-p): Public ordinary functions
(setf ll-multipart-parser-body-buffer): Private ordinary functions
(setf ll-multipart-parser-body-mark): Private ordinary functions
(setf ll-multipart-parser-boundary): Private ordinary functions
(setf ll-multipart-parser-boundary-buffer): Private ordinary functions
(setf ll-multipart-parser-boundary-mark): Private ordinary functions
(setf ll-multipart-parser-header-parser): Private ordinary functions
(setf ll-multipart-parser-state): Public ordinary functions

A
alpha-byte-char-p: Public ordinary functions
alpha-byte-char-to-lower-char: Public ordinary functions
alphanumeric-byte-char-p: Public ordinary functions
append-byte-vectors: Public ordinary functions
ascii-octets-to-lower-string: Public ordinary functions
ascii-octets-to-string: Public ordinary functions

B
byte-to-ascii-lower: Private ordinary functions

C
callback-data: Private macros
callback-notify: Private macros
callbacks-body: Private ordinary functions
callbacks-first-line: Private ordinary functions
callbacks-header-field: Private ordinary functions
callbacks-header-value: Private ordinary functions
callbacks-headers-complete: Private ordinary functions
callbacks-message-begin: Private ordinary functions
callbacks-message-complete: Private ordinary functions
callbacks-p: Private ordinary functions
callbacks-status: Private ordinary functions
callbacks-url: Private ordinary functions
case-byte: Public macros
casev: Public macros
casev=: Public macros
copy-callbacks: Private ordinary functions
copy-http: Private ordinary functions
copy-http-request: Private ordinary functions
copy-http-response: Private ordinary functions
copy-ll-multipart-parser: Private ordinary functions

D
defun-careful: Public macros
defun-insane: Public macros
defun-speedy: Public macros
digit-byte-char-p: Public ordinary functions
digit-byte-char-to-integer: Public ordinary functions

F
find-boundary: Private ordinary functions
Function, %whitespacep: Private ordinary functions
Function, (setf callbacks-body): Private ordinary functions
Function, (setf callbacks-first-line): Private ordinary functions
Function, (setf callbacks-header-field): Private ordinary functions
Function, (setf callbacks-header-value): Private ordinary functions
Function, (setf callbacks-headers-complete): Private ordinary functions
Function, (setf callbacks-message-begin): Private ordinary functions
Function, (setf callbacks-message-complete): Private ordinary functions
Function, (setf callbacks-status): Private ordinary functions
Function, (setf callbacks-url): Private ordinary functions
Function, (setf http-chunked-p): Public ordinary functions
Function, (setf http-content-length): Public ordinary functions
Function, (setf http-header-read): Public ordinary functions
Function, (setf http-headers): Public ordinary functions
Function, (setf http-major-version): Public ordinary functions
Function, (setf http-mark): Public ordinary functions
Function, (setf http-method): Public ordinary functions
Function, (setf http-minor-version): Public ordinary functions
Function, (setf http-resource): Public ordinary functions
Function, (setf http-state): Public ordinary functions
Function, (setf http-status): Public ordinary functions
Function, (setf http-status-text): Public ordinary functions
Function, (setf http-upgrade-p): Public ordinary functions
Function, (setf ll-multipart-parser-body-buffer): Private ordinary functions
Function, (setf ll-multipart-parser-body-mark): Private ordinary functions
Function, (setf ll-multipart-parser-boundary): Private ordinary functions
Function, (setf ll-multipart-parser-boundary-buffer): Private ordinary functions
Function, (setf ll-multipart-parser-boundary-mark): Private ordinary functions
Function, (setf ll-multipart-parser-header-parser): Private ordinary functions
Function, (setf ll-multipart-parser-state): Public ordinary functions
Function, alpha-byte-char-p: Public ordinary functions
Function, alpha-byte-char-to-lower-char: Public ordinary functions
Function, alphanumeric-byte-char-p: Public ordinary functions
Function, append-byte-vectors: Public ordinary functions
Function, ascii-octets-to-lower-string: Public ordinary functions
Function, ascii-octets-to-string: Public ordinary functions
Function, byte-to-ascii-lower: Private ordinary functions
Function, callbacks-body: Private ordinary functions
Function, callbacks-first-line: Private ordinary functions
Function, callbacks-header-field: Private ordinary functions
Function, callbacks-header-value: Private ordinary functions
Function, callbacks-headers-complete: Private ordinary functions
Function, callbacks-message-begin: Private ordinary functions
Function, callbacks-message-complete: Private ordinary functions
Function, callbacks-p: Private ordinary functions
Function, callbacks-status: Private ordinary functions
Function, callbacks-url: Private ordinary functions
Function, copy-callbacks: Private ordinary functions
Function, copy-http: Private ordinary functions
Function, copy-http-request: Private ordinary functions
Function, copy-http-response: Private ordinary functions
Function, copy-ll-multipart-parser: Private ordinary functions
Function, digit-byte-char-p: Public ordinary functions
Function, digit-byte-char-to-integer: Public ordinary functions
Function, find-boundary: Private ordinary functions
Function, http-chunked-p: Public ordinary functions
Function, http-content-length: Public ordinary functions
Function, http-header-read: Public ordinary functions
Function, http-headers: Public ordinary functions
Function, http-major-version: Public ordinary functions
Function, http-mark: Public ordinary functions
Function, http-message-needs-eof-p: Private ordinary functions
Function, http-method: Public ordinary functions
Function, http-minor-version: Public ordinary functions
Function, http-multipart-parse: Public ordinary functions
Function, http-p: Public ordinary functions
Function, http-request-p: Public ordinary functions
Function, http-resource: Public ordinary functions
Function, http-response-p: Public ordinary functions
Function, http-state: Public ordinary functions
Function, http-status: Public ordinary functions
Function, http-status-text: Public ordinary functions
Function, http-upgrade-p: Public ordinary functions
Function, http-version: Public ordinary functions
Function, ll-multipart-parser-body-buffer: Private ordinary functions
Function, ll-multipart-parser-body-mark: Private ordinary functions
Function, ll-multipart-parser-boundary: Private ordinary functions
Function, ll-multipart-parser-boundary-buffer: Private ordinary functions
Function, ll-multipart-parser-boundary-mark: Private ordinary functions
Function, ll-multipart-parser-header-parser: Private ordinary functions
Function, ll-multipart-parser-p: Private ordinary functions
Function, ll-multipart-parser-state: Public ordinary functions
Function, make-callbacks: Public ordinary functions
Function, make-collector: Public ordinary functions
Function, make-http: Public ordinary functions
Function, make-http-request: Public ordinary functions
Function, make-http-response: Public ordinary functions
Function, make-ll-multipart-parser: Public ordinary functions
Function, make-multipart-parser: Public ordinary functions
Function, make-parser: Public ordinary functions
Function, mark-byte-char-p: Public ordinary functions
Function, number-string-p: Public ordinary functions
Function, parse-body: Private ordinary functions
Function, parse-chunked-body: Private ordinary functions
Function, parse-header-field-and-value: Private ordinary functions
Function, parse-header-line: Private ordinary functions
Function, parse-header-value: Private ordinary functions
Function, parse-header-value-content-length: Private ordinary functions
Function, parse-header-value-parameters: Private ordinary functions
Function, parse-header-value-transfer-encoding: Private ordinary functions
Function, parse-headers: Private ordinary functions
Function, parse-http-version: Private ordinary functions
Function, parse-method: Private ordinary functions
Function, parse-request: Public ordinary functions
Function, parse-response: Public ordinary functions
Function, parse-status-code: Private ordinary functions
Function, parse-url: Private ordinary functions
Function, position-not-whitespace: Private ordinary functions
Function, read-body-data: Private ordinary functions
Function, unhex-byte: Private ordinary functions

H
http-chunked-p: Public ordinary functions
http-content-length: Public ordinary functions
http-header-read: Public ordinary functions
http-headers: Public ordinary functions
http-major-version: Public ordinary functions
http-mark: Public ordinary functions
http-message-needs-eof-p: Private ordinary functions
http-method: Public ordinary functions
http-minor-version: Public ordinary functions
http-multipart-parse: Public ordinary functions
http-p: Public ordinary functions
http-request-p: Public ordinary functions
http-resource: Public ordinary functions
http-response-p: Public ordinary functions
http-state: Public ordinary functions
http-status: Public ordinary functions
http-status-text: Public ordinary functions
http-upgrade-p: Public ordinary functions
http-version: Public ordinary functions

L
ll-multipart-parser-body-buffer: Private ordinary functions
ll-multipart-parser-body-mark: Private ordinary functions
ll-multipart-parser-boundary: Private ordinary functions
ll-multipart-parser-boundary-buffer: Private ordinary functions
ll-multipart-parser-boundary-mark: Private ordinary functions
ll-multipart-parser-header-parser: Private ordinary functions
ll-multipart-parser-p: Private ordinary functions
ll-multipart-parser-state: Public ordinary functions

M
Macro, callback-data: Private macros
Macro, callback-notify: Private macros
Macro, case-byte: Public macros
Macro, casev: Public macros
Macro, casev=: Public macros
Macro, defun-careful: Public macros
Macro, defun-insane: Public macros
Macro, defun-speedy: Public macros
Macro, tagcase: Public macros
Macro, tagcasev: Public macros
Macro, tagcasev=: Public macros
make-callbacks: Public ordinary functions
make-collector: Public ordinary functions
make-http: Public ordinary functions
make-http-request: Public ordinary functions
make-http-response: Public ordinary functions
make-ll-multipart-parser: Public ordinary functions
make-multipart-parser: Public ordinary functions
make-parser: Public ordinary functions
mark-byte-char-p: Public ordinary functions

N
number-string-p: Public ordinary functions

P
parse-body: Private ordinary functions
parse-chunked-body: Private ordinary functions
parse-header-field-and-value: Private ordinary functions
parse-header-line: Private ordinary functions
parse-header-value: Private ordinary functions
parse-header-value-content-length: Private ordinary functions
parse-header-value-parameters: Private ordinary functions
parse-header-value-transfer-encoding: Private ordinary functions
parse-headers: Private ordinary functions
parse-http-version: Private ordinary functions
parse-method: Private ordinary functions
parse-request: Public ordinary functions
parse-response: Public ordinary functions
parse-status-code: Private ordinary functions
parse-url: Private ordinary functions
position-not-whitespace: Private ordinary functions

R
read-body-data: Private ordinary functions

T
tagcase: Public macros
tagcasev: Public macros
tagcasev=: Public macros

U
unhex-byte: Private ordinary functions


A.3 Variables

Jump to:   *   +  
B   C   D   E   F   H   M   R   S   U  
Index Entry  Section

*
*careful-declaration*: Private special variables
*insane-declaration*: Private special variables
*speedy-declaration*: Private special variables

+
+body-almost-done+: Private constants
+body-done+: Private constants
+body-start+: Private constants
+cr+: Public constants
+crlf+: Public constants
+dash+: Public constants
+header-field-start+: Private constants
+lf+: Public constants
+looking-for-delimiter+: Private constants
+max-header-line+: Private constants
+maybe-delimiter-first-dash+: Private constants
+maybe-delimiter-second-dash+: Private constants
+maybe-delimiter-start+: Private constants
+page+: Public constants
+parsing-delimiter+: Private constants
+parsing-delimiter-almost-done+: Private constants
+parsing-delimiter-dash+: Private constants
+parsing-delimiter-dash-start+: Private constants
+parsing-delimiter-done+: Private constants
+parsing-delimiter-end+: Private constants
+space+: Public constants
+state-body+: Public constants
+state-chunk-body-end-crlf+: Public constants
+state-chunk-size+: Public constants
+state-first-line+: Public constants
+state-headers+: Public constants
+state-trailing-headers+: Public constants
+tab+: Public constants
+tokens+: Private constants
+unhex+: Private constants

B
body: Public structures
body-buffer: Public structures
body-mark: Public structures
boundary: Public structures
boundary-buffer: Public structures
boundary-mark: Public structures

C
chunked-p: Public structures
code: Public conditions
Constant, +body-almost-done+: Private constants
Constant, +body-done+: Private constants
Constant, +body-start+: Private constants
Constant, +cr+: Public constants
Constant, +crlf+: Public constants
Constant, +dash+: Public constants
Constant, +header-field-start+: Private constants
Constant, +lf+: Public constants
Constant, +looking-for-delimiter+: Private constants
Constant, +max-header-line+: Private constants
Constant, +maybe-delimiter-first-dash+: Private constants
Constant, +maybe-delimiter-second-dash+: Private constants
Constant, +maybe-delimiter-start+: Private constants
Constant, +page+: Public constants
Constant, +parsing-delimiter+: Private constants
Constant, +parsing-delimiter-almost-done+: Private constants
Constant, +parsing-delimiter-dash+: Private constants
Constant, +parsing-delimiter-dash-start+: Private constants
Constant, +parsing-delimiter-done+: Private constants
Constant, +parsing-delimiter-end+: Private constants
Constant, +space+: Public constants
Constant, +state-body+: Public constants
Constant, +state-chunk-body-end-crlf+: Public constants
Constant, +state-chunk-size+: Public constants
Constant, +state-first-line+: Public constants
Constant, +state-headers+: Public constants
Constant, +state-trailing-headers+: Public constants
Constant, +tab+: Public constants
Constant, +tokens+: Private constants
Constant, +unhex+: Private constants
content-length: Public structures

D
description: Public conditions
description: Public conditions
description: Public conditions
description: Public conditions
description: Public conditions
description: Public conditions
description: Public conditions
description: Public conditions
description: Public conditions
description: Public conditions
description: Public conditions
description: Public conditions
description: Public conditions
description: Public conditions
description: Public conditions
description: Public conditions
description: Public conditions
description: Public conditions
description: Public conditions
description: Public conditions
description: Public conditions
description: Public conditions
description: Public conditions
description: Public conditions
description: Public conditions
description: Public conditions
description: Public conditions
description: Public conditions
description: Public conditions
description: Public conditions
description: Public conditions
description: Public conditions
description: Public conditions
description: Public conditions
description: Public conditions
description: Public conditions
description: Private conditions

E
error: Public conditions

F
first-line: Public structures
form: Public conditions

H
header-field: Public structures
header-parser: Public structures
header-read: Public structures
header-value: Public structures
headers: Public structures
headers-complete: Public structures

M
major-version: Public structures
mark: Public structures
message-begin: Public structures
message-complete: Public structures
method: Public structures
minor-version: Public structures

R
resource: Public structures

S
Slot, body: Public structures
Slot, body-buffer: Public structures
Slot, body-mark: Public structures
Slot, boundary: Public structures
Slot, boundary-buffer: Public structures
Slot, boundary-mark: Public structures
Slot, chunked-p: Public structures
Slot, code: Public conditions
Slot, content-length: Public structures
Slot, description: Public conditions
Slot, description: Public conditions
Slot, description: Public conditions
Slot, description: Public conditions
Slot, description: Public conditions
Slot, description: Public conditions
Slot, description: Public conditions
Slot, description: Public conditions
Slot, description: Public conditions
Slot, description: Public conditions
Slot, description: Public conditions
Slot, description: Public conditions
Slot, description: Public conditions
Slot, description: Public conditions
Slot, description: Public conditions
Slot, description: Public conditions
Slot, description: Public conditions
Slot, description: Public conditions
Slot, description: Public conditions
Slot, description: Public conditions
Slot, description: Public conditions
Slot, description: Public conditions
Slot, description: Public conditions
Slot, description: Public conditions
Slot, description: Public conditions
Slot, description: Public conditions
Slot, description: Public conditions
Slot, description: Public conditions
Slot, description: Public conditions
Slot, description: Public conditions
Slot, description: Public conditions
Slot, description: Public conditions
Slot, description: Public conditions
Slot, description: Public conditions
Slot, description: Public conditions
Slot, description: Public conditions
Slot, description: Private conditions
Slot, error: Public conditions
Slot, first-line: Public structures
Slot, form: Public conditions
Slot, header-field: Public structures
Slot, header-parser: Public structures
Slot, header-read: Public structures
Slot, header-value: Public structures
Slot, headers: Public structures
Slot, headers-complete: Public structures
Slot, major-version: Public structures
Slot, mark: Public structures
Slot, message-begin: Public structures
Slot, message-complete: Public structures
Slot, method: Public structures
Slot, minor-version: Public structures
Slot, resource: Public structures
Slot, state: Public structures
Slot, state: Public structures
Slot, status: Public structures
Slot, status: Public structures
Slot, status-code: Public conditions
Slot, status-text: Public structures
Slot, upgrade-p: Public structures
Slot, url: Public structures
Special Variable, *careful-declaration*: Private special variables
Special Variable, *insane-declaration*: Private special variables
Special Variable, *speedy-declaration*: Private special variables
state: Public structures
state: Public structures
status: Public structures
status: Public structures
status-code: Public conditions
status-text: Public structures

U
upgrade-p: Public structures
url: Public structures


A.4 Data types

Jump to:   B   C   E   F   H   I   L   M   P   S   T   U  
Index Entry  Section

B
byte-vector.lisp: The fast-http/src/byte-vector․lisp file

C
callback-error: Public conditions
callbacks: Public structures
cb-body: Public conditions
cb-first-line: Public conditions
cb-header-field: Public conditions
cb-header-value: Public conditions
cb-headers-complete: Public conditions
cb-message-begin: Public conditions
cb-message-complete: Public conditions
cb-status: Public conditions
cb-url: Public conditions
closed-connection: Public conditions
Condition, callback-error: Public conditions
Condition, cb-body: Public conditions
Condition, cb-first-line: Public conditions
Condition, cb-header-field: Public conditions
Condition, cb-header-value: Public conditions
Condition, cb-headers-complete: Public conditions
Condition, cb-message-begin: Public conditions
Condition, cb-message-complete: Public conditions
Condition, cb-status: Public conditions
Condition, cb-url: Public conditions
Condition, closed-connection: Public conditions
Condition, eof: Public conditions
Condition, expect-failed: Private conditions
Condition, fast-http-error: Public conditions
Condition, header-overflow: Public conditions
Condition, header-value-parsing-error: Public conditions
Condition, invalid-boundary: Public conditions
Condition, invalid-chunk-size: Public conditions
Condition, invalid-constant: Public conditions
Condition, invalid-content-length: Public conditions
Condition, invalid-eof-state: Public conditions
Condition, invalid-fragment: Public conditions
Condition, invalid-header-token: Public conditions
Condition, invalid-header-value: Public conditions
Condition, invalid-host: Public conditions
Condition, invalid-internal-state: Public conditions
Condition, invalid-method: Public conditions
Condition, invalid-multipart-body: Public conditions
Condition, invalid-parameter-key: Public conditions
Condition, invalid-parameter-value: Public conditions
Condition, invalid-path: Public conditions
Condition, invalid-port: Public conditions
Condition, invalid-query-string: Public conditions
Condition, invalid-status: Public conditions
Condition, invalid-url: Public conditions
Condition, invalid-version: Public conditions
Condition, lf-expected: Public conditions
Condition, multipart-parsing-error: Public conditions
Condition, parsing-error: Public conditions
Condition, paused-error: Public conditions
Condition, strict-error: Public conditions
Condition, unknown-error: Public conditions

E
eof: Public conditions
error.lisp: The fast-http/src/error․lisp file
expect-failed: Private conditions

F
fast-http: The fast-http system
fast-http: The fast-http package
fast-http-asd: The fast-http-asd package
fast-http-error: Public conditions
fast-http.asd: The fast-http/fast-http․asd file
fast-http.byte-vector: The fast-http․byte-vector package
fast-http.error: The fast-http․error package
fast-http.http: The fast-http․http package
fast-http.lisp: The fast-http/src/fast-http․lisp file
fast-http.multipart-parser: The fast-http․multipart-parser package
fast-http.parser: The fast-http․parser package
fast-http.util: The fast-http․util package
File, byte-vector.lisp: The fast-http/src/byte-vector․lisp file
File, error.lisp: The fast-http/src/error․lisp file
File, fast-http.asd: The fast-http/fast-http․asd file
File, fast-http.lisp: The fast-http/src/fast-http․lisp file
File, http.lisp: The fast-http/src/http․lisp file
File, multipart-parser.lisp: The fast-http/src/multipart-parser․lisp file
File, parser.lisp: The fast-http/src/parser․lisp file
File, util.lisp: The fast-http/src/util․lisp file

H
header-overflow: Public conditions
header-value-parsing-error: Public conditions
http: Public structures
http-request: Public structures
http-response: Public structures
http.lisp: The fast-http/src/http․lisp file

I
invalid-boundary: Public conditions
invalid-chunk-size: Public conditions
invalid-constant: Public conditions
invalid-content-length: Public conditions
invalid-eof-state: Public conditions
invalid-fragment: Public conditions
invalid-header-token: Public conditions
invalid-header-value: Public conditions
invalid-host: Public conditions
invalid-internal-state: Public conditions
invalid-method: Public conditions
invalid-multipart-body: Public conditions
invalid-parameter-key: Public conditions
invalid-parameter-value: Public conditions
invalid-path: Public conditions
invalid-port: Public conditions
invalid-query-string: Public conditions
invalid-status: Public conditions
invalid-url: Public conditions
invalid-version: Public conditions

L
lf-expected: Public conditions
ll-multipart-parser: Public structures

M
Module, src: The fast-http/src module
multipart-parser.lisp: The fast-http/src/multipart-parser․lisp file
multipart-parsing-error: Public conditions

P
Package, fast-http: The fast-http package
Package, fast-http-asd: The fast-http-asd package
Package, fast-http.byte-vector: The fast-http․byte-vector package
Package, fast-http.error: The fast-http․error package
Package, fast-http.http: The fast-http․http package
Package, fast-http.multipart-parser: The fast-http․multipart-parser package
Package, fast-http.parser: The fast-http․parser package
Package, fast-http.util: The fast-http․util package
parser.lisp: The fast-http/src/parser․lisp file
parsing-error: Public conditions
paused-error: Public conditions
pointer: Public types

S
simple-byte-vector: Public types
src: The fast-http/src module
status-code: Public types
strict-error: Public conditions
Structure, callbacks: Public structures
Structure, http: Public structures
Structure, http-request: Public structures
Structure, http-response: Public structures
Structure, ll-multipart-parser: Public structures
System, fast-http: The fast-http system

T
Type, pointer: Public types
Type, simple-byte-vector: Public types
Type, status-code: Public types

U
unknown-error: Public conditions
util.lisp: The fast-http/src/util․lisp file