mirror of
https://github.com/denoland/deno.git
synced 2025-03-03 09:31:22 -05:00
Check allow-net in fetch
This commit is contained in:
parent
1e709aa348
commit
1052f8d0c9
3 changed files with 25 additions and 6 deletions
|
@ -166,8 +166,7 @@ class FetchRequest {
|
|||
fbs.FetchReq.addId(builder, this.id);
|
||||
fbs.FetchReq.addUrl(builder, url);
|
||||
const msg = fbs.FetchReq.endFetchReq(builder);
|
||||
const res = send(builder, fbs.Any.FetchReq, msg);
|
||||
assert(res == null);
|
||||
send(builder, fbs.Any.FetchReq, msg);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -177,7 +176,7 @@ export function fetch(
|
|||
): Promise<Response> {
|
||||
const fetchReq = new FetchRequest(input as string);
|
||||
const response = fetchReq.response;
|
||||
return new Promise((resolve, reject) => {
|
||||
const promise = new Promise<Response>((resolve, reject) => {
|
||||
response.onHeader = (response: FetchResponse) => {
|
||||
log("onHeader");
|
||||
resolve(response);
|
||||
|
@ -186,6 +185,7 @@ export function fetch(
|
|||
log("onError", error);
|
||||
reject(error);
|
||||
};
|
||||
fetchReq.start();
|
||||
});
|
||||
fetchReq.start();
|
||||
return promise;
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
// Copyright 2018 the Deno authors. All rights reserved. MIT license.
|
||||
import { testPerm, assertEqual } from "./test_util.ts";
|
||||
import { test, testPerm, assert, assertEqual } from "./test_util.ts";
|
||||
import * as deno from "deno";
|
||||
|
||||
testPerm({ net: true }, async function fetchJsonSuccess() {
|
||||
|
@ -7,3 +7,15 @@ testPerm({ net: true }, async function fetchJsonSuccess() {
|
|||
const json = await response.json();
|
||||
assertEqual(json.name, "deno");
|
||||
});
|
||||
|
||||
test(async function fetchPerm() {
|
||||
let err;
|
||||
try {
|
||||
await fetch("http://localhost:4545/package.json");
|
||||
} catch (err_) {
|
||||
err = err_;
|
||||
}
|
||||
// TODO assert(err instanceof deno.PermissionDenied).
|
||||
assert(err);
|
||||
assertEqual(err.name, "deno.PermissionDenied");
|
||||
});
|
||||
|
|
|
@ -289,10 +289,17 @@ fn handle_fetch_req(
|
|||
base: msg::Base,
|
||||
_builder: &mut FlatBufferBuilder,
|
||||
) -> HandlerResult {
|
||||
let deno = from_c(d);
|
||||
if !deno.flags.allow_net {
|
||||
let err = std::io::Error::new(
|
||||
std::io::ErrorKind::PermissionDenied,
|
||||
"allow_net is off.",
|
||||
);
|
||||
return Err(err.into());
|
||||
}
|
||||
let msg = base.msg_as_fetch_req().unwrap();
|
||||
let id = msg.id();
|
||||
let url = msg.url().unwrap();
|
||||
let deno = from_c(d);
|
||||
let url = url.parse::<hyper::Uri>().unwrap();
|
||||
let client = Client::new();
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue