Commit 9101cd03 authored by Alexander Alashkin's avatar Alexander Alashkin Committed by Cesanta Bot

Use lld for ID

PUBLISHED_FROM=1246247fc29eb9a75b986ff7bb2d2350a52c03fc
parent 4b2d3f5f
...@@ -10,13 +10,13 @@ signature: | ...@@ -10,13 +10,13 @@ signature: |
const char *post_data); const char *post_data);
--- ---
Helper function that creates an outbound HTTP connection. Helper function that creates outbound HTTP connection.
`url` is a URL to fetch. It must be properly URL-encoded, e.g. have `url` is a URL to fetch. It must be properly URL-encoded, e.g. have
no spaces, etc. By default, `mg_connect_http()` sends the Connection and no spaces, etc. By default, `mg_connect_http()` sends Connection and
Host headers. `extra_headers` is an extra HTTP header to send, e.g. Host headers. `extra_headers` is an extra HTTP headers to send, e.g.
`"User-Agent: my-app\r\n"`. `"User-Agent: my-app\r\n"`.
If `post_data` is NULL, then a GET request is created. Otherwise, a POST request If `post_data` is NULL, then GET request is created. Otherwise, POST request
is created with the specified POST data. Note that if the data being posted is created with the specified POST data. Note that if the data being posted
is a form submission, the `Content-Type` header should be set accordingly is a form submission, the `Content-Type` header should be set accordingly
(see example below). (see example below).
......
...@@ -11,8 +11,8 @@ signature: | ...@@ -11,8 +11,8 @@ signature: |
const char *post_data); const char *post_data);
--- ---
Helper function that creates an outbound HTTP connection. Helper function that creates outbound HTTP connection.
Mostly identical to mg_connect_http, but allows you to provide extra parameters Mostly identical to mg_connect_http, but allows to provide extra parameters
(for example, SSL parameters) (for example, SSL parameters
...@@ -13,7 +13,7 @@ Helper function that creates an outbound WebSocket connection. ...@@ -13,7 +13,7 @@ Helper function that creates an outbound WebSocket connection.
`url` is a URL to connect to. It must be properly URL-encoded, e.g. have `url` is a URL to connect to. It must be properly URL-encoded, e.g. have
no spaces, etc. By default, `mg_connect_ws()` sends Connection and no spaces, etc. By default, `mg_connect_ws()` sends Connection and
Host headers. `extra_headers` is an extra HTTP header to send, e.g. Host headers. `extra_headers` is an extra HTTP headers to send, e.g.
`"User-Agent: my-app\r\n"`. `"User-Agent: my-app\r\n"`.
If `protocol` is not NULL, then a `Sec-WebSocket-Protocol` header is sent. If `protocol` is not NULL, then a `Sec-WebSocket-Protocol` header is sent.
......
...@@ -12,6 +12,6 @@ signature: | ...@@ -12,6 +12,6 @@ signature: |
Helper function that creates an outbound WebSocket connection Helper function that creates an outbound WebSocket connection
Mostly identical to `mg_connect_ws`, but allows to provide extra parameters Mostly identical to mg_connect_ws, but allows to provide extra parameters
(for example, SSL parameters) (for example, SSL parameters
...@@ -12,7 +12,7 @@ This handler can be used to implement file uploads with minimum code. ...@@ -12,7 +12,7 @@ This handler can be used to implement file uploads with minimum code.
This handler will process MG_EV_HTTP_PART_* events and store file data into This handler will process MG_EV_HTTP_PART_* events and store file data into
a local file. a local file.
`local_name_fn` will be invoked with whatever name was provided by the client `local_name_fn` will be invoked with whatever name was provided by the client
and will expect the name of the local file to open. A return value of NULL will and will expect the name of the local file to open. Return value of NULL will
abort file upload (client will get a "403 Forbidden" response). If non-null, abort file upload (client will get a "403 Forbidden" response). If non-null,
the returned string must be heap-allocated and will be freed by the caller. the returned string must be heap-allocated and will be freed by the caller.
Exception: it is ok to return the same string verbatim. Exception: it is ok to return the same string verbatim.
......
...@@ -6,7 +6,7 @@ signature: | ...@@ -6,7 +6,7 @@ signature: |
struct mg_str *mg_get_http_header(struct http_message *hm, const char *name); struct mg_str *mg_get_http_header(struct http_message *hm, const char *name);
--- ---
Searches and returns the header `name` in parsed HTTP message `hm`. Search and return header `name` in parsed HTTP message `hm`.
If header is not found, NULL is returned. Example: If header is not found, NULL is returned. Example:
struct mg_str *host_hdr = mg_get_http_header(hm, "Host"); struct mg_str *host_hdr = mg_get_http_header(hm, "Host");
......
...@@ -7,10 +7,10 @@ signature: | ...@@ -7,10 +7,10 @@ signature: |
size_t dst_len); size_t dst_len);
--- ---
Fetches a HTTP form variable. Fetch an HTTP form variable.
Fetches a variable `name` from a `buf` into a buffer specified by Fetch a variable `name` from a `buf` into a buffer specified by
`dst`, `dst_len`. The destination is always zero-terminated. Returns the length `dst`, `dst_len`. Destination is always zero-terminated. Return length
of a fetched variable. If not found, 0 is returned. `buf` must be of a fetched variable. If not found, 0 is returned. `buf` must be
valid url-encoded buffer. If destination is too small, `-1` is returned. valid url-encoded buffer. If destination is too small, `-1` is returned.
...@@ -7,6 +7,6 @@ signature: | ...@@ -7,6 +7,6 @@ signature: |
FILE *fp); FILE *fp);
--- ---
Authenticates a HTTP request against an opened password file. Authenticate HTTP request against opened passwords file.
Returns 1 if authenticated, 0 otherwise. Returns 1 if authenticated, 0 otherwise.
...@@ -9,5 +9,5 @@ signature: | ...@@ -9,5 +9,5 @@ signature: |
const char *passwd); const char *passwd);
--- ---
Creates digest authentication header for a client request. Create Digest authentication header for client request.
...@@ -7,17 +7,17 @@ signature: | ...@@ -7,17 +7,17 @@ signature: |
size_t buf_size); size_t buf_size);
--- ---
Parses the HTTP header `hdr`. Finds variable `var_name` and stores its value Parse HTTP header `hdr`. Find variable `var_name` and store it's value
in the buffer `buf`, `buf_size`. Returns 0 if variable not found, non-zero in the buffer `buf`, `buf_size`. Return 0 if variable not found, non-zero
otherwise. otherwise.
This function is supposed to parse This function is supposed to parse
cookies, authentication headers, etc. Example (error handling omitted): cookies, authentication headers, etcetera. Example (error handling omitted):
char user[20]; char user[20];
struct mg_str *hdr = mg_get_http_header(hm, "Authorization"); struct mg_str *hdr = mg_get_http_header(hm, "Authorization");
mg_http_parse_header(hdr, "username", user, sizeof(user)); mg_http_parse_header(hdr, "username", user, sizeof(user));
Returns the length of the variable's value. If buffer is not large enough, Return length of the variable's value. If buffer is not large enough,
or variable not found, 0 is returned. or variable not found, 0 is returned.
...@@ -6,10 +6,10 @@ signature: | ...@@ -6,10 +6,10 @@ signature: |
int mg_parse_http(const char *s, int n, struct http_message *hm, int is_req); int mg_parse_http(const char *s, int n, struct http_message *hm, int is_req);
--- ---
Parses a HTTP message. Parse a HTTP message.
`is_req` should be set to 1 if parsing a request, 0 if reply. `is_req` should be set to 1 if parsing request, 0 if reply.
Returns the number of bytes parsed. If HTTP message is Return number of bytes parsed. If HTTP message is
incomplete `0` is returned. On parse error, a negative number is returned. incomplete, `0` is returned. On parse error, negative number is returned.
...@@ -9,13 +9,13 @@ signature: | ...@@ -9,13 +9,13 @@ signature: |
size_t *chunk_len); size_t *chunk_len);
--- ---
Parses the buffer `buf`, `buf_len` that contains multipart form data chunks. Parse buffer `buf`, `buf_len` that contains multipart form data chunks.
Stores the chunk name in a `var_name`, `var_name_len` buffer. Store chunk name in a `var_name`, `var_name_len` buffer.
If a chunk is an uploaded file, then `file_name`, `file_name_len` is If a chunk is an uploaded file, then `file_name`, `file_name_len` is
filled with an uploaded file name. `chunk`, `chunk_len` filled with an uploaded file name. `chunk`, `chunk_len`
points to the chunk data. points to the chunk data.
Return: number of bytes to skip to the next chunk or 0 if there are Return: number of bytes to skip to the next chunk, or 0 if there are
no more chunks. no more chunks.
Usage example: Usage example:
......
...@@ -6,5 +6,5 @@ signature: | ...@@ -6,5 +6,5 @@ signature: |
void mg_printf_html_escape(struct mg_connection *nc, const char *fmt, ...); void mg_printf_html_escape(struct mg_connection *nc, const char *fmt, ...);
--- ---
Sends a printf-formatted HTTP chunk, escaping HTML tags. Send printf-formatted HTTP chunk, escaping HTML tags.
...@@ -6,6 +6,6 @@ signature: | ...@@ -6,6 +6,6 @@ signature: |
void mg_printf_http_chunk(struct mg_connection *nc, const char *fmt, ...); void mg_printf_http_chunk(struct mg_connection *nc, const char *fmt, ...);
--- ---
Sends a printf-formatted HTTP chunk. Send printf-formatted HTTP chunk.
Functionality is similar to `mg_send_http_chunk()`. Functionality is similar to `mg_send_http_chunk()`.
...@@ -7,8 +7,8 @@ signature: | ...@@ -7,8 +7,8 @@ signature: |
const char *fmt, ...); const char *fmt, ...);
--- ---
Sends WebSocket frame to the remote end. Send websocket frame to the remote end.
Like `mg_send_websocket_frame()`, but allows to create formatted messages Like `mg_send_websocket_frame()`, but allows to create formatted message
with `printf()`-like semantics. with `printf()`-like semantics.
...@@ -7,8 +7,8 @@ signature: | ...@@ -7,8 +7,8 @@ signature: |
mg_event_handler_t handler); mg_event_handler_t handler);
--- ---
Registers a callback for a specified http endpoint Register callback for specified http endpoint
Note: if callback is registered it is called instead of the Note: if callback is registered it is called instead of
callback provided in mg_bind callback provided in mg_bind
Example code snippet: Example code snippet:
......
...@@ -7,15 +7,15 @@ signature: | ...@@ -7,15 +7,15 @@ signature: |
int64_t content_length, const char *extra_headers); int64_t content_length, const char *extra_headers);
--- ---
Sends a response line and headers. Send response line and headers.
This function sends a response line with the `status_code`, and automatically This function sends response line with the `status_code`, and automatically
sends one header: either "Content-Length" or "Transfer-Encoding". sends one header: either "Content-Length", or "Transfer-Encoding".
If `content_length` is negative, then "Transfer-Encoding: chunked" header If `content_length` is negative, then "Transfer-Encoding: chunked" header
is sent, otherwise, "Content-Length" header is sent. is sent, otherwise, "Content-Length" header is sent.
NOTE: If `Transfer-Encoding` is `chunked`, then message body must be sent NOTE: If `Transfer-Encoding` is `chunked`, then message body must be sent
using `mg_send_http_chunk()` or `mg_printf_http_chunk()` functions. using `mg_send_http_chunk()` or `mg_printf_http_chunk()` functions.
Otherwise, `mg_send()` or `mg_printf()` must be used. Otherwise, `mg_send()` or `mg_printf()` must be used.
Extra headers could be set through `extra_headers`. Note `extra_headers` Extra headers could be set through `extra_headers` - and note `extra_headers`
must NOT be terminated by a new line. must NOT be terminated by a new line.
...@@ -6,16 +6,16 @@ signature: | ...@@ -6,16 +6,16 @@ signature: |
void mg_send_http_chunk(struct mg_connection *nc, const char *buf, size_t len); void mg_send_http_chunk(struct mg_connection *nc, const char *buf, size_t len);
--- ---
Sends buffer `buf` of size `len` to the client using chunked HTTP encoding. Send buffer `buf` of size `len` to the client using chunked HTTP encoding.
This function sends the buffer size as hex number + newline first, then This function first sends buffer size as hex number + newline, then
the buffer itself, then the newline. For example, buffer itself, then newline. For example,
`mg_send_http_chunk(nc, "foo", 3)` whill append the `3\r\nfoo\r\n` string to `mg_send_http_chunk(nc, "foo", 3)` whill append `3\r\nfoo\r\n` string to
the `nc->send_mbuf` output IO buffer. the `nc->send_mbuf` output IO buffer.
NOTE: The HTTP header "Transfer-Encoding: chunked" should be sent prior to NOTE: HTTP header "Transfer-Encoding: chunked" should be sent prior to
using this function. using this function.
NOTE: do not forget to send an empty chunk at the end of the response, NOTE: do not forget to send empty chunk at the end of the response,
to tell the client that everything was sent. Example: to tell the client that everything was sent. Example:
``` ```
......
...@@ -7,7 +7,7 @@ signature: | ...@@ -7,7 +7,7 @@ signature: |
const char *extra_headers); const char *extra_headers);
--- ---
Sends a response status line. Send response status line.
If `extra_headers` is not NULL, then `extra_headers` are also sent If `extra_headers` is not NULL, then `extra_headers` are also sent
after the reponse line. `extra_headers` must NOT end end with new line. after the reponse line. `extra_headers` must NOT end end with new line.
Example: Example:
......
...@@ -7,9 +7,9 @@ signature: | ...@@ -7,9 +7,9 @@ signature: |
const void *data, size_t data_len); const void *data, size_t data_len);
--- ---
Send WebSocket frame to the remote end. Send websocket frame to the remote end.
`op_and_flags` specifies the frame's type. It's one of: `op_and_flags` specifies frame's type, one of:
- WEBSOCKET_OP_CONTINUE - WEBSOCKET_OP_CONTINUE
- WEBSOCKET_OP_TEXT - WEBSOCKET_OP_TEXT
......
...@@ -7,7 +7,7 @@ signature: | ...@@ -7,7 +7,7 @@ signature: |
const struct mg_str *strings, int num_strings); const struct mg_str *strings, int num_strings);
--- ---
Sends multiple WebSocket frames. Send multiple websocket frames.
Like `mg_send_websocket_frame()`, but composes a frame from multiple buffers. Like `mg_send_websocket_frame()`, but composes a frame from multiple buffers.
...@@ -7,14 +7,14 @@ signature: | ...@@ -7,14 +7,14 @@ signature: |
const char *extra_headers); const char *extra_headers);
--- ---
Sends WebSocket handshake to the server. Send websocket handshake to the server.
`nc` must be a valid connection, connected to a server. `uri` is an URI `nc` must be a valid connection, connected to a server. `uri` is an URI
to fetch, `extra_headers` are extra HTTP headers to send or `NULL`. to fetch, extra_headers` is extra HTTP headers to send or `NULL`.
This function is intended to be used by the WebSocket client. This function is intended to be used by websocket client.
Note that the host header is mandatory in HTTP/1.1 and must be Note that the Host header is mandatory in HTTP/1.1 and must be
included in `extra_headers`. `mg_send_websocket_handshake2` offers included in `extra_headers`. `mg_send_websocket_handshake2` offers
a better API for that. a better API for that.
......
...@@ -8,12 +8,12 @@ signature: | ...@@ -8,12 +8,12 @@ signature: |
const char *extra_headers); const char *extra_headers);
--- ---
Send WebSocket handshake to the server. Send websocket handshake to the server.
`nc` must be a valid connection, connected to a server. `uri` is an URI `nc` must be a valid connection, connected to a server. `uri` is an URI
to fetch, `host` goes into the `Host` header, `protocol` goes into the to fetch, `host` goes into the `Host` header, `protocol` goes into the
`Sec-WebSocket-Proto` header (NULL to omit), `extra_headers` is an extra HTTP `Sec-WebSocket-Proto` header (NULL to omit), extra_headers` is extra HTTP
header to send or `NULL`. headers to send or `NULL`.
This function is intended to be used by the WebSocket client. This function is intended to be used by websocket client.
...@@ -7,7 +7,7 @@ signature: | ...@@ -7,7 +7,7 @@ signature: |
struct mg_serve_http_opts opts); struct mg_serve_http_opts opts);
--- ---
Serves given HTTP request according to the `options`. Serve given HTTP request according to the `options`.
Example code snippet: Example code snippet:
......
...@@ -6,42 +6,43 @@ signature: | ...@@ -6,42 +6,43 @@ signature: |
void mg_set_protocol_http_websocket(struct mg_connection *nc); void mg_set_protocol_http_websocket(struct mg_connection *nc);
--- ---
Attach a built-in HTTP event handler to a given connection. Attach built-in HTTP event handler to the given connection.
The user-defined event handler will receive the following extra events: User-defined event handler will receive following extra events:
- MG_EV_HTTP_REQUEST: HTTP request has arrived. Parsed HTTP request - MG_EV_HTTP_REQUEST: HTTP request has arrived. Parsed HTTP request
is passed as is passed as
`struct http_message` through the handler's `void *ev_data` pointer. `struct http_message` through the handler's `void *ev_data` pointer.
- MG_EV_HTTP_MULTIPART_REQUEST: A multipart POST request has been received. - MG_EV_HTTP_MULTIPART_REQUEST: A multipart POST request has received.
This event is sent before the body is parsed. After this the user This event is sent before body is parsed. After this user
should expect a sequence of MG_EV_HTTP_PART_BEGIN/DATA/END requests. should expect a sequence of MG_EV_HTTP_PART_BEGIN/DATA/END requests.
This is also the last time when headers and other request fields are This is also the last time when headers and other request fields are
accessible. accessible.
- MG_EV_HTTP_REPLY: HTTP reply has arrived. The parsed HTTP reply is passed as - MG_EV_HTTP_REPLY: HTTP reply has arrived. Parsed HTTP reply is passed as
`struct http_message` through the handler's `void *ev_data` pointer. `struct http_message` through the handler's `void *ev_data` pointer.
- MG_EV_HTTP_CHUNK: HTTP chunked-encoding chunk has arrived. - MG_EV_HTTP_CHUNK: HTTP chunked-encoding chunk has arrived.
The parsed HTTP reply is passed as `struct http_message` through the Parsed HTTP reply is passed as `struct http_message` through the
handler's `void *ev_data` pointer. `http_message::body` would contain handler's `void *ev_data` pointer. `http_message::body` would contain
incomplete, reassembled HTTP body. incomplete, reassembled HTTP body.
It will grow with every new chunk arrived and could It will grow with every new chunk arrived, and
potentially consume a lot of memory. An event handler may process potentially can consume a lot of memory. An event handler may process
the body as chunks are coming in, and signal Mongoose to delete processed the body as chunks are coming, and signal Mongoose to delete processed
body by setting `MG_F_DELETE_CHUNK` in `mg_connection::flags`. When body by setting `MG_F_DELETE_CHUNK` in `mg_connection::flags`. When
the last zero chunk is received, the last zero chunk is received,
Mongoose sends an `MG_EV_HTTP_REPLY` event with Mongoose sends `MG_EV_HTTP_REPLY` event with
the full reassembled body (if handler did not signal to delete chunks) or full reassembled body (if handler did not signal to delete chunks) or
with the empty body (if handler did signal to delete chunks). with empty body (if handler did signal to delete chunks).
- MG_EV_WEBSOCKET_HANDSHAKE_REQUEST: server has received WebSocket handshake - MG_EV_WEBSOCKET_HANDSHAKE_REQUEST: server has received websocket handshake
request. `ev_data` contains parsed HTTP request. request. `ev_data` contains parsed HTTP request.
- MG_EV_WEBSOCKET_HANDSHAKE_DONE: server has completed WebSocket handshake. - MG_EV_WEBSOCKET_HANDSHAKE_DONE: server has completed Websocket handshake.
`ev_data` is `NULL`. `ev_data` is `NULL`.
- MG_EV_WEBSOCKET_FRAME: new WebSocket frame has arrived. `ev_data` is - MG_EV_WEBSOCKET_FRAME: new websocket frame has arrived. `ev_data` is
`struct websocket_message *` `struct websocket_message *`
- MG_EV_HTTP_PART_BEGIN: new part of multipart message is started. - MG_EV_HTTP_PART_BEGIN: new part of multipart message is started,
Extra parameters are passed in mg_http_multipart_part extra parameters are passed in mg_http_multipart_part
- MG_EV_HTTP_PART_DATA: new portion of data from multiparted message has arrived. - MG_EV_HTTP_PART_DATA: new portion of data from multiparted message
No additional headers are available, only data and data size. no additional headers are available, only data and data size
- MG_EV_HTTP_PART_END: final boundary received. Marks the end of the multipart message. - MG_EV_HTTP_PART_END: final boundary received, analogue to maybe used to
find the end of packet
Note: Mongoose should be compiled with MG_ENABLE_HTTP_STREAMING_MULTIPART Note: Mongoose should be compiled with MG_ENABLE_HTTP_STREAMING_MULTIPART
to enable MG_EV_HTTP_MULTIPART_REQUEST, MG_EV_HTTP_REQUEST_END, to enable MG_EV_HTTP_MULTIPART_REQUEST, MG_EV_HTTP_REQUEST_END,
MG_EV_HTTP_REQUEST_CANCEL, MG_EV_HTTP_PART_BEGIN, MG_EV_HTTP_PART_DATA, MG_EV_HTTP_REQUEST_CANCEL, MG_EV_HTTP_PART_BEGIN, MG_EV_HTTP_PART_DATA,
......
...@@ -7,12 +7,12 @@ signature: | ...@@ -7,12 +7,12 @@ signature: |
int is_form_url_encoded); int is_form_url_encoded);
--- ---
Decodes URL-encoded string. Decode URL-encoded string.
Source string is specified by (`src`, `src_len`), and destination is Source string is specified by (`src`, `src_len`), and destination is
(`dst`, `dst_len`). If `is_form_url_encoded` is non-zero, then (`dst`, `dst_len`). If `is_form_url_encoded` is non-zero, then
`+` character is decoded as a blank space character. This function `+` character is decoded as a blank space character. This function
guarantees to `\0`-terminate the destination. If destination is too small, guarantees to `\0`-terminate the destination. If destination is too small,
then the source string is partially decoded and `-1` is returned. Otherwise, then source string is partially decoded and `-1` is returned. Otherwise,
a length of decoded string is returned, not counting final `\0`. a length of decoded string is returned, not counting final `\0`.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment