diff --git a/mongoose.c b/mongoose.c index 833a5400..6e4e6bdf 100644 --- a/mongoose.c +++ b/mongoose.c @@ -4101,7 +4101,12 @@ static int load_dll(struct mg_context *ctx, const char *dll_name, // Dynamically load SSL library. Set up ctx->ssl_ctx pointer. static int set_ssl_option(struct mg_context *ctx) { int i, size; - const char *pem = ctx->config[SSL_CERTIFICATE]; + const char *pem; + + // If PEM file is not specified, skip SSL initialization. + if ((pem = ctx->config[SSL_CERTIFICATE]) == NULL) { + return 1; + } #if !defined(NO_SSL_DL) if (!load_dll(ctx, SSL_LIB, ssl_sw) || @@ -4125,7 +4130,7 @@ static int set_ssl_option(struct mg_context *ctx) { // If user callback returned non-NULL, that means that user callback has // set up certificate itself. In this case, skip sertificate setting. - if (call_user(fc(ctx), MG_INIT_SSL) == NULL && pem != NULL && + if (call_user(fc(ctx), MG_INIT_SSL) == NULL && (SSL_CTX_use_certificate_file(ctx->ssl_ctx, pem, SSL_FILETYPE_PEM) == 0 || SSL_CTX_use_PrivateKey_file(ctx->ssl_ctx, pem, SSL_FILETYPE_PEM) == 0)) { cry(fc(ctx), "%s: cannot open %s: %s", __func__, pem, ssl_error());