const boring = @import("./deps/boringssl.translated.zig"); pub usingnamespace boring; const std = @import("std"); const bun = @import("root").bun; const builtin = @import("builtin"); var loaded = false; pub fn load() void { if (loaded) return; loaded = true; boring.CRYPTO_library_init(); std.debug.assert(boring.SSL_library_init() > 0); boring.SSL_load_error_strings(); boring.ERR_load_BIO_strings(); boring.OpenSSL_add_all_algorithms(); if (!builtin.is_test) { std.mem.doNotOptimizeAway(&OPENSSL_memory_alloc); std.mem.doNotOptimizeAway(&OPENSSL_memory_get_size); std.mem.doNotOptimizeAway(&OPENSSL_memory_free); } } var ctx_: ?*boring.SSL_CTX = null; pub fn initClient() *boring.SSL { if (ctx_ != null) _ = boring.SSL_CTX_up_ref(ctx_.?); var ctx = ctx_ orelse brk: { ctx_ = boring.SSL_CTX.init().?; break :brk ctx_.?; }; var ssl = boring.SSL.init(ctx); ssl.setIsClient(true); return ssl; } // void*, OPENSSL_memory_alloc, (size_t size) // void, OPENSSL_memory_free, (void *ptr) // size_t, OPENSSL_memory_get_size, (void *ptr) // The following three functions can be defined to override default heap // allocation and freeing. If defined, it is the responsibility of // |OPENSSL_memory_free| to zero out the memory before returning it to the // system. |OPENSSL_memory_free| will not be passed NULL pointers. // // WARNING: These functions are called on every allocation and free in // BoringSSL across the entire process. They may be called by any code in the // process which calls BoringSSL, including in process initializers and thread // destructors. When called, BoringSSL may hold pthreads locks. Any other code // in the process which, directly or indirectly, calls BoringSSL may be on the // call stack and may itself be using arbitrary synchronization primitives. // // As a result, these functions may not have the usual programming environment // available to most C or C++ code. In particular, they may not call into // BoringSSL, or any library which depends on BoringSSL. Any synchronization // primitives used must tolerate every other synchronization primitive linked // into the process, including pthreads locks. Failing to meet these constraints // may result in deadlocks, crashes, or memory corruption. export fn OPENSSL_memory_alloc(size: usize) ?*anyopaque { return bun.Mimalloc.mi_malloc(size); } // BoringSSL always expects memory to be zero'd export fn OPENSSL_memory_free(ptr: *anyopaque) void { const len = bun.Mimalloc.mi_usable_size(ptr); @memset(@as([*]u8, @ptrCast(ptr))[0..len], 0); bun.Mimalloc.mi_free(ptr); } export fn OPENSSL_memory_get_size(ptr: ?*const anyopaque) usize { return bun.Mimalloc.mi_usable_size(ptr); } test "load" { load(); } all Unnamed repository; edit this file 'description' to name the repository.
aboutsummaryrefslogtreecommitdiff
path: root/src/react-refresh.js (unfollow)
AgeCommit message (Expand)AuthorFilesLines
2023-09-20add `emitDecoratorMetadata` (#5777)Gravatar Dylan Conway 19-110/+1884
2023-09-20fix(doc): correct `server.reload` (#5799)Gravatar Ai Hoshino 1-1/+1
2023-09-20Call `Error.prepareStackTrace` on `new Error().stack` (#5802)Gravatar Jarred Sumner 6-155/+277
2023-09-20Fixes #5800Gravatar Jarred Sumner 1-1/+1
2023-09-20Fix path used in bunx (#5785)Gravatar Jarred Sumner 2-26/+51
2023-09-20Fix RedirectURLTooLong errors (#5786)Gravatar ggobbe 1-1/+1
2023-09-19Show when a newer version is available in the install screen (#5780)Gravatar Jarred Sumner 3-14/+95
2023-09-19Fix broken linksGravatar Colin McDonnell 4-4/+4