|
@@ -13183,9 +13183,8 @@ parse_port_string(const struct vec *vec, struct socket *so, int *ip_version)
|
|
|
|
|
|
/* Is there any SSL port in use? */
|
|
/* Is there any SSL port in use? */
|
|
static int
|
|
static int
|
|
-is_ssl_port_used(const struct mg_context *ctx)
|
|
|
|
|
|
+is_ssl_port_used(const char *ports)
|
|
{
|
|
{
|
|
- const char *ports = ctx->config[LISTENING_PORTS];
|
|
|
|
if (ports) {
|
|
if (ports) {
|
|
if (strchr(ports, 's')) {
|
|
if (strchr(ports, 's')) {
|
|
return 1;
|
|
return 1;
|
|
@@ -14255,7 +14254,7 @@ set_ssl_option(struct mg_context *ctx)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
- if (!is_ssl_port_used(ctx)) {
|
|
|
|
|
|
+ if (!is_ssl_port_used(ctx->config[LISTENING_PORTS])) {
|
|
/* No SSL port is set. No need to setup SSL. */
|
|
/* No SSL port is set. No need to setup SSL. */
|
|
return 1;
|
|
return 1;
|
|
}
|
|
}
|
|
@@ -16736,7 +16735,29 @@ mg_start(const struct mg_callbacks *callbacks,
|
|
if (mg_init_library_called == 0) {
|
|
if (mg_init_library_called == 0) {
|
|
/* Legacy INIT, if mg_start is called without mg_init_library.
|
|
/* Legacy INIT, if mg_start is called without mg_init_library.
|
|
* Note: This may cause a memory leak */
|
|
* Note: This may cause a memory leak */
|
|
- mg_init_library(0);
|
|
|
|
|
|
+ const char *ports_option =
|
|
|
|
+ config_options[LISTENING_PORTS].default_value;
|
|
|
|
+
|
|
|
|
+ if (options) {
|
|
|
|
+ const char **run_options = options;
|
|
|
|
+ const char *optname = config_options[LISTENING_PORTS].name;
|
|
|
|
+
|
|
|
|
+ /* Try to find the "listening_ports" option */
|
|
|
|
+ while (*run_options) {
|
|
|
|
+ if (!strcmp(*run_options, optname)) {
|
|
|
|
+ ports_option = run_options[1];
|
|
|
|
+ }
|
|
|
|
+ run_options += 2;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (is_ssl_port_used(ports_option)) {
|
|
|
|
+ /* Initialize with SSL support */
|
|
|
|
+ mg_init_library(2);
|
|
|
|
+ } else {
|
|
|
|
+ /* Initialize without SSL support */
|
|
|
|
+ mg_init_library(0);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
tls.is_master = -1;
|
|
tls.is_master = -1;
|