5.1. http_server — HTTP server¶
A HTTP server serves HTTP client requests, typically from a web browser.
A HTTP server can be wrapped in SSL, a secutiry layer, to create a HTTPS server.
Source code: src/inet/http_server.h, src/inet/http_server.c
Test code: tst/inet/http_server/main.c
Test coverage: src/inet/http_server.c
Example code: examples/http_server/main.c, examples/https_server/main.c
Typedefs
-
typedef int (*
http_server_route_callback_t)(struct http_server_connection_t *connection_p, struct http_server_request_t *request_p)¶
Enums
-
enum
http_server_request_action_t¶ Request action types.
Values:
-
http_server_request_action_get_t= 0¶
-
http_server_request_action_post_t= 1¶
-
-
enum
http_server_content_type_t¶ Content type.
Values:
-
http_server_content_type_text_plain_t= 0¶
-
http_server_content_type_text_html_t= 1¶
-
Functions
-
int
http_server_init(struct http_server_t *self_p, struct http_server_listener_t *listener_p, struct http_server_connection_t *connections_p, const char *root_path_p, const struct http_server_route_t *routes_p, http_server_route_callback_t on_no_route)¶ Initialize given http server with given root path and maximum number of clients.
- Return
- zero(0) or negative error code.
- Parameters
self_p: Http server to initialize.listener_p: Listener.connections_p: A NULL terminated list of connections.root_path_p: Working directory for the connection threads.routes_p: An array of routes.on_no_route: Callback called for all requests without a matching route in route_p.
-
int
http_server_wrap_ssl(struct http_server_t *self_p, struct ssl_context_t *context_p)¶ Wrap given HTTP server in SSL, to make it secure.
This function must be called after
http_server_init()and beforehttp_server_start().- Return
- zero(0) or negative error code.
- Parameters
self_p: Http server to wrap in SSL.context_p: SSL context to wrap the server in.
-
int
http_server_start(struct http_server_t *self_p)¶ Start given HTTP server.
Spawn the threads and start listening for connections.
- Return
- zero(0) or negative error code.
- Parameters
self_p: Http server.
-
int
http_server_stop(struct http_server_t *self_p)¶ Stop given HTTP server.
Closes the listener and all open connections, and then kills the threads.
- Return
- zero(0) or negative error code.
- Parameters
self_p: Http server.
-
int
http_server_response_write(struct http_server_connection_t *connection_p, struct http_server_request_t *request_p, struct http_server_response_t *response_p)¶ Write given HTTP response to given connected client. This function should only be called from the route callbacks to respond to given request.
- Return
- zero(0) or negative error code.
- Parameters
connection_p: Current connection.request_p: Current request.response_p: Current response. Ifbuf_pin the response to NULL this function will only write the HTTP header, including the size, to the socket. After this function returns write the payload by callingsocket_write().
-
struct
http_server_request_t¶ - #include <http_server.h>
HTTP request.
Public Members
-
char
path[64]¶
-
int
present¶
-
char
value[20]¶
-
struct http_server_request_t::@56::@57 http_server_request_t::sec_websocket_key
-
struct http_server_request_t::@56::@58 http_server_request_t::content_type
-
long
value
-
struct http_server_request_t::@56::@59 http_server_request_t::content_length
-
struct http_server_request_t::@56::@60 http_server_request_t::authorization
-
struct http_server_request_t::@56::@61 http_server_request_t::expect
-
struct http_server_request_t::@56 http_server_request_t::headers
-
char
-
struct
http_server_response_t¶ - #include <http_server.h>
HTTP response.
-
struct
http_server_listener_t¶
-
struct
http_server_connection_t¶
-
struct
http_server_route_t¶ - #include <http_server.h>
Call given callback for given path.
-
struct
http_server_t¶ Public Members
-
const char *
root_path_p¶
-
const struct http_server_route_t *
routes_p¶
-
http_server_route_callback_t
on_no_route¶
-
struct http_server_listener_t *
listener_p¶
-
struct http_server_connection_t *
connections_p¶
-
struct ssl_context_t *
ssl_context_p¶
-
const char *