Interface changes from 1.10 to 1.11 and/or later versions - see also this GitHub issue.
Calling mg_init_library is recommended before calling mg_start.
Compatibility considerations: Initially, mg_init_library will be called implicitly if it has not been called before mg_start. If mg_init_library was not called, mg_stop may leave memory leaks.
Required Actions: Call mg_init_library manually to avoid a small memory leak when closing the server.
Calling mg_lock_connection is no longer called implicitly in mg_websocket_write functions. If you use websocket write functions them from two threads, you must call mg_lock_connection explicitly, just like for any other connection.
This is an API harmonization issue.
Compatibility considerations: If a websocket connection was used in only one thread, there is no incompatibility. If a websocket connection was used in multiple threads, the user has to add the mg_lock_connection before and the mg_unlock_connection after the websocket write call.
Required Actions: Call mg_lock_connection and mg_unlock_connection manually when using mg_websocket_write.
This member is going to be removed. It is superseeded by mg_add_request_handler.
Compatibility considerations: Current code using open_file needs to be changed. Instructions how to do this will be provided.
TLS Server Name Identification (SNI) allows to host different domains with different X.509 certificates on the same physical server (same IP+port). In order to support this, some configurations (like authentication_domain, ssl_certificate, document_root and may others) need to be specified multiple times - once for each domain hosted (see 535).
The current configuration model does not account for SNI, so it needs to be extended to support configuration of multiple instances.
Compatibility considerations: To be defined as soon as possible solutions are evaluated.
The current configuration for access_control_list and throttle only works for IPv4 addresses. If server and client support IPv6 as well, there is no way to add a client to the throttle or access list. The current configuration syntax isn't really comfortable for IPv4 either. Combined with hosting multiple domains (and SNI), different domains may have different block/throttle configurations as well - this has to be considered in a new configuration as well.
Compatibility considerations: To be defined as soon as possible solutions are evaluated.
Calling mg_init_library is required before calling any client function. In particular, the TLS initialization must be done before using mg_connect_client_secure.
Compatibility considerations: Some parts of the client interface did not work, if mg_start was not called before. Now it works after calling mg_init_library - this is not an incompatibility.
mg_connect_client needs several new parameters (options).
Details are to be defined.
mg_connect_client and mg_download should return a different kind of mg_connection than used in server callbacks. At least, there should be a function mg_get_response_info, instead of using mg_get_request_info, and getting the HTTP response code from the server by looking into the uri member of struct mg_request_info.
size_t
in all interfaceHaving size_t
in interfaces while building for 32 and 64 bit
complicates maintenance in an unnecessary way
(see 498).
Replace all data sizes by 64 bit integers.
The current definition of pattern matching is problematic (see 499).
Find and implement a new definition.