#include "civetweb.h"
#include <errno.h>
#include <fcntl.h>
#include <signal.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <stdint.h>
#include <inttypes.h>
#include <arpa/inet.h>
#include <ctype.h>
#include <dirent.h>
#include <grp.h>
#include <limits.h>
#include <netdb.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
#include <pthread.h>
#include <pwd.h>
#include <stdarg.h>
#include <stddef.h>
#include <stdio.h>
#include <string.h>
#include <sys/poll.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <sys/utsname.h>
#include <sys/wait.h>
#include <time.h>
#include <unistd.h>
#include <dlfcn.h>
#include "md5.inl"
#include "openssl_dl.inl"
#include "response.inl"
#include "handle_form.inl"
Classes | |
struct | ah |
struct | cgi_environment |
struct | de |
struct | dir_scan_data |
struct | mg_connection |
struct | mg_context |
struct | mg_domain_context |
struct | mg_file |
struct | mg_file_access |
struct | mg_file_stat |
struct | mg_handler_info |
struct | mg_http_method_info |
struct | mg_workerTLS |
struct | process_control_data |
struct | read_auth_file_struct |
struct | socket |
union | usa |
struct | vec |
struct | websocket_client_thread_data |
Macros | |
#define | __STDC_FORMAT_MACROS /* <inttypes.h> wants this for C++ */ |
#define | __STDC_LIMIT_MACROS /* C++ wants that for INT64_MAX */ |
#define | _DARWIN_UNLIMITED_SELECT |
#define | _FILE_OFFSET_BITS 64 /* Use 64-bit file offsets by default */ |
#define | _GNU_SOURCE /* for setgroups(), pthread_setname_np() */ |
#define | _LARGEFILE_SOURCE /* For fseeko(), ftello() */ |
#define | ARRAY_SIZE(array) (sizeof(array) / sizeof(array[0])) |
#define | calloc DO_NOT_USE_THIS_FUNCTION__USE_mg_calloc |
#define | CGI_ENVIRONMENT_SIZE (4096) /* in bytes */ |
#define | closesocket(a) (close(a)) |
#define | CRYPTO_LIB "libcrypto.so" |
#define | DEBUG_ASSERT(cond) |
#define | DEBUG_TRACE(fmt, ...) |
#define | ERRNO (errno) |
#define | ERROR_TRY_AGAIN(err) (((err) == EAGAIN) || ((err) == EWOULDBLOCK) || ((err) == EINTR)) |
#define | free DO_NOT_USE_THIS_FUNCTION__USE_mg_free |
#define | FUNCTION_MAY_BE_UNUSED |
#define | HEXTOI(x) (isdigit(x) ? (x - '0') : (x - 'W')) |
#define | HTTP1_only |
#define | IGNORE_UNUSED_RESULT(a) ((void)((a) && 1)) |
#define | INITIAL_DEPTH 9 |
#define | INT64_FMT PRId64 |
#define | INT64_MAX (9223372036854775807) |
#define | INVALID_SOCKET (-1) |
#define | IP_ADDR_STR_LEN (50) /* IPv6 hex string is 46 chars */ |
#define | malloc DO_NOT_USE_THIS_FUNCTION__USE_mg_malloc |
#define | MAX_CGI_ENVIR_VARS (256) /* in variables (count) */ |
#define | MAX_WORKER_THREADS (1024 * 64) /* in threads (count) */ |
#define | MD5_STATIC static |
#define | MG_BUF_LEN (1024 * 8) |
#define | mg_calloc_ctx(a, b, c) mg_calloc(a, b) |
#define | mg_closedir(x) (closedir(x)) |
#define | mg_cry DO_NOT_USE_THIS_FUNCTION__USE_mg_cry_internal |
#define | mg_cry_ctx_internal(ctx, fmt, ...) mg_cry_internal_wrap(NULL, ctx, __func__, __LINE__, fmt, __VA_ARGS__) |
#define | mg_cry_internal(conn, fmt, ...) mg_cry_internal_wrap(conn, NULL, __func__, __LINE__, fmt, __VA_ARGS__) |
#define | MG_FILE_COMPRESSION_SIZE_LIMIT (1024) /* in bytes */ |
#define | MG_FOPEN_MODE_APPEND (4) |
#define | MG_FOPEN_MODE_NONE (0) |
#define | MG_FOPEN_MODE_READ (1) |
#define | MG_FOPEN_MODE_WRITE (2) |
#define | mg_free_ctx(a, c) mg_free(a) |
#define | mg_get_option DO_NOT_USE_THIS_FUNCTION_INTERNALLY__access_directly |
#define | mg_malloc_ctx(a, c) mg_malloc(a) |
#define | mg_mkdir(conn, path, mode) (mkdir(path, mode)) |
#define | mg_opendir(conn, x) (opendir(x)) |
#define | mg_pollfd pollfd |
#define | mg_readdir(x) (readdir(x)) |
#define | mg_realloc_ctx(a, b, c) mg_realloc(a, b) |
#define | mg_remove(conn, x) (remove(x)) |
#define | mg_sleep(x) (usleep((x)*1000)) |
#define | mg_static_assert(cond, txt) extern char static_assert_replacement[(cond) ? 1 : -1] |
#define | MSG_NOSIGNAL (0) |
#define | NO_ALTERNATIVE_QUEUE |
#define | O_BINARY (0) |
#define | PASSWORDS_FILE_NAME ".htpasswd" |
#define | realloc DO_NOT_USE_THIS_FUNCTION__USE_mg_realloc |
#define | SHUTDOWN_BOTH (2) |
#define | SHUTDOWN_RD (0) |
#define | SHUTDOWN_WR (1) |
#define | snprintf DO_NOT_USE_THIS_FUNCTION__USE_mg_snprintf |
#define | SOCKET_TIMEOUT_QUANTUM (2000) /* in ms */ |
#define | SSL_LIB "libssl.so" |
#define | STOP_FLAG_ASSIGN(f, v) ((*(f)) = (v)) |
#define | STOP_FLAG_IS_TWO(f) ((*(f)) == 2) |
#define | STOP_FLAG_IS_ZERO(f) ((*(f)) == 0) |
#define | STRUCT_FILE_INITIALIZER |
#define | UINT64_FMT PRIu64 |
#define | USA_IN_PORT_UNSAFE(s) ((s)->sin.sin_port) |
#define | UTF8_PATH_MAX (PATH_MAX) |
#define | va_copy(x, y) ((x) = (y)) |
#define | vsnprintf_impl vsnprintf |
#define | WIN32_LEAN_AND_MEAN |
#define | WINCDECL |
Typedefs | |
typedef const void * | SOCK_OPT_TYPE |
typedef int | SOCKET |
typedef int volatile | stop_flag_t |
Functions | |
static int | abort_cgi_process (void *data) |
static void | accept_new_connection (const struct socket *listener, struct mg_context *ctx) |
static void | addenv (struct cgi_environment *env, const char *fmt,...) |
static int | alloc_vprintf (char **out_buf, char *prealloc_buf, size_t prealloc_size, const char *fmt, va_list ap) |
static int | alloc_vprintf2 (char **buf, const char *fmt, va_list ap) |
static int | authorize (struct mg_connection *conn, struct mg_file *filep, const char *realm) |
static void | bin2str (char *to, const unsigned char *p, size_t len) |
static int | check_acl (struct mg_context *phys_ctx, const union usa *sa) |
static int | check_authorization (struct mg_connection *conn, const char *path) |
static int | check_password (const char *method, const char *ha1, const char *uri, const char *nonce, const char *nc, const char *cnonce, const char *qop, const char *response) |
static void | close_all_listening_sockets (struct mg_context *ctx) |
static void | close_connection (struct mg_connection *conn) |
static void | close_socket_gracefully (struct mg_connection *conn) |
static int | compare_dir_entries (const void *p1, const void *p2) |
static int | connect_socket (struct mg_context *ctx, const char *host, int port, int use_ssl, char *ebuf, size_t ebuf_len, SOCKET *sock, union usa *sa) |
static void | construct_etag (char *buf, size_t buf_len, const struct mg_file_stat *filestat) |
static int | consume_socket (struct mg_context *ctx, struct socket *sp, int thread_index) |
static void | delete_file (struct mg_connection *conn, const char *path) |
static int | dir_scan_callback (struct de *de, void *data) |
static void | discard_unread_request_data (struct mg_connection *conn) |
static void | do_ssi_exec (struct mg_connection *conn, char *tag) |
static void | do_ssi_include (struct mg_connection *conn, const char *ssi, char *tag, int include_level) |
static int | extention_matches_script (struct mg_connection *conn, const char *filename) |
static int | extention_matches_template_text (struct mg_connection *conn, const char *filename) |
static struct mg_connection * | fake_connection (struct mg_connection *fc, struct mg_context *ctx) |
static void | fclose_on_exec (struct mg_file_access *filep, struct mg_connection *conn) |
static int | forward_body_data (struct mg_connection *conn, FILE *fp, SOCKET sock, SSL *ssl) |
static void | free_context (struct mg_context *ctx) |
static int | get_first_ssl_listener_index (const struct mg_context *ctx) |
static const char * | get_header (const struct mg_header *hdr, int num_hdr, const char *name) |
static void | get_host_from_request_info (struct vec *host, const struct mg_request_info *ri) |
static int | get_http_header_len (const char *buf, int buflen) |
static const struct mg_http_method_info * | get_http_method_info (const char *method) |
static const char * | get_http_version (const struct mg_connection *conn) |
static int | get_message (struct mg_connection *conn, char *ebuf, size_t ebuf_len, int *err) |
static void | get_mime_type (struct mg_connection *conn, const char *path, struct vec *vec) |
static int | get_month_index (const char *s) |
static int | get_option_index (const char *name) |
static const char * | get_proto_name (const struct mg_connection *conn) |
static uint64_t | get_random (void) |
static const char * | get_rel_url_at_current_server (const char *uri, const struct mg_connection *conn) |
static int | get_request (struct mg_connection *conn, char *ebuf, size_t ebuf_len, int *err) |
static int | get_request_handler (struct mg_connection *conn, int handler_type, mg_request_handler *handler, struct mg_websocket_subprotocols **subprotocols, mg_websocket_connect_handler *connect_handler, mg_websocket_ready_handler *ready_handler, mg_websocket_data_handler *data_handler, mg_websocket_close_handler *close_handler, mg_authorization_handler *auth_handler, void **cbdata, struct mg_handler_info **handler_info) |
static int | get_response (struct mg_connection *conn, char *ebuf, size_t ebuf_len, int *err) |
static void | get_system_name (char **sysName) |
static int | get_uri_type (const char *uri) |
static void | gmt_time_string (char *buf, size_t buf_len, time_t *t) |
static void | handle_cgi_request (struct mg_connection *conn, const char *prog, unsigned char cgi_config_idx) |
static void | handle_directory_request (struct mg_connection *conn, const char *dir) |
static void | handle_file_based_request (struct mg_connection *conn, const char *path, struct mg_file *filep) |
static void | handle_not_modified_static_file_request (struct mg_connection *conn, struct mg_file *filep) |
static void | handle_propfind (struct mg_connection *conn, const char *path, struct mg_file_stat *filep) |
static void | handle_request (struct mg_connection *) |
static void | handle_request_stat_log (struct mg_connection *conn) |
static void | handle_ssi_file_request (struct mg_connection *conn, const char *path, struct mg_file *filep) |
static void | handle_static_file_request (struct mg_connection *conn, const char *path, struct mg_file *filep, const char *mime_type, const char *additional_headers) |
static int | header_has_option (const char *header, const char *option) |
static const char * | header_val (const struct mg_connection *conn, const char *header) |
static int | hexdump2string (void *mem, int memlen, char *buf, int buflen) |
static void | init_connection (struct mg_connection *conn) |
static int | init_ssl_ctx (struct mg_context *phys_ctx, struct mg_domain_context *dom_ctx) |
static int | init_ssl_ctx_impl (struct mg_context *phys_ctx, struct mg_domain_context *dom_ctx, const char *pem, const char *chain) |
static int | initialize_openssl (char *ebuf, size_t ebuf_len) |
static void | interpret_uri (struct mg_connection *conn, char *filename, size_t filename_buf_len, struct mg_file_stat *filestat, int *is_found, int *is_script_resource, int *is_websocket_request, int *is_put_or_delete_request, int *is_template_text) |
static int | is_authorized_for_put (struct mg_connection *conn) |
static int | is_file_opened (const struct mg_file_access *fileacc) |
static int | is_in_script_path (const struct mg_connection *conn, const char *path) |
static int | is_not_modified (const struct mg_connection *conn, const struct mg_file_stat *filestat) |
static int | is_put_or_delete_method (const struct mg_connection *conn) |
static int | is_ssl_port_used (const char *ports) |
static int | is_valid_http_method (const char *method) |
static int | is_valid_port (unsigned long port) |
static void | legacy_init (const char **options) |
static void * | load_tls_dll (char *ebuf, size_t ebuf_len, const char *dll_name, struct ssl_func *sw, int *feature_missing) |
static void | log_access (const struct mg_connection *) |
static int | lowercase (const char *s) |
static void * | master_thread (void *thread_func_param) |
static void | master_thread_run (struct mg_context *ctx) |
static ptrdiff_t | match_prefix (const char *pattern, size_t pattern_len, const char *str) |
static ptrdiff_t | match_prefix_strlen (const char *pattern, const char *str) |
static ptrdiff_t | mg_atomic_dec (volatile ptrdiff_t *addr) |
static ptrdiff_t | mg_atomic_inc (volatile ptrdiff_t *addr) |
static __inline void * | mg_calloc (size_t a, size_t b) |
int | mg_check_digest_access_authentication (struct mg_connection *conn, const char *realm, const char *filename) |
unsigned | mg_check_feature (unsigned feature) |
void | mg_close_connection (struct mg_connection *conn) |
struct mg_connection * | mg_connect_client (const char *host, int port, int use_ssl, char *error_buffer, size_t error_buffer_size) |
static struct mg_connection * | mg_connect_client_impl (const struct mg_client_options *client_options, int use_ssl, char *ebuf, size_t ebuf_len) |
struct mg_connection * | mg_connect_client_secure (const struct mg_client_options *client_options, char *error_buffer, size_t error_buffer_size) |
struct mg_connection * | mg_connect_websocket_client (const char *host, int port, int use_ssl, char *error_buffer, size_t error_buffer_size, const char *path, const char *origin, mg_websocket_data_handler data_func, mg_websocket_close_handler close_func, void *user_data) |
struct mg_connection * | mg_connect_websocket_client_extensions (const char *host, int port, int use_ssl, char *error_buffer, size_t error_buffer_size, const char *path, const char *origin, const char *extensions, mg_websocket_data_handler data_func, mg_websocket_close_handler close_func, void *user_data) |
static struct mg_connection * | mg_connect_websocket_client_impl (const struct mg_client_options *client_options, int use_ssl, char *error_buffer, size_t error_buffer_size, const char *path, const char *origin, const char *extensions, mg_websocket_data_handler data_func, mg_websocket_close_handler close_func, void *user_data) |
struct mg_connection * | mg_connect_websocket_client_secure (const struct mg_client_options *client_options, char *error_buffer, size_t error_buffer_size, const char *path, const char *origin, mg_websocket_data_handler data_func, mg_websocket_close_handler close_func, void *user_data) |
struct mg_connection * | mg_connect_websocket_client_secure_extensions (const struct mg_client_options *client_options, char *error_buffer, size_t error_buffer_size, const char *path, const char *origin, const char *extensions, mg_websocket_data_handler data_func, mg_websocket_close_handler close_func, void *user_data) |
static int | mg_construct_local_link (const struct mg_connection *conn, char *buf, size_t buflen, const char *define_proto, int define_port, const char *define_uri) |
void | mg_cry (const struct mg_connection *conn, const char *fmt,...) |
static void | mg_cry_internal_impl (const struct mg_connection *conn, const char *func, unsigned line, const char *fmt, va_list ap) |
static void | mg_cry_internal_wrap (const struct mg_connection *conn, struct mg_context *ctx, const char *func, unsigned line, const char *fmt,...) |
static unsigned long | mg_current_thread_id (void) |
static double | mg_difftimespec (const struct timespec *ts_now, const struct timespec *ts_before) |
void | mg_disable_connection_keep_alive (struct mg_connection *conn) |
struct mg_connection * | mg_download (const char *host, int port, int use_ssl, char *ebuf, size_t ebuf_len, const char *fmt,...) |
unsigned | mg_exit_library (void) |
static int | mg_fclose (struct mg_file_access *fileacc) |
static int | mg_fgetc (struct mg_file *filep) |
static const char * | mg_fgets (char *buf, size_t size, struct mg_file *filep) |
static int | mg_fopen (const struct mg_connection *conn, const char *path, int mode, struct mg_file *filep) |
static __inline void | mg_free (void *a) |
const char * | mg_get_builtin_mime_type (const char *path) |
struct mg_context * | mg_get_context (const struct mg_connection *conn) |
int | mg_get_context_info (const struct mg_context *ctx, char *buffer, int buflen) |
int | mg_get_cookie (const char *cookie_header, const char *var_name, char *dst, size_t dst_size) |
static uint64_t | mg_get_current_time_ns (void) |
const char * | mg_get_header (const struct mg_connection *conn, const char *name) |
const char * | mg_get_option (const struct mg_context *ctx, const char *name) |
const struct mg_request_info * | mg_get_request_info (const struct mg_connection *conn) |
int | mg_get_request_link (const struct mg_connection *conn, char *buf, size_t buflen) |
int | mg_get_response (struct mg_connection *conn, char *ebuf, size_t ebuf_len, int timeout) |
const char * | mg_get_response_code_text (const struct mg_connection *conn, int response_code) |
const struct mg_response_info * | mg_get_response_info (const struct mg_connection *conn) |
int | mg_get_server_ports (const struct mg_context *ctx, int size, struct mg_server_port *ports) |
int | mg_get_system_info (char *buffer, int buflen) |
void * | mg_get_thread_pointer (const struct mg_connection *conn) |
void * | mg_get_user_connection_data (const struct mg_connection *conn) |
void * | mg_get_user_context_data (const struct mg_connection *conn) |
void * | mg_get_user_data (const struct mg_context *ctx) |
const struct mg_option * | mg_get_valid_options (void) |
int | mg_get_var (const char *data, size_t data_len, const char *name, char *dst, size_t dst_len) |
int | mg_get_var2 (const char *data, size_t data_len, const char *name, char *dst, size_t dst_len, size_t occurrence) |
static void | mg_global_lock (void) |
static void | mg_global_unlock (void) |
static int | mg_inet_pton (int af, const char *src, void *dst, size_t dstlen, int resolve_src) |
unsigned | mg_init_library (unsigned features) |
static int | mg_join_thread (pthread_t threadid) |
void | mg_lock_connection (struct mg_connection *conn) |
void | mg_lock_context (struct mg_context *ctx) |
static __inline void * | mg_malloc (size_t a) |
char * | mg_md5 (char buf[33],...) |
int | mg_modify_passwords_file (const char *fname, const char *domain, const char *user, const char *pass) |
int | mg_modify_passwords_file_ha1 (const char *fname, const char *domain, const char *user, const char *ha1) |
static int | mg_path_suspicious (const struct mg_connection *conn, const char *path) |
static int | mg_poll (struct pollfd *pfd, unsigned int n, int milliseconds, const stop_flag_t *stop_flag) |
int | mg_printf (struct mg_connection *conn, const char *fmt,...) |
int | mg_read (struct mg_connection *conn, void *buf, size_t len) |
static int | mg_read_inner (struct mg_connection *conn, void *buf, size_t len) |
static __inline void * | mg_realloc (void *a, size_t b) |
int | mg_send_chunk (struct mg_connection *conn, const char *chunk, unsigned int chunk_len) |
int | mg_send_digest_access_authentication_request (struct mg_connection *conn, const char *realm) |
void | mg_send_file (struct mg_connection *conn, const char *path) |
int | mg_send_file_body (struct mg_connection *conn, const char *path) |
int | mg_send_http_error (struct mg_connection *conn, int status, const char *fmt,...) |
static int | mg_send_http_error_impl (struct mg_connection *conn, int status, const char *fmt, va_list args) |
int | mg_send_http_ok (struct mg_connection *conn, const char *mime_type, long long content_length) |
int | mg_send_http_redirect (struct mg_connection *conn, const char *target_url, int redirect_code) |
void | mg_send_mime_file (struct mg_connection *conn, const char *path, const char *mime_type) |
void | mg_send_mime_file2 (struct mg_connection *conn, const char *path, const char *mime_type, const char *additional_headers) |
void | mg_set_auth_handler (struct mg_context *ctx, const char *uri, mg_authorization_handler handler, void *cbdata) |
static void | mg_set_handler_type (struct mg_context *phys_ctx, struct mg_domain_context *dom_ctx, const char *uri, int handler_type, int is_delete_request, mg_request_handler handler, struct mg_websocket_subprotocols *subprotocols, mg_websocket_connect_handler connect_handler, mg_websocket_ready_handler ready_handler, mg_websocket_data_handler data_handler, mg_websocket_close_handler close_handler, mg_authorization_handler auth_handler, void *cbdata) |
void | mg_set_request_handler (struct mg_context *ctx, const char *uri, mg_request_handler handler, void *cbdata) |
static void | mg_set_thread_name (const char *name) |
void | mg_set_user_connection_data (const struct mg_connection *const_conn, void *data) |
void | mg_set_websocket_handler (struct mg_context *ctx, const char *uri, mg_websocket_connect_handler connect_handler, mg_websocket_ready_handler ready_handler, mg_websocket_data_handler data_handler, mg_websocket_close_handler close_handler, void *cbdata) |
void | mg_set_websocket_handler_with_subprotocols (struct mg_context *ctx, const char *uri, struct mg_websocket_subprotocols *subprotocols, mg_websocket_connect_handler connect_handler, mg_websocket_ready_handler ready_handler, mg_websocket_data_handler data_handler, mg_websocket_close_handler close_handler, void *cbdata) |
static void | mg_snprintf (const struct mg_connection *conn, int *truncated, char *buf, size_t buflen, const char *fmt,...) |
int | mg_split_form_urlencoded (char *data, struct mg_header *form_fields, unsigned num_form_fields) |
struct mg_context * | mg_start (const struct mg_callbacks *callbacks, void *user_data, const char **options) |
struct mg_context * | mg_start2 (struct mg_init_data *init, struct mg_error_data *error) |
int | mg_start_domain (struct mg_context *ctx, const char **options) |
int | mg_start_domain2 (struct mg_context *ctx, const char **options, struct mg_error_data *error) |
int | mg_start_thread (mg_thread_func_t func, void *param) |
static int | mg_start_thread_with_id (mg_thread_func_t func, void *param, pthread_t *threadidptr) |
static int | mg_stat (const struct mg_connection *conn, const char *path, struct mg_file_stat *filep) |
void | mg_stop (struct mg_context *ctx) |
long long | mg_store_body (struct mg_connection *conn, const char *path) |
static size_t | mg_str_append (char **dst, char *end, const char *src) |
int | mg_strcasecmp (const char *s1, const char *s2) |
static const char * | mg_strcasestr (const char *big_str, const char *small_str) |
static char * | mg_strdup (const char *str) |
static char * | mg_strdup_ctx (const char *str, struct mg_context *ctx) |
static void | mg_strlcpy (char *dst, const char *src, size_t n) |
int | mg_strncasecmp (const char *s1, const char *s2, size_t len) |
static char * | mg_strndup_ctx (const char *ptr, size_t len, struct mg_context *ctx) |
void | mg_unlock_connection (struct mg_connection *conn) |
void | mg_unlock_context (struct mg_context *ctx) |
int | mg_url_decode (const char *src, int src_len, char *dst, int dst_len, int is_form_url_encoded) |
int | mg_url_encode (const char *src, char *dst, size_t dst_len) |
const char * | mg_version (void) |
static int | mg_vprintf (struct mg_connection *conn, const char *fmt, va_list ap) |
static void | mg_vsnprintf (const struct mg_connection *conn, int *truncated, char *buf, size_t buflen, const char *fmt, va_list ap) |
int | mg_write (struct mg_connection *conn, const void *buf, size_t len) |
static void | mkcol (struct mg_connection *conn, const char *path) |
static int | modify_passwords_file (const char *fname, const char *domain, const char *user, const char *pass, const char *ha1) |
static int | must_hide_file (struct mg_connection *conn, const char *path) |
static const char * | next_option (const char *list, struct vec *val, struct vec *eq_val) |
static void | open_auth_file (struct mg_connection *conn, const char *path, struct mg_file *filep) |
static int | parse_auth_header (struct mg_connection *conn, char *buf, size_t buf_size, struct ah *ah) |
static time_t | parse_date_string (const char *datetime) |
static int | parse_http_headers (char **buf, struct mg_header hdr[(64)]) |
static int | parse_http_request (char *buf, int len, struct mg_request_info *ri) |
static int | parse_http_response (char *buf, int len, struct mg_response_info *ri) |
static int | parse_match_net (const struct vec *vec, const union usa *sa, int no_strict) |
static int | parse_port_string (const struct vec *vec, struct socket *so, int *ip_version) |
static int | parse_range_header (const char *header, int64_t *a, int64_t *b) |
static int | prepare_cgi_environment (struct mg_connection *conn, const char *prog, struct cgi_environment *env, unsigned char cgi_config_idx) |
static int | print_dav_dir_entry (struct de *de, void *data) |
static int | print_dir_entry (struct de *de) |
static int | print_props (struct mg_connection *conn, const char *uri, const char *name, struct mg_file_stat *filep) |
static void | process_new_connection (struct mg_connection *conn) |
static void | produce_socket (struct mg_context *ctx, const struct socket *sp) |
static int | pull_all (FILE *fp, struct mg_connection *conn, char *buf, int len) |
static int | pull_inner (FILE *fp, struct mg_connection *conn, char *buf, int len, double timeout) |
static int | push_all (struct mg_context *ctx, FILE *fp, SOCKET sock, SSL *ssl, const char *buf, int len) |
static int | push_inner (struct mg_context *ctx, FILE *fp, SOCKET sock, SSL *ssl, const char *buf, int len, double timeout) |
static int | put_dir (struct mg_connection *conn, const char *path) |
static void | put_file (struct mg_connection *conn, const char *path) |
static int | read_auth_file (struct mg_file *filep, struct read_auth_file_struct *workdata, int depth) |
static int | read_message (FILE *fp, struct mg_connection *conn, char *buf, int bufsiz, int *nread) |
static void | redirect_to_https_port (struct mg_connection *conn, int port) |
static int | refresh_trust (struct mg_connection *conn) |
static void | release_handler_ref (struct mg_connection *conn, struct mg_handler_info *handler_info) |
static void | remove_bad_file (const struct mg_connection *conn, const char *path) |
static int | remove_directory (struct mg_connection *conn, const char *dir) |
static void | remove_dot_segments (char *inout) |
static void | reset_per_request_attributes (struct mg_connection *conn) |
static int | scan_directory (struct mg_connection *conn, const char *dir, void *data, int(*cb)(struct de *, void *)) |
static void | send_additional_header (struct mg_connection *conn) |
static void | send_authorization_request (struct mg_connection *conn, const char *realm) |
static void | send_file_data (struct mg_connection *conn, struct mg_file *filep, int64_t offset, int64_t len) |
static void | send_no_cache_header (struct mg_connection *conn) |
static void | send_options (struct mg_connection *conn) |
static void | send_ssi_file (struct mg_connection *, const char *, struct mg_file *, int) |
static void | send_static_cache_header (struct mg_connection *conn) |
static int | set_acl_option (struct mg_context *phys_ctx) |
static int | set_blocking_mode (SOCKET sock) |
static void | set_close_on_exec (int fd, const struct mg_connection *conn, struct mg_context *ctx) |
static int | set_gpass_option (struct mg_context *phys_ctx, struct mg_domain_context *dom_ctx) |
static int | set_non_blocking_mode (SOCKET sock) |
static int | set_ports_option (struct mg_context *phys_ctx) |
static int | set_tcp_nodelay (const struct socket *so, int nodelay_on) |
static int | set_throttle (const char *spec, const union usa *rsa, const char *uri) |
static int | set_uid_option (struct mg_context *phys_ctx) |
static int | should_decode_query_string (const struct mg_connection *conn) |
static int | should_decode_url (const struct mg_connection *conn) |
static int | should_keep_alive (const struct mg_connection *conn) |
static int | should_switch_to_protocol (const struct mg_connection *conn) |
static char * | skip_quoted (char **buf, const char *delimiters, const char *whitespace, char quotechar) |
static int | skip_to_end_of_word_and_terminate (char **ppw, int eol) |
static void | sockaddr_to_string (char *buf, size_t len, const union usa *usa) |
static pid_t | spawn_process (struct mg_connection *conn, const char *prog, char *envblk, char *envp[], int fdin[2], int fdout[2], int fderr[2], const char *dir, unsigned char cgi_config_idx) |
static const char * | ssl_error (void) |
static int | ssl_get_client_cert_info (const struct mg_connection *conn, struct mg_client_cert *client_cert) |
static long | ssl_get_protocol (int version_id) |
static void | ssl_info_callback (const SSL *ssl, int what, int ret) |
static void | ssl_locking_callback (int mode, int mutex_num, const char *file, int line) |
static int | ssl_servername_callback (SSL *ssl, int *ad, void *arg) |
static int | ssl_use_pem_file (struct mg_context *phys_ctx, struct mg_domain_context *dom_ctx, const char *pem, const char *chain) |
static int | sslize (struct mg_connection *conn, int(*func)(SSL *), const struct mg_client_options *client_options) |
static int | substitute_index_file (struct mg_connection *conn, char *path, size_t path_len, struct mg_file_stat *filestat) |
static const char * | suggest_connection_header (const struct mg_connection *conn) |
static int | switch_domain_context (struct mg_connection *conn) |
static void | tls_dtor (void *key) |
static void | uninitialize_openssl (void) |
static void | url_decode_in_place (char *buf) |
static void * | worker_thread (void *thread_func_param) |
static void | worker_thread_run (struct mg_connection *conn) |
Variables | ||
struct { | ||
unsigned default_port | ||
const char * proto | ||
size_t proto_len | ||
} | abs_uri_protocols [] | |
struct { | ||
size_t ext_len | ||
const char * extension | ||
const char * mime_type | ||
} | builtin_mime_types [] | |
static const struct mg_option | config_options [] | |
static void * | cryptolib_dll_handle | |
static volatile ptrdiff_t | cryptolib_users | |
static pthread_mutex_t | global_lock_mutex | |
static const struct mg_http_method_info | http_methods [] | |
static int | mg_init_library_called = 0 | |
static const char | month_names [][4] | |
static pthread_mutexattr_t | pthread_mutex_attr | |
static pthread_mutex_t * | ssl_mutexes | |
static void * | ssllib_dll_handle | |
char | static_assert_replacement [1] | |
static pthread_key_t | sTlsKey | |
static volatile ptrdiff_t | thread_idx_max = 0 | |
#define __STDC_FORMAT_MACROS /* <inttypes.h> wants this for C++ */ |
Definition at line 73 of file civetweb.c.
Definition at line 76 of file civetweb.c.
#define _DARWIN_UNLIMITED_SELECT |
Definition at line 79 of file civetweb.c.
#define _FILE_OFFSET_BITS 64 /* Use 64-bit file offsets by default */ |
Definition at line 70 of file civetweb.c.
#define _GNU_SOURCE /* for setgroups(), pthread_setname_np() */ |
Definition at line 57 of file civetweb.c.
#define _LARGEFILE_SOURCE /* For fseeko(), ftello() */ |
Definition at line 67 of file civetweb.c.
#define ARRAY_SIZE | ( | array | ) | (sizeof(array) / sizeof(array[0])) |
Definition at line 504 of file civetweb.c.
#define calloc DO_NOT_USE_THIS_FUNCTION__USE_mg_calloc |
Definition at line 1537 of file civetweb.c.
#define CGI_ENVIRONMENT_SIZE (4096) /* in bytes */ |
Definition at line 486 of file civetweb.c.
Definition at line 914 of file civetweb.c.
#define CRYPTO_LIB "libcrypto.so" |
Definition at line 908 of file civetweb.c.
#define DEBUG_ASSERT | ( | cond | ) |
Definition at line 260 of file civetweb.c.
#define DEBUG_TRACE | ( | fmt, | |
... | |||
) |
Definition at line 242 of file civetweb.c.
#define ERRNO (errno) |
Definition at line 921 of file civetweb.c.
#define ERROR_TRY_AGAIN | ( | err | ) | (((err) == EAGAIN) || ((err) == EWOULDBLOCK) || ((err) == EINTR)) |
Definition at line 445 of file civetweb.c.
#define free DO_NOT_USE_THIS_FUNCTION__USE_mg_free |
Definition at line 1539 of file civetweb.c.
#define FUNCTION_MAY_BE_UNUSED |
Definition at line 316 of file civetweb.c.
#define HTTP1_only |
Definition at line 6582 of file civetweb.c.
Definition at line 291 of file civetweb.c.
#define INITIAL_DEPTH 9 |
Definition at line 8487 of file civetweb.c.
#define INT64_FMT PRId64 |
Definition at line 923 of file civetweb.c.
#define INT64_MAX (9223372036854775807) |
Definition at line 511 of file civetweb.c.
#define INVALID_SOCKET (-1) |
Definition at line 922 of file civetweb.c.
#define IP_ADDR_STR_LEN (50) /* IPv6 hex string is 46 chars */ |
Definition at line 1724 of file civetweb.c.
#define malloc DO_NOT_USE_THIS_FUNCTION__USE_mg_malloc |
Definition at line 1536 of file civetweb.c.
#define MAX_CGI_ENVIR_VARS (256) /* in variables (count) */ |
Definition at line 491 of file civetweb.c.
#define MAX_WORKER_THREADS (1024 * 64) /* in threads (count) */ |
Definition at line 463 of file civetweb.c.
#define MD5_STATIC static |
Definition at line 1716 of file civetweb.c.
#define MG_BUF_LEN (1024 * 8) |
Definition at line 496 of file civetweb.c.
Definition at line 919 of file civetweb.c.
#define mg_cry DO_NOT_USE_THIS_FUNCTION__USE_mg_cry_internal |
Definition at line 3476 of file civetweb.c.
#define mg_cry_ctx_internal | ( | ctx, | |
fmt, | |||
... | |||
) | mg_cry_internal_wrap(NULL, ctx, __func__, __LINE__, fmt, __VA_ARGS__) |
Definition at line 2550 of file civetweb.c.
#define mg_cry_internal | ( | conn, | |
fmt, | |||
... | |||
) | mg_cry_internal_wrap(conn, NULL, __func__, __LINE__, fmt, __VA_ARGS__) |
Definition at line 2547 of file civetweb.c.
#define MG_FILE_COMPRESSION_SIZE_LIMIT (1024) /* in bytes */ |
Definition at line 476 of file civetweb.c.
#define MG_FOPEN_MODE_APPEND (4) |
Definition at line 2813 of file civetweb.c.
#define MG_FOPEN_MODE_NONE (0) |
Definition at line 2804 of file civetweb.c.
#define MG_FOPEN_MODE_READ (1) |
Definition at line 2807 of file civetweb.c.
#define MG_FOPEN_MODE_WRITE (2) |
Definition at line 2810 of file civetweb.c.
#define mg_get_option DO_NOT_USE_THIS_FUNCTION_INTERNALLY__access_directly |
Definition at line 3149 of file civetweb.c.
Definition at line 915 of file civetweb.c.
Definition at line 918 of file civetweb.c.
#define mg_pollfd pollfd |
Definition at line 945 of file civetweb.c.
Definition at line 920 of file civetweb.c.
Definition at line 1496 of file civetweb.c.
Definition at line 916 of file civetweb.c.
Definition at line 917 of file civetweb.c.
#define mg_static_assert | ( | cond, | |
txt | |||
) | extern char static_assert_replacement[(cond) ? 1 : -1] |
Definition at line 124 of file civetweb.c.
#define MSG_NOSIGNAL (0) |
Definition at line 1727 of file civetweb.c.
#define NO_ALTERNATIVE_QUEUE |
Definition at line 150 of file civetweb.c.
#define O_BINARY (0) |
Definition at line 912 of file civetweb.c.
#define PASSWORDS_FILE_NAME ".htpasswd" |
Definition at line 480 of file civetweb.c.
#define realloc DO_NOT_USE_THIS_FUNCTION__USE_mg_realloc |
Definition at line 1538 of file civetweb.c.
#define SHUTDOWN_BOTH (2) |
Definition at line 516 of file civetweb.c.
#define SHUTDOWN_RD (0) |
Definition at line 514 of file civetweb.c.
#define SHUTDOWN_WR (1) |
Definition at line 515 of file civetweb.c.
#define snprintf DO_NOT_USE_THIS_FUNCTION__USE_mg_snprintf |
Definition at line 1540 of file civetweb.c.
#define SOCKET_TIMEOUT_QUANTUM (2000) /* in ms */ |
Definition at line 471 of file civetweb.c.
#define SSL_LIB "libssl.so" |
Definition at line 905 of file civetweb.c.
Definition at line 2305 of file civetweb.c.
Definition at line 2304 of file civetweb.c.
#define STRUCT_FILE_INITIALIZER |
Definition at line 1882 of file civetweb.c.
#define UINT64_FMT PRIu64 |
Definition at line 924 of file civetweb.c.
#define USA_IN_PORT_UNSAFE | ( | s | ) | ((s)->sin.sin_port) |
Definition at line 1851 of file civetweb.c.
#define UTF8_PATH_MAX (PATH_MAX) |
Definition at line 858 of file civetweb.c.
#define vsnprintf_impl vsnprintf |
Definition at line 894 of file civetweb.c.
#define WIN32_LEAN_AND_MEAN |
Definition at line 173 of file civetweb.c.
#define WINCDECL |
Definition at line 926 of file civetweb.c.
typedef const void* SOCK_OPT_TYPE |
Definition at line 860 of file civetweb.c.
Definition at line 925 of file civetweb.c.
typedef int volatile stop_flag_t |
Definition at line 2303 of file civetweb.c.
anonymous enum |
Definition at line 1909 of file civetweb.c.
anonymous enum |
Enumerator | |
---|---|
REQUEST_HANDLER | |
WEBSOCKET_HANDLER | |
AUTH_HANDLER |
Definition at line 2207 of file civetweb.c.
anonymous enum |
Enumerator | |
---|---|
CONTEXT_INVALID | |
CONTEXT_SERVER | |
CONTEXT_HTTP_CLIENT | |
CONTEXT_WS_CLIENT |
Definition at line 2243 of file civetweb.c.
anonymous enum |
Enumerator | |
---|---|
CONNECTION_TYPE_INVALID | |
CONNECTION_TYPE_REQUEST | |
CONNECTION_TYPE_RESPONSE |
Definition at line 2422 of file civetweb.c.
anonymous enum |
Enumerator | |
---|---|
PROTOCOL_TYPE_HTTP1 | |
PROTOCOL_TYPE_WEBSOCKET | |
PROTOCOL_TYPE_HTTP2 |
Definition at line 2428 of file civetweb.c.
|
static |
Definition at line 11243 of file civetweb.c.
|
static |
Definition at line 19105 of file civetweb.c.
|
static |
Definition at line 10975 of file civetweb.c.
|
static |
Definition at line 6855 of file civetweb.c.
|
static |
Definition at line 6822 of file civetweb.c.
|
static |
Definition at line 8615 of file civetweb.c.
|
static |
Definition at line 8192 of file civetweb.c.
|
static |
Definition at line 15442 of file civetweb.c.
|
static |
Definition at line 8668 of file civetweb.c.
|
static |
Definition at line 8230 of file civetweb.c.
|
static |
Definition at line 14677 of file civetweb.c.
|
static |
Definition at line 17078 of file civetweb.c.
|
static |
Definition at line 16953 of file civetweb.c.
|
static |
Definition at line 9399 of file civetweb.c.
|
static |
Definition at line 8994 of file civetweb.c.
|
static |
Definition at line 9844 of file civetweb.c.
|
static |
Definition at line 18772 of file civetweb.c.
|
static |
Definition at line 11797 of file civetweb.c.
Definition at line 9585 of file civetweb.c.
|
static |
Definition at line 6458 of file civetweb.c.
|
static |
Definition at line 11945 of file civetweb.c.
|
static |
Definition at line 11860 of file civetweb.c.
|
static |
Definition at line 7319 of file civetweb.c.
|
static |
Definition at line 7365 of file civetweb.c.
|
static |
Definition at line 3436 of file civetweb.c.
|
static |
Definition at line 9859 of file civetweb.c.
|
static |
Definition at line 10875 of file civetweb.c.
|
static |
Definition at line 19396 of file civetweb.c.
|
static |
Definition at line 13429 of file civetweb.c.
|
static |
Definition at line 3764 of file civetweb.c.
|
static |
Definition at line 13444 of file civetweb.c.
Definition at line 7755 of file civetweb.c.
|
static |
Definition at line 10570 of file civetweb.c.
|
static |
Definition at line 3822 of file civetweb.c.
|
static |
Definition at line 17726 of file civetweb.c.
|
static |
Definition at line 8157 of file civetweb.c.
|
static |
Definition at line 7792 of file civetweb.c.
|
static |
Definition at line 3123 of file civetweb.c.
|
static |
Definition at line 3540 of file civetweb.c.
|
static |
Definition at line 5879 of file civetweb.c.
|
static |
Definition at line 17622 of file civetweb.c.
|
static |
Definition at line 17802 of file civetweb.c.
|
static |
Definition at line 13868 of file civetweb.c.
|
static |
Definition at line 17894 of file civetweb.c.
|
static |
Definition at line 19536 of file civetweb.c.
|
static |
Definition at line 17552 of file civetweb.c.
|
static |
Definition at line 3306 of file civetweb.c.
|
static |
Definition at line 11278 of file civetweb.c.
|
static |
Definition at line 9617 of file civetweb.c.
|
static |
Definition at line 14575 of file civetweb.c.
|
static |
Definition at line 10178 of file civetweb.c.
|
static |
Definition at line 12261 of file civetweb.c.
|
static |
Definition at line 14012 of file civetweb.c.
|
static |
Definition at line 6536 of file civetweb.c.
|
static |
Definition at line 12090 of file civetweb.c.
|
static |
Definition at line 9883 of file civetweb.c.
|
static |
Definition at line 3902 of file civetweb.c.
|
static |
Definition at line 15267 of file civetweb.c.
Definition at line 15807 of file civetweb.c.
|
static |
Definition at line 18478 of file civetweb.c.
|
static |
Definition at line 16698 of file civetweb.c.
|
static |
Definition at line 16452 of file civetweb.c.
|
static |
Definition at line 16034 of file civetweb.c.
|
static |
Definition at line 7437 of file civetweb.c.
|
static |
Definition at line 8785 of file civetweb.c.
|
static |
Definition at line 2817 of file civetweb.c.
|
static |
Definition at line 13953 of file civetweb.c.
|
static |
Definition at line 10163 of file civetweb.c.
|
static |
Definition at line 7305 of file civetweb.c.
|
static |
Definition at line 14900 of file civetweb.c.
|
static |
Definition at line 10589 of file civetweb.c.
|
static |
Definition at line 8946 of file civetweb.c.
|
static |
Definition at line 19584 of file civetweb.c.
|
static |
Definition at line 15928 of file civetweb.c.
|
static |
Definition at line 15284 of file civetweb.c.
|
static |
Definition at line 2976 of file civetweb.c.
|
static |
Definition at line 19378 of file civetweb.c.
|
static |
Definition at line 19192 of file civetweb.c.
|
static |
Definition at line 3921 of file civetweb.c.
|
static |
Definition at line 3966 of file civetweb.c.
|
static |
Definition at line 1141 of file civetweb.c.
|
static |
Definition at line 1118 of file civetweb.c.
|
static |
Definition at line 1477 of file civetweb.c.
int mg_check_digest_access_authentication | ( | struct mg_connection * | conn, |
const char * | realm, | ||
const char * | filename | ||
) |
Definition at line 8643 of file civetweb.c.
unsigned mg_check_feature | ( | unsigned | feature | ) |
Definition at line 20496 of file civetweb.c.
void mg_close_connection | ( | struct mg_connection * | conn | ) |
Definition at line 17153 of file civetweb.c.
struct mg_connection * mg_connect_client | ( | const char * | host, |
int | port, | ||
int | use_ssl, | ||
char * | error_buffer, | ||
size_t | error_buffer_size | ||
) |
Definition at line 17425 of file civetweb.c.
|
static |
Definition at line 17216 of file civetweb.c.
struct mg_connection * mg_connect_client_secure | ( | const struct mg_client_options * | client_options, |
char * | error_buffer, | ||
size_t | error_buffer_size | ||
) |
Definition at line 17413 of file civetweb.c.
struct mg_connection * mg_connect_websocket_client | ( | const char * | host, |
int | port, | ||
int | use_ssl, | ||
char * | error_buffer, | ||
size_t | error_buffer_size, | ||
const char * | path, | ||
const char * | origin, | ||
mg_websocket_data_handler | data_func, | ||
mg_websocket_close_handler | close_func, | ||
void * | user_data | ||
) |
Definition at line 18364 of file civetweb.c.
struct mg_connection * mg_connect_websocket_client_extensions | ( | const char * | host, |
int | port, | ||
int | use_ssl, | ||
char * | error_buffer, | ||
size_t | error_buffer_size, | ||
const char * | path, | ||
const char * | origin, | ||
const char * | extensions, | ||
mg_websocket_data_handler | data_func, | ||
mg_websocket_close_handler | close_func, | ||
void * | user_data | ||
) |
Definition at line 18420 of file civetweb.c.
|
static |
Definition at line 18154 of file civetweb.c.
struct mg_connection * mg_connect_websocket_client_secure | ( | const struct mg_client_options * | client_options, |
char * | error_buffer, | ||
size_t | error_buffer_size, | ||
const char * | path, | ||
const char * | origin, | ||
mg_websocket_data_handler | data_func, | ||
mg_websocket_close_handler | close_func, | ||
void * | user_data | ||
) |
Definition at line 18394 of file civetweb.c.
struct mg_connection * mg_connect_websocket_client_secure_extensions | ( | const struct mg_client_options * | client_options, |
char * | error_buffer, | ||
size_t | error_buffer_size, | ||
const char * | path, | ||
const char * | origin, | ||
const char * | extensions, | ||
mg_websocket_data_handler | data_func, | ||
mg_websocket_close_handler | close_func, | ||
void * | user_data | ||
) |
Definition at line 18450 of file civetweb.c.
|
static |
Definition at line 3567 of file civetweb.c.
void mg_cry | ( | const struct mg_connection * | conn, |
const char * | fmt, | ||
... | |||
) |
Definition at line 3467 of file civetweb.c.
|
static |
Definition at line 3348 of file civetweb.c.
|
static |
Definition at line 3447 of file civetweb.c.
|
static |
Definition at line 1618 of file civetweb.c.
|
static |
Definition at line 3330 of file civetweb.c.
void mg_disable_connection_keep_alive | ( | struct mg_connection * | conn | ) |
Definition at line 21109 of file civetweb.c.
struct mg_connection * mg_download | ( | const char * | host, |
int | port, | ||
int | use_ssl, | ||
char * | ebuf, | ||
size_t | ebuf_len, | ||
const char * | fmt, | ||
... | |||
) |
Definition at line 18031 of file civetweb.c.
unsigned mg_exit_library | ( | void | ) |
Definition at line 21477 of file civetweb.c.
|
static |
Definition at line 2950 of file civetweb.c.
Definition at line 11969 of file civetweb.c.
|
static |
Definition at line 8468 of file civetweb.c.
|
static |
Definition at line 2879 of file civetweb.c.
|
static |
Definition at line 1489 of file civetweb.c.
const char * mg_get_builtin_mime_type | ( | const char * | path | ) |
Definition at line 8135 of file civetweb.c.
struct mg_context * mg_get_context | ( | const struct mg_connection * | conn | ) |
Definition at line 3152 of file civetweb.c.
int mg_get_context_info | ( | const struct mg_context * | ctx, |
char * | buffer, | ||
int | buflen | ||
) |
Definition at line 20910 of file civetweb.c.
int mg_get_cookie | ( | const char * | cookie_header, |
const char * | var_name, | ||
char * | dst, | ||
size_t | dst_size | ||
) |
Definition at line 7158 of file civetweb.c.
|
static |
Definition at line 1668 of file civetweb.c.
const char * mg_get_header | ( | const struct mg_connection * | conn, |
const char * | name | ||
) |
Definition at line 3801 of file civetweb.c.
const char * mg_get_option | ( | const struct mg_context * | ctx, |
const char * | name | ||
) |
Definition at line 3137 of file civetweb.c.
const struct mg_request_info * mg_get_request_info | ( | const struct mg_connection * | conn | ) |
Definition at line 3487 of file civetweb.c.
int mg_get_request_link | ( | const struct mg_connection * | conn, |
char * | buf, | ||
size_t | buflen | ||
) |
Definition at line 3688 of file civetweb.c.
int mg_get_response | ( | struct mg_connection * | conn, |
char * | ebuf, | ||
size_t | ebuf_len, | ||
int | timeout | ||
) |
Definition at line 17979 of file civetweb.c.
const char * mg_get_response_code_text | ( | const struct mg_connection * | conn, |
int | response_code | ||
) |
Definition at line 4151 of file civetweb.c.
const struct mg_response_info * mg_get_response_info | ( | const struct mg_connection * | conn | ) |
Definition at line 3527 of file civetweb.c.
int mg_get_server_ports | ( | const struct mg_context * | ctx, |
int | size, | ||
struct mg_server_port * | ports | ||
) |
Definition at line 3212 of file civetweb.c.
Definition at line 20578 of file civetweb.c.
void * mg_get_thread_pointer | ( | const struct mg_connection * | conn | ) |
Definition at line 3173 of file civetweb.c.
void * mg_get_user_connection_data | ( | const struct mg_connection * | conn | ) |
Definition at line 3202 of file civetweb.c.
void * mg_get_user_context_data | ( | const struct mg_connection * | conn | ) |
Definition at line 3166 of file civetweb.c.
void * mg_get_user_data | ( | const struct mg_context * | ctx | ) |
Definition at line 3159 of file civetweb.c.
const struct mg_option * mg_get_valid_options | ( | void | ) |
Definition at line 2797 of file civetweb.c.
int mg_get_var | ( | const char * | data, |
size_t | data_len, | ||
const char * | name, | ||
char * | dst, | ||
size_t | dst_len | ||
) |
Definition at line 6990 of file civetweb.c.
int mg_get_var2 | ( | const char * | data, |
size_t | data_len, | ||
const char * | name, | ||
char * | dst, | ||
size_t | dst_len, | ||
size_t | occurrence | ||
) |
Definition at line 7001 of file civetweb.c.
|
static |
Definition at line 1091 of file civetweb.c.
|
static |
Definition at line 1099 of file civetweb.c.
|
static |
Definition at line 8953 of file civetweb.c.
unsigned mg_init_library | ( | unsigned | features | ) |
Definition at line 21373 of file civetweb.c.
|
static |
Definition at line 5727 of file civetweb.c.
void mg_lock_connection | ( | struct mg_connection * | conn | ) |
Definition at line 12306 of file civetweb.c.
void mg_lock_context | ( | struct mg_context * | ctx | ) |
Definition at line 12322 of file civetweb.c.
|
static |
Definition at line 1471 of file civetweb.c.
char * mg_md5 | ( | char | buf[33], |
... | |||
) |
Definition at line 8207 of file civetweb.c.
int mg_modify_passwords_file | ( | const char * | fname, |
const char * | domain, | ||
const char * | user, | ||
const char * | pass | ||
) |
Definition at line 8926 of file civetweb.c.
int mg_modify_passwords_file_ha1 | ( | const char * | fname, |
const char * | domain, | ||
const char * | user, | ||
const char * | ha1 | ||
) |
Definition at line 8936 of file civetweb.c.
|
static |
Definition at line 2835 of file civetweb.c.
|
static |
Definition at line 5908 of file civetweb.c.
int mg_printf | ( | struct mg_connection * | conn, |
const char * | fmt, | ||
... | |||
) |
Definition at line 6936 of file civetweb.c.
int mg_read | ( | struct mg_connection * | conn, |
void * | buf, | ||
size_t | len | ||
) |
Definition at line 6587 of file civetweb.c.
|
static |
Definition at line 6468 of file civetweb.c.
|
static |
Definition at line 1483 of file civetweb.c.
int mg_send_chunk | ( | struct mg_connection * | conn, |
const char * | chunk, | ||
unsigned int | chunk_len | ||
) |
Definition at line 6776 of file civetweb.c.
int mg_send_digest_access_authentication_request | ( | struct mg_connection * | conn, |
const char * | realm | ||
) |
Definition at line 8772 of file civetweb.c.
void mg_send_file | ( | struct mg_connection * | conn, |
const char * | path | ||
) |
Definition at line 10205 of file civetweb.c.
int mg_send_file_body | ( | struct mg_connection * | conn, |
const char * | path | ||
) |
Definition at line 10146 of file civetweb.c.
int mg_send_http_error | ( | struct mg_connection * | conn, |
int | status, | ||
const char * | fmt, | ||
... | |||
) |
Definition at line 4536 of file civetweb.c.
|
static |
Definition at line 4350 of file civetweb.c.
int mg_send_http_ok | ( | struct mg_connection * | conn, |
const char * | mime_type, | ||
long long | content_length | ||
) |
Definition at line 4550 of file civetweb.c.
int mg_send_http_redirect | ( | struct mg_connection * | conn, |
const char * | target_url, | ||
int | redirect_code | ||
) |
Definition at line 4591 of file civetweb.c.
void mg_send_mime_file | ( | struct mg_connection * | conn, |
const char * | path, | ||
const char * | mime_type | ||
) |
Definition at line 10212 of file civetweb.c.
void mg_send_mime_file2 | ( | struct mg_connection * | conn, |
const char * | path, | ||
const char * | mime_type, | ||
const char * | additional_headers | ||
) |
Definition at line 10221 of file civetweb.c.
void mg_set_auth_handler | ( | struct mg_context * | ctx, |
const char * | uri, | ||
mg_authorization_handler | handler, | ||
void * | cbdata | ||
) |
Definition at line 13846 of file civetweb.c.
|
static |
Definition at line 13588 of file civetweb.c.
void mg_set_request_handler | ( | struct mg_context * | ctx, |
const char * | uri, | ||
mg_request_handler | handler, | ||
void * | cbdata | ||
) |
Definition at line 13774 of file civetweb.c.
|
static |
Definition at line 2744 of file civetweb.c.
void mg_set_user_connection_data | ( | const struct mg_connection * | const_conn, |
void * | data | ||
) |
Definition at line 3189 of file civetweb.c.
void mg_set_websocket_handler | ( | struct mg_context * | ctx, |
const char * | uri, | ||
mg_websocket_connect_handler | connect_handler, | ||
mg_websocket_ready_handler | ready_handler, | ||
mg_websocket_data_handler | data_handler, | ||
mg_websocket_close_handler | close_handler, | ||
void * | cbdata | ||
) |
Definition at line 13796 of file civetweb.c.
void mg_set_websocket_handler_with_subprotocols | ( | struct mg_context * | ctx, |
const char * | uri, | ||
struct mg_websocket_subprotocols * | subprotocols, | ||
mg_websocket_connect_handler | connect_handler, | ||
mg_websocket_ready_handler | ready_handler, | ||
mg_websocket_data_handler | data_handler, | ||
mg_websocket_close_handler | close_handler, | ||
void * | cbdata | ||
) |
Definition at line 13816 of file civetweb.c.
|
static |
Definition at line 3107 of file civetweb.c.
int mg_split_form_urlencoded | ( | char * | data, |
struct mg_header * | form_fields, | ||
unsigned | num_form_fields | ||
) |
Definition at line 7059 of file civetweb.c.
struct mg_context * mg_start | ( | const struct mg_callbacks * | callbacks, |
void * | user_data, | ||
const char ** | options | ||
) |
Definition at line 20284 of file civetweb.c.
struct mg_context * mg_start2 | ( | struct mg_init_data * | init, |
struct mg_error_data * | error | ||
) |
Definition at line 19612 of file civetweb.c.
int mg_start_domain | ( | struct mg_context * | ctx, |
const char ** | options | ||
) |
Definition at line 20488 of file civetweb.c.
int mg_start_domain2 | ( | struct mg_context * | ctx, |
const char ** | options, | ||
struct mg_error_data * | error | ||
) |
Definition at line 20299 of file civetweb.c.
int mg_start_thread | ( | mg_thread_func_t | func, |
void * | param | ||
) |
Definition at line 5670 of file civetweb.c.
|
static |
Definition at line 5696 of file civetweb.c.
|
static |
Definition at line 5620 of file civetweb.c.
void mg_stop | ( | struct mg_context * | ctx | ) |
Definition at line 19493 of file civetweb.c.
long long mg_store_body | ( | struct mg_connection * | conn, |
const char * | path | ||
) |
Definition at line 10317 of file civetweb.c.
|
static |
Definition at line 20559 of file civetweb.c.
int mg_strcasecmp | ( | const char * | s1, |
const char * | s2 | ||
) |
Definition at line 2998 of file civetweb.c.
|
static |
Definition at line 3039 of file civetweb.c.
|
static |
Definition at line 3032 of file civetweb.c.
|
static |
Definition at line 3026 of file civetweb.c.
|
static |
Definition at line 2966 of file civetweb.c.
int mg_strncasecmp | ( | const char * | s1, |
const char * | s2, | ||
size_t | len | ||
) |
Definition at line 2983 of file civetweb.c.
|
static |
Definition at line 3011 of file civetweb.c.
void mg_unlock_connection | ( | struct mg_connection * | conn | ) |
Definition at line 12314 of file civetweb.c.
void mg_unlock_context | ( | struct mg_context * | ctx | ) |
Definition at line 12330 of file civetweb.c.
int mg_url_decode | ( | const char * | src, |
int | src_len, | ||
char * | dst, | ||
int | dst_len, | ||
int | is_form_url_encoded | ||
) |
Definition at line 6950 of file civetweb.c.
int mg_url_encode | ( | const char * | src, |
char * | dst, | ||
size_t | dst_len | ||
) |
Definition at line 9261 of file civetweb.c.
const char * mg_version | ( | void | ) |
Definition at line 3480 of file civetweb.c.
|
static |
Definition at line 6918 of file civetweb.c.
|
static |
Definition at line 3058 of file civetweb.c.
int mg_write | ( | struct mg_connection * | conn, |
const void * | buf, | ||
size_t | len | ||
) |
Definition at line 6695 of file civetweb.c.
|
static |
Definition at line 11601 of file civetweb.c.
|
static |
Definition at line 8806 of file civetweb.c.
|
static |
Definition at line 9435 of file civetweb.c.
Definition at line 3845 of file civetweb.c.
|
static |
Definition at line 8275 of file civetweb.c.
|
static |
Definition at line 8355 of file civetweb.c.
|
static |
Definition at line 7808 of file civetweb.c.
Definition at line 10420 of file civetweb.c.
|
static |
Definition at line 10605 of file civetweb.c.
|
static |
Definition at line 10691 of file civetweb.c.
Definition at line 13274 of file civetweb.c.
|
static |
Definition at line 14722 of file civetweb.c.
|
static |
Definition at line 9832 of file civetweb.c.
|
static |
Definition at line 11045 of file civetweb.c.
Definition at line 12247 of file civetweb.c.
Definition at line 9289 of file civetweb.c.
|
static |
Definition at line 12190 of file civetweb.c.
|
static |
Definition at line 18516 of file civetweb.c.
|
static |
Definition at line 18809 of file civetweb.c.
|
static |
Definition at line 6413 of file civetweb.c.
|
static |
Definition at line 6184 of file civetweb.c.
|
static |
Definition at line 6136 of file civetweb.c.
|
static |
Definition at line 5970 of file civetweb.c.
|
static |
Definition at line 10267 of file civetweb.c.
|
static |
Definition at line 11670 of file civetweb.c.
|
static |
Definition at line 8505 of file civetweb.c.
|
static |
Definition at line 10798 of file civetweb.c.
|
static |
Definition at line 13543 of file civetweb.c.
|
static |
Definition at line 15590 of file civetweb.c.
|
static |
Definition at line 13995 of file civetweb.c.
|
static |
Definition at line 10304 of file civetweb.c.
|
static |
Definition at line 9509 of file civetweb.c.
|
static |
Definition at line 7872 of file civetweb.c.
|
static |
Definition at line 16889 of file civetweb.c.
|
static |
Definition at line 9449 of file civetweb.c.
|
static |
Definition at line 4117 of file civetweb.c.
|
static |
Definition at line 8724 of file civetweb.c.
|
static |
Definition at line 9728 of file civetweb.c.
|
static |
Definition at line 4051 of file civetweb.c.
|
static |
Definition at line 12159 of file civetweb.c.
|
static |
Definition at line 11984 of file civetweb.c.
|
static |
Definition at line 4069 of file civetweb.c.
|
static |
Definition at line 16875 of file civetweb.c.
Definition at line 5860 of file civetweb.c.
|
static |
Definition at line 5647 of file civetweb.c.
|
static |
Definition at line 16849 of file civetweb.c.
Definition at line 5846 of file civetweb.c.
|
static |
Definition at line 14957 of file civetweb.c.
Definition at line 16931 of file civetweb.c.
Definition at line 13383 of file civetweb.c.
|
static |
Definition at line 15480 of file civetweb.c.
|
static |
Definition at line 4029 of file civetweb.c.
|
static |
Definition at line 4018 of file civetweb.c.
|
static |
Definition at line 3979 of file civetweb.c.
|
static |
Definition at line 13230 of file civetweb.c.
|
static |
Definition at line 3700 of file civetweb.c.
Definition at line 10375 of file civetweb.c.
|
static |
Definition at line 3256 of file civetweb.c.
|
static |
Definition at line 5738 of file civetweb.c.
|
static |
Definition at line 15798 of file civetweb.c.
|
static |
Definition at line 15833 of file civetweb.c.
|
static |
Definition at line 16230 of file civetweb.c.
Definition at line 16263 of file civetweb.c.
Definition at line 15910 of file civetweb.c.
Definition at line 16279 of file civetweb.c.
|
static |
Definition at line 16153 of file civetweb.c.
|
static |
Definition at line 15668 of file civetweb.c.
|
static |
Definition at line 7389 of file civetweb.c.
|
static |
Definition at line 4041 of file civetweb.c.
|
static |
Definition at line 13482 of file civetweb.c.
|
static |
Definition at line 15534 of file civetweb.c.
|
static |
Definition at line 16807 of file civetweb.c.
|
static |
Definition at line 6982 of file civetweb.c.
|
static |
Definition at line 19085 of file civetweb.c.
|
static |
Definition at line 18852 of file civetweb.c.
const struct { ... } abs_uri_protocols[] |
const struct { ... } builtin_mime_types[] |
|
static |
Definition at line 2049 of file civetweb.c.
|
static |
Definition at line 16019 of file civetweb.c.
|
static |
Definition at line 16028 of file civetweb.c.
unsigned default_port |
Definition at line 17537 of file civetweb.c.
size_t ext_len |
Definition at line 8026 of file civetweb.c.
const char* extension |
Definition at line 8025 of file civetweb.c.
|
static |
Definition at line 1086 of file civetweb.c.
|
static |
Definition at line 10508 of file civetweb.c.
|
static |
Definition at line 1549 of file civetweb.c.
const char* mime_type |
Definition at line 8027 of file civetweb.c.
|
static |
Definition at line 1806 of file civetweb.c.
const char* proto |
Definition at line 17535 of file civetweb.c.
size_t proto_len |
Definition at line 17536 of file civetweb.c.
|
static |
Definition at line 1071 of file civetweb.c.
|
static |
Definition at line 15664 of file civetweb.c.
|
static |
Definition at line 16018 of file civetweb.c.
char static_assert_replacement |
Definition at line 123 of file civetweb.c.
|
static |
Definition at line 1572 of file civetweb.c.
|
static |
Definition at line 1573 of file civetweb.c.