From 754f6548af06b02b7a0cf0fc95abbe802a292e61 Mon Sep 17 00:00:00 2001 From: Alexander Medvednikov Date: Tue, 14 Apr 2026 12:45:30 +0300 Subject: [PATCH] net: examples/concurrency/concurrency_http.v fails on BSD with tcc (fixes #24728) --- vlib/net/ssl/ssl_bsd_tinyc_backend_test.v | 7 ++++ vlib/net/ssl/ssl_notd_use_openssl.v | 47 +++++++++++++++++------ 2 files changed, 42 insertions(+), 12 deletions(-) create mode 100644 vlib/net/ssl/ssl_bsd_tinyc_backend_test.v diff --git a/vlib/net/ssl/ssl_bsd_tinyc_backend_test.v b/vlib/net/ssl/ssl_bsd_tinyc_backend_test.v new file mode 100644 index 000000000..6f4d65508 --- /dev/null +++ b/vlib/net/ssl/ssl_bsd_tinyc_backend_test.v @@ -0,0 +1,7 @@ +// vtest build: tinyc && (freebsd || openbsd) +module ssl + +fn test_bsd_tinyc_defaults_to_openssl_backend() { + mut conn := SSLConn{} + assert conn.sslctx == unsafe { nil } +} diff --git a/vlib/net/ssl/ssl_notd_use_openssl.v b/vlib/net/ssl/ssl_notd_use_openssl.v index 1f4081957..28427db34 100644 --- a/vlib/net/ssl/ssl_notd_use_openssl.v +++ b/vlib/net/ssl/ssl_notd_use_openssl.v @@ -1,18 +1,41 @@ module ssl -import net.mbedtls - -pub struct SSLConn { - mbedtls.SSLConn +$if tinyc && (freebsd || openbsd) { + import net.openssl +} $else { + import net.mbedtls } -@[params] -pub struct SSLConnectConfig { - mbedtls.SSLConnectConfig -} +$if tinyc && (freebsd || openbsd) { + // TinyCC hangs in the bundled mbedtls path on FreeBSD/OpenBSD. + // Prefer the OpenSSL backend there, which does not exhibit the issue. + pub struct SSLConn { + openssl.SSLConn + } + + pub struct SSLConnectConfig { + openssl.SSLConnectConfig + } + + // new_ssl_conn returns a new SSLConn with the given config. + @[params] + pub fn new_ssl_conn(config SSLConnectConfig) !&SSLConn { + c := openssl.new_ssl_conn(config.SSLConnectConfig) or { return err } + return &SSLConn{c} + } +} $else { + pub struct SSLConn { + mbedtls.SSLConn + } + + pub struct SSLConnectConfig { + mbedtls.SSLConnectConfig + } -// new_ssl_conn returns a new SSLConn with the given config. -pub fn new_ssl_conn(config SSLConnectConfig) !&SSLConn { - c := mbedtls.new_ssl_conn(config.SSLConnectConfig) or { return err } - return &SSLConn{c} + // new_ssl_conn returns a new SSLConn with the given config. + @[params] + pub fn new_ssl_conn(config SSLConnectConfig) !&SSLConn { + c := mbedtls.new_ssl_conn(config.SSLConnectConfig) or { return err } + return &SSLConn{c} + } } -- 2.39.5