Skip to content

Commit ffd02fa

Browse files
committed
DoT
1 parent 6bb138c commit ffd02fa

17 files changed

+614
-239
lines changed

.vscode/c_cpp_properties.json

+2-5
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,13 @@
55
"intelliSenseMode": "linux-clang-x64",
66
"compilerPath": "/usr/bin/clang",
77
"compilerArgs": [
8-
"-I${workspaceFolder}/src/wolfssl",
9-
"-I${workspaceFolder}/dep/wolfssl-5.7.0",
10-
"-I${workspaceFolder}/dep/openssl-3.2.0@x86_64-linux-musl@x86_64+native@fast+lto/include",
8+
"-I${workspaceFolder}/dep/wolfssl-5.7.0-stable",
119
"-I${workspaceFolder}/dep/mimalloc-2.1.2/include"
1210
],
1311
"defines": [
1412
"MUSL",
1513
"TEST",
16-
"BUILDING_WOLFSSL",
17-
"WOLFSSL_USER_SETTINGS",
14+
"ENABLE_WOLFSSL"
1815
],
1916
"cStandard": "c11",
2017
"cppStandard": "c++17"

.vscode/settings.json

-7
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,8 @@
11
{
22
"files.associations": {
3-
"*.config": "lua",
43
"*.h": "c",
54
"*.i": "c",
65
"*.in": "c",
76
"*.S": "c",
8-
"*.inc": "c",
9-
"chrono": "c",
10-
"typeinfo": "c",
11-
"complex": "c",
12-
"format": "c",
13-
"random": "c"
147
},
158
}

build.zig

+22-4
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ fn option_lto() void {
141141
else => false,
142142
};
143143
_lto = _b.option(bool, "lto", "enable LTO, default to true if in fast/small/safe mode") orelse default;
144+
_lto = false;
144145
}
145146

146147
fn option_strip() void {
@@ -515,6 +516,7 @@ fn build_wolfssl() *Step {
515516
\\ zig_cache_dir='{s}'
516517
\\ is_musl='{s}'
517518
\\ lto='{s}'
519+
\\ cwd="$PWD"
518520
\\
519521
\\ cd "$src_dir"
520522
\\
@@ -530,9 +532,23 @@ fn build_wolfssl() *Step {
530532
\\ [ "$target_triple" ] && host="--host=$target_triple" || host=""
531533
\\
532534
\\ ./autogen.sh
533-
\\ ./configure $host --prefix="$install_dir" --enable-opensslall --enable-static --disable-shared \
534-
\\ --enable-staticmemory --disable-crypttests --disable-benchmark --disable-examples \
535-
\\ --enable-singlethreaded
535+
\\ ./configure $host \
536+
\\ --prefix="$install_dir" \
537+
\\ --enable-static \
538+
\\ --disable-shared \
539+
\\ --disable-harden \
540+
\\ --enable-staticmemory \
541+
\\ --enable-singlethreaded \
542+
\\ --disable-threadlocal \
543+
\\ --disable-asyncthreads \
544+
\\ --disable-error-queue-per-thread \
545+
\\ --enable-openssl-compatible-defaults \
546+
\\ --enable-opensslextra --enable-opensslall \
547+
\\ --disable-dtls --disable-oldtls --enable-tls13 \
548+
\\ --enable-chacha --enable-poly1305 --enable-aesgcm \
549+
\\ --enable-ecc --enable-sni --enable-session-ticket \
550+
\\ --disable-crypttests --disable-benchmark --disable-examples \
551+
\\ EXTRA_CFLAGS="-include $cwd/src/wolfssl_opt.h"
536552
\\ make install
537553
;
538554

@@ -684,8 +700,10 @@ fn link_obj_chinadns(exe: *LibExeObjStep) void {
684700
obj.defineCMacroRaw("MUSL");
685701

686702
// wolfssl lib
687-
if (_enable_wolfssl)
703+
if (_enable_wolfssl) {
704+
obj.defineCMacroRaw("ENABLE_WOLFSSL");
688705
obj.addIncludePath(_dep_wolfssl.include_dir);
706+
}
689707

690708
// for log.h
691709
obj.defineCMacroRaw(fmt("LOG_FILENAME=\"{s}\"", .{file.name}));

src/EvLoop.zig

+8-8
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
const std = @import("std");
22
const root = @import("root");
3+
const build_opts = @import("build_opts");
34
const g = @import("g.zig");
45
const c = @import("c.zig");
56
const cc = @import("cc.zig");
@@ -482,7 +483,6 @@ pub fn recvfrom(self: *EvLoop, fdobj: *Fd, buf: []u8, flags: c_int, src_addr: *c
482483
}
483484
}
484485

485-
/// length 0 means EOF
486486
pub fn recv(self: *EvLoop, fdobj: *Fd, buf: []u8, flags: c_int) ?usize {
487487
while (true) {
488488
return cc.recv(fdobj.fd, buf, flags) orelse {
@@ -498,15 +498,15 @@ pub fn recv(self: *EvLoop, fdobj: *Fd, buf: []u8, flags: c_int) ?usize {
498498
}
499499
}
500500

501-
/// read exactly `buf.len` bytes (res:null and errno:0 means EOF)
502-
pub fn recv_exactly(self: *EvLoop, fdobj: *Fd, buf: []u8, flags: c_int) ?void {
501+
const ReadErr = error{ eof, other };
502+
503+
pub fn recv_exactly(self: *EvLoop, fdobj: *Fd, buf: []u8, flags: c_int) ReadErr!void {
503504
var nread: usize = 0;
504505
while (nread < buf.len) {
505-
const n = self.recv(fdobj, buf[nread..], flags) orelse return null;
506-
if (n == 0) {
507-
cc.set_errno(0); // EOF
508-
return null;
509-
}
506+
const n = self.recv(fdobj, buf[nread..], flags) orelse
507+
return ReadErr.other;
508+
if (n == 0)
509+
return ReadErr.eof;
510510
nread += n;
511511
// https://man7.org/linux/man-pages/man7/epoll.7.html
512512
if (nread < buf.len) {

0 commit comments

Comments
 (0)