From b8b3a5c305d1a2e11733fe0563e5d5aa597f6c8d Mon Sep 17 00:00:00 2001 From: "Sergio R. Caprile" Date: Fri, 24 Jan 2025 18:58:26 -0300 Subject: [PATCH] fix built-in TLS not calling MG_EV_TLS_HS; uniformize mg_tls_init() --- mongoose.c | 7 +------ src/tls_builtin.c | 1 + src/tls_mbed.c | 3 --- src/tls_openssl.c | 3 --- tutorials/smtp/smtp-client/main.c | 1 + 5 files changed, 3 insertions(+), 12 deletions(-) diff --git a/mongoose.c b/mongoose.c index 3bedd149..8717b6b1 100644 --- a/mongoose.c +++ b/mongoose.c @@ -11154,6 +11154,7 @@ static void mg_tls_client_handshake(struct mg_connection *c) { } tls->state = MG_TLS_STATE_CLIENT_CONNECTED; c->is_tls_hs = 0; + mg_call(c, MG_EV_TLS_HS, NULL); break; default: mg_error(c, "unexpected client state: %d", tls->state); @@ -12912,9 +12913,6 @@ void mg_tls_init(struct mg_connection *c, const struct mg_tls_opts *opts) { c->is_tls_hs = 1; mbedtls_ssl_set_bio(&tls->ssl, c, mg_net_send, mg_net_recv, 0); MG_PROF_ADD(c, "mbedtls_init_end"); - if (c->is_client && c->is_resolving == 0 && c->is_connecting == 0) { - mg_tls_handshake(c); - } return; fail: mg_tls_free(c); @@ -13212,9 +13210,6 @@ void mg_tls_init(struct mg_connection *c, const struct mg_tls_opts *opts) { c->is_tls = 1; c->is_tls_hs = 1; - if (c->is_client && c->is_resolving == 0 && c->is_connecting == 0) { - mg_tls_handshake(c); - } MG_DEBUG(("%lu SSL %s OK", c->id, c->is_accepted ? "accept" : "client")); return; fail: diff --git a/src/tls_builtin.c b/src/tls_builtin.c index 26dc2902..6ad48a90 100644 --- a/src/tls_builtin.c +++ b/src/tls_builtin.c @@ -1193,6 +1193,7 @@ static void mg_tls_client_handshake(struct mg_connection *c) { } tls->state = MG_TLS_STATE_CLIENT_CONNECTED; c->is_tls_hs = 0; + mg_call(c, MG_EV_TLS_HS, NULL); break; default: mg_error(c, "unexpected client state: %d", tls->state); diff --git a/src/tls_mbed.c b/src/tls_mbed.c index 4ca6d09b..a0b92048 100644 --- a/src/tls_mbed.c +++ b/src/tls_mbed.c @@ -164,9 +164,6 @@ void mg_tls_init(struct mg_connection *c, const struct mg_tls_opts *opts) { c->is_tls_hs = 1; mbedtls_ssl_set_bio(&tls->ssl, c, mg_net_send, mg_net_recv, 0); MG_PROF_ADD(c, "mbedtls_init_end"); - if (c->is_client && c->is_resolving == 0 && c->is_connecting == 0) { - mg_tls_handshake(c); - } return; fail: mg_tls_free(c); diff --git a/src/tls_openssl.c b/src/tls_openssl.c index d19d7764..58d45c31 100644 --- a/src/tls_openssl.c +++ b/src/tls_openssl.c @@ -229,9 +229,6 @@ void mg_tls_init(struct mg_connection *c, const struct mg_tls_opts *opts) { c->is_tls = 1; c->is_tls_hs = 1; - if (c->is_client && c->is_resolving == 0 && c->is_connecting == 0) { - mg_tls_handshake(c); - } MG_DEBUG(("%lu SSL %s OK", c->id, c->is_accepted ? "accept" : "client")); return; fail: diff --git a/tutorials/smtp/smtp-client/main.c b/tutorials/smtp/smtp-client/main.c index 4c2f34ac..2bfd769f 100644 --- a/tutorials/smtp/smtp-client/main.c +++ b/tutorials/smtp/smtp-client/main.c @@ -31,6 +31,7 @@ static void fn(struct mg_connection *c, int ev, void *ev_data) { struct mg_tls_opts opts = {.ca = mg_unpacked("/certs/ca.pem"), .name = mg_url_host(server)}; mg_tls_init(c, &opts); + mg_tls_handshake(c); // speed up, not strictly necessary *state = AUTH; } else if (*state == AUTH) { char a[100], b[300] = "";