diff --git a/mongoose.c b/mongoose.c
index d5857b050bfb365a1b17dde6be69e7df4c8b7612..3e20d1391c4d8f325b4589ceb11c782100a6e6ef 100644
--- a/mongoose.c
+++ b/mongoose.c
@@ -4705,7 +4705,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 ((ctx->callbacks.init_ssl == NULL ||
-       !ctx->callbacks.init_ssl(ctx->ssl_ctx)) &&
+       !ctx->callbacks.init_ssl(ctx->ssl_ctx, ctx->user_data)) &&
       (SSL_CTX_use_certificate_file(ctx->ssl_ctx, pem, 1) == 0 ||
        SSL_CTX_use_PrivateKey_file(ctx->ssl_ctx, pem, 1) == 0)) {
     cry(fc(ctx), "%s: cannot open %s: %s", __func__, pem, ssl_error());
diff --git a/mongoose.h b/mongoose.h
index d3635333353286787f8b7572f125ae04cd28a7e9..84a711bf71d452ba6d419e3990cf477fbca3cf17 100644
--- a/mongoose.h
+++ b/mongoose.h
@@ -59,7 +59,7 @@ struct mg_callbacks {
   int  (*begin_request)(struct mg_connection *);
   void (*end_request)(const struct mg_connection *, int reply_status_code);
   int  (*log_message)(const struct mg_connection *, const char *message);
-  int  (*init_ssl)(void *ssl_context);
+  int  (*init_ssl)(void *ssl_context, void *user_data);
   int (*websocket_connect)(const struct mg_connection *);
   void (*websocket_ready)(struct mg_connection *);
   int  (*websocket_data)(struct mg_connection *);