authorgravatar for johnnymarler@gmail.comJonathan Marler <johnnymarler@gmail.com> 2023-03-06 18:29:27-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-05-03 20:52:18-07:00
log5def162391da5050761beb3e6efb24b99716fc99
tree45df1f1ccf7fb365bbeee97a17e2c3256feeca06
parentf05cd008d89f36da0aaea315dd480edeb7870a45

fix bug and simplify std.crypto.tls.Client.limitVecs


1 files changed, 6 insertions(+), 9 deletions(-)

lib/std/crypto/tls/Client.zig+6-9
...@@ -1330,18 +1330,15 @@ const VecPut = struct {...@@ -1330,18 +1330,15 @@ const VecPut = struct {
13301330
1331/// Limit iovecs to a specific byte size.1331/// Limit iovecs to a specific byte size.
1332fn limitVecs(iovecs: []std.os.iovec, len: usize) []std.os.iovec {1332fn limitVecs(iovecs: []std.os.iovec, len: usize) []std.os.iovec {
1333 var vec_i: usize = 0;
1334 var bytes_left: usize = len;1333 var bytes_left: usize = len;
1335 while (true) {1334 for (iovecs, 0..) |*iovec, vec_i| {
1336 if (bytes_left >= iovecs[vec_i].iov_len) {1335 if (bytes_left <= iovec.iov_len) {
1337 bytes_left -= iovecs[vec_i].iov_len;1336 iovec.iov_len = bytes_left;
1338 vec_i += 1;1337 return iovecs[0 .. vec_i + 1];
1339 if (vec_i == iovecs.len or bytes_left == 0) return iovecs[0..vec_i];
1340 continue;
1341 }1338 }
1342 iovecs[vec_i].iov_len = bytes_left;1339 bytes_left -= iovec.iov_len;
1343 return iovecs[0..vec_i];
1344 }1340 }
1341 return iovecs;
1345}1342}
13461343
1347/// The priority order here is chosen based on what crypto algorithms Zig has1344/// The priority order here is chosen based on what crypto algorithms Zig has