Skip to content

Commit ee2e192

Browse files
committed
upgrade wasmtime* 0.22 => 0.23
1 parent 6ccedfd commit ee2e192

10 files changed

Lines changed: 366 additions & 170 deletions

Cargo.lock

Lines changed: 328 additions & 134 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,9 @@ structopt = "0.3"
2828
tokio = { version = "1.0", features = ["macros", "rt-multi-thread"] }
2929
tokio-rustls = "0.22"
3030
user-agent-parser = "0.2.7"
31-
wasmtime = "0.22"
32-
wasmtime-wasi = "0.22"
31+
wasmtime = "0.23"
32+
wasmtime-wasi = "0.23"
33+
wasi-cap-std-sync = "0.23"
3334
chrono = "0.4"
3435
toml = "0.5"
3536
serde_derive = "1.0" # why is this needed?

src/fastly_dictionary.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ fn open(
4040
addr, len, dict_out
4141
);
4242
let mut memory = memory!(caller);
43-
let (_, buf) = match memory.read(addr, len) {
43+
let (_, buf) = match memory.read_bytes(addr, len) {
4444
Ok(result) => result,
4545
_ => return Err(Trap::new("failed to read dictionary name")),
4646
};
@@ -84,14 +84,14 @@ fn get(
8484
{
8585
Some(dict) => {
8686
let mut memory = memory!(caller);
87-
let (_, buf) = match memory!(caller).read(key_addr, key_len) {
87+
let (_, buf) = match memory!(caller).read_bytes(key_addr, key_len) {
8888
Ok(result) => result,
8989
_ => return Err(Trap::new("failed to read dictionary name")),
9090
};
9191
let key = str::from_utf8(&buf).unwrap();
9292
debug!("getting dictionary key {}", key);
9393
match dict.get(key) {
94-
Some(value) => match memory.write(value_addr, &value.as_bytes()) {
94+
Some(value) => match memory.write_bytes(value_addr, &value.as_bytes()) {
9595
Ok(written) => {
9696
memory.write_i32(nwritten, written as i32);
9797
}

src/fastly_http_body.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ fn write(
100100
match handler.inner.borrow_mut().bodies.get_mut(handle as usize) {
101101
Some(body) => {
102102
let mut mem = memory!(caller);
103-
let (read, buf) = match mem.read(addr, size) {
103+
let (read, buf) = match mem.read_bytes(addr, size) {
104104
Ok((num, buf)) => (num, buf),
105105
_ => return Err(Trap::new("Failed to read body memory")),
106106
};
@@ -139,7 +139,7 @@ fn read(
139139
{
140140
Some(body) => {
141141
let mut memory = memory!(caller);
142-
match memory.write(buf, body.as_ref()) {
142+
match memory.write_bytes(buf, body.as_ref()) {
143143
Ok(written) => {
144144
debug!("fastly_http_body::read write {} bytes", written);
145145
memory.write_i32(nread_out, written as i32);

src/fastly_http_req.rs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ fn original_header_names_get(
212212
Some(hdr) => {
213213
let mut bytes = hdr.as_bytes().to_vec();
214214
bytes.push(0); // api requires a terminating \x00 byte
215-
let written = memory.write(buf, &bytes).unwrap();
215+
let written = memory.write_bytes(buf, &bytes).unwrap();
216216
memory.write_i32(nwritten, written as i32);
217217
memory.write_i32(
218218
ending_cursor,
@@ -325,7 +325,7 @@ fn downstream_client_ip_addr(
325325
IpAddr::V4(ip) => ip.octets().to_vec(),
326326
IpAddr::V6(ip) => ip.octets().to_vec(),
327327
};
328-
match memory.write(addr, &bytes) {
328+
match memory.write_bytes(addr, &bytes) {
329329
Ok(written) => memory.write_i32(num_written, written as i32),
330330
_ => return Err(Trap::new("failed to write ip address")),
331331
}
@@ -371,7 +371,7 @@ fn method_get(
371371
match handler.inner.borrow().requests.get(handle as usize) {
372372
Some(req) => {
373373
debug!("fastly_http_req::method_get => {}", req.method);
374-
let written = match mem.write(addr, req.method.as_ref().as_bytes()) {
374+
let written = match mem.write_bytes(addr, req.method.as_ref().as_bytes()) {
375375
Ok(num) => num,
376376
_ => return Err(Trap::new("Failed to write request HTTP method bytes")),
377377
};
@@ -392,7 +392,7 @@ fn method_set(
392392
Func::wrap(
393393
store,
394394
move |caller: Caller<'_>, handle: RequestHandle, addr: i32, size: i32| {
395-
let (_, buf) = match memory!(caller).read(addr, size) {
395+
let (_, buf) = match memory!(caller).read_bytes(addr, size) {
396396
Ok(result) => result,
397397
_ => return Err(Trap::new("failed to read body memory")),
398398
};
@@ -429,7 +429,7 @@ fn uri_get(
429429
Some(request) => {
430430
let uri = request.uri.to_string();
431431
debug!("fastly_http_req::uri_get => {}", uri);
432-
let written = match mem.write(addr, uri.as_bytes()) {
432+
let written = match mem.write_bytes(addr, uri.as_bytes()) {
433433
Ok(num) => num,
434434
_ => return Err(Trap::new("failed to write method bytes")),
435435
};
@@ -459,7 +459,7 @@ fn send(
459459
resp_body_handle_out: BodyHandle| {
460460
debug!("fastly_http_req::send req_handle={}, body_handle={} backend_addr={} backend_len={} resp_handle_out={} resp_body_handle_out={}", req_handle, body_handle, backend_addr, backend_len, resp_handle_out, resp_body_handle_out);
461461
let mut memory = memory!(caller);
462-
let (_, buf) = match memory.read(backend_addr, backend_len) {
462+
let (_, buf) = match memory.read_bytes(backend_addr, backend_len) {
463463
Ok(result) => result,
464464
_ => return Err(Trap::new("error reading backend name")),
465465
};
@@ -525,7 +525,7 @@ fn uri_set(
525525
.get_mut(rhandle as usize)
526526
{
527527
Some(req) => {
528-
let (_, buf) = match memory!(caller).read(addr, size) {
528+
let (_, buf) = match memory!(caller).read_bytes(addr, size) {
529529
Ok(result) => result,
530530
_ => return Err(Trap::new("failed to read request uri")),
531531
};
@@ -605,7 +605,7 @@ fn header_names_get(
605605
Some(hdr) => {
606606
let mut bytes = hdr.as_bytes().to_vec();
607607
bytes.push(0); // api requires a terminating \x00 byte
608-
let written = memory.write(addr, &bytes).unwrap();
608+
let written = memory.write_bytes(addr, &bytes).unwrap();
609609
memory.write_i32(nwritten_out, written as i32);
610610
memory.write_i32(
611611
ending_cursor_out,
@@ -649,7 +649,7 @@ fn header_values_get(
649649
match handler.inner.borrow_mut().requests.get_mut(handle as usize) {
650650
Some(req) => {
651651
let mut memory = memory!(caller);
652-
let (_, header) = match memory.read(name_addr, name_size) {
652+
let (_, header) = match memory.read_bytes(name_addr, name_size) {
653653
Ok(result) => result,
654654
_ => return Err(Trap::new("Failed to read header name")),
655655
};
@@ -668,7 +668,7 @@ fn header_values_get(
668668
Some(val) => {
669669
let mut bytes = val.to_vec();
670670
bytes.push(0); // api requires a terminating \x00 byte
671-
let written = memory.write(addr, &bytes).unwrap();
671+
let written = memory.write_bytes(addr, &bytes).unwrap();
672672
memory.write_i32(nwritten_out, written as i32);
673673
memory.write_i32(
674674
ending_cursor_out,
@@ -710,7 +710,7 @@ fn header_values_set(
710710
match handler.inner.borrow_mut().requests.get_mut(handle as usize) {
711711
Some(req) => {
712712
let mut memory = memory!(caller);
713-
let name = match memory.read(name_addr, name_size) {
713+
let name = match memory.read_bytes(name_addr, name_size) {
714714
Ok((_, bytes)) => match HeaderName::from_bytes(&bytes) {
715715
Ok(name) => name,
716716
_ => {
@@ -723,7 +723,7 @@ fn header_values_set(
723723
_ => return Err(Trap::new("failed to read header name")),
724724
};
725725
// values are \u{0} terminated so read 1 less byte
726-
let value = match memory.read(values_addr, values_size - 1) {
726+
let value = match memory.read_bytes(values_addr, values_size - 1) {
727727
Ok((_, bytes)) => match HeaderValue::from_bytes(&bytes) {
728728
Ok(value) => value,
729729
_ => {

src/fastly_http_resp.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ fn header_names_get(
167167
Some(hdr) => {
168168
let mut bytes = hdr.as_bytes().to_vec();
169169
bytes.push(0); // api requires a terminating \x00 byte
170-
let written = memory.write(addr, &bytes).unwrap();
170+
let written = memory.write_bytes(addr, &bytes).unwrap();
171171
memory.write_i32(nwritten_out, written as i32);
172172
memory.write_i32(
173173
ending_cursor_out,
@@ -218,7 +218,7 @@ fn header_values_get(
218218
.get_mut(handle as usize)
219219
{
220220
Some(resp) => {
221-
let name = match memory.read(name_addr, name_size) {
221+
let name = match memory.read_bytes(name_addr, name_size) {
222222
Ok((_, bytes)) => HeaderName::from_bytes(&bytes).unwrap(),
223223
_ => return Err(Trap::new("Failed to read header name")),
224224
};
@@ -236,7 +236,7 @@ fn header_values_get(
236236
Some(val) => {
237237
let mut bytes = val.to_vec();
238238
bytes.push(0); // api requires a terminating \x00 byte
239-
let written = memory.write(addr, &bytes).unwrap();
239+
let written = memory.write_bytes(addr, &bytes).unwrap();
240240
memory.write_i32(nwritten_out, written as i32);
241241
memory.write_i32(
242242
ending_cursor_out,
@@ -284,7 +284,7 @@ fn header_values_set(
284284
.get_mut(handle as usize)
285285
{
286286
Some(resp) => {
287-
let name = match memory.read(name_addr, name_size) {
287+
let name = match memory.read_bytes(name_addr, name_size) {
288288
Ok((_, bytes)) => match HeaderName::from_bytes(&bytes) {
289289
Ok(name) => name,
290290
_ => {
@@ -297,7 +297,7 @@ fn header_values_set(
297297
_ => return Err(Trap::new("Failed to read header name")),
298298
};
299299
// values are \u{0} terminated so read one less byte
300-
let value = match memory.read(values_addr, values_size - 1) {
300+
let value = match memory.read_bytes(values_addr, values_size - 1) {
301301
Ok((_, bytes)) => match HeaderValue::from_bytes(&bytes) {
302302
Ok(value) => value,
303303
_ => {

src/fastly_log.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ fn endpoint_get(
3737
name, name_len, endpoint_handle_out
3838
);
3939
let mut memory = memory!(caller);
40-
let endpoint = match memory.read(name, name_len) {
40+
let endpoint = match memory.read_bytes(name, name_len) {
4141
Ok((_, bytes)) => match str::from_utf8(&bytes) {
4242
Ok(name) => name.to_owned(),
4343
_ => return Err(Trap::new("Invalid endpoint name")),
@@ -80,7 +80,7 @@ fn write(
8080
{
8181
Some(endpoint) => {
8282
let mut memory = memory!(caller);
83-
let message = match memory.read(msg, msg_len) {
83+
let message = match memory.read_bytes(msg, msg_len) {
8484
Ok((_, bytes)) => match str::from_utf8(&bytes) {
8585
Ok(data) => data.to_owned(),
8686
_ => return Err(Trap::new("Invalid endpoint name")),

src/fastly_uap.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ fn parse(store: &Store) -> Func {
4040
patch_written: i32| {
4141
debug!("fastly_uap::parse");
4242
let mut memory = memory!(caller);
43-
match memory.read(user_agent, user_agent_max_len) {
43+
match memory.read_bytes(user_agent, user_agent_max_len) {
4444
Ok((_, bytes)) => match str::from_utf8(&bytes) {
4545
Ok(a) => {
4646
let Product {
@@ -50,25 +50,25 @@ fn parse(store: &Store) -> Func {
5050
patch,
5151
} = UAP.parse_product(a);
5252
if let Some(fam) = name {
53-
match memory.write(family_pos, fam.as_bytes()) {
53+
match memory.write_bytes(family_pos, fam.as_bytes()) {
5454
Ok(bytes) => memory.write_i32(family_written, bytes as i32),
5555
_ => return Err(Trap::i32_exit(FastlyStatus::ERROR.code)),
5656
}
5757
}
5858
if let Some(maj) = major {
59-
match memory.write(major_pos, maj.as_bytes()) {
59+
match memory.write_bytes(major_pos, maj.as_bytes()) {
6060
Ok(bytes) => memory.write_i32(major_written, bytes as i32),
6161
_ => return Err(Trap::i32_exit(FastlyStatus::ERROR.code)),
6262
}
6363
}
6464
if let Some(min) = minor {
65-
match memory.write(minor_pos, min.as_bytes()) {
65+
match memory.write_bytes(minor_pos, min.as_bytes()) {
6666
Ok(bytes) => memory.write_i32(minor_written, bytes as i32),
6767
_ => return Err(Trap::i32_exit(FastlyStatus::ERROR.code)),
6868
}
6969
}
7070
if let Some(pat) = patch {
71-
match memory.write(patch_pos, pat.as_bytes()) {
71+
match memory.write_bytes(patch_pos, pat.as_bytes()) {
7272
Ok(bytes) => memory.write_i32(patch_written, bytes as i32),
7373
_ => return Err(Trap::i32_exit(FastlyStatus::ERROR.code)),
7474
}

src/handler.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@ use http::{request::Parts as RequestParts, response::Parts as ResponseParts};
77
use hyper::{Body, Request, Response};
88
use log::debug;
99
use std::{cell::RefCell, collections::HashMap, net::IpAddr, rc::Rc};
10+
use wasi_cap_std_sync::WasiCtxBuilder;
1011
use wasmtime::{Linker, Module, Store, Trap};
11-
use wasmtime_wasi::{Wasi, WasiCtxBuilder};
12+
use wasmtime_wasi::Wasi;
1213

1314
#[derive(Debug, Default)]
1415
pub struct Endpoint(pub String);

src/memory.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ pub trait WriteMem {
3333
value: u32,
3434
);
3535

36-
fn write(
36+
fn write_bytes(
3737
&mut self,
3838
index: i32,
3939
bytes: &[u8],
@@ -63,7 +63,7 @@ impl WriteMem for Memory {
6363
)
6464
}
6565

66-
fn write(
66+
fn write_bytes(
6767
&mut self,
6868
index: i32,
6969
bytes: &[u8],
@@ -74,15 +74,15 @@ impl WriteMem for Memory {
7474

7575
/// Convience api for common read operations
7676
pub trait ReadMem {
77-
fn read(
77+
fn read_bytes(
7878
&mut self,
7979
index: i32,
8080
amount: i32,
8181
) -> io::Result<(usize, Vec<u8>)>;
8282
}
8383

8484
impl ReadMem for Memory {
85-
fn read(
85+
fn read_bytes(
8686
&mut self,
8787
index: i32,
8888
amount: i32,

0 commit comments

Comments
 (0)