diff options
-rw-r--r-- | src/http/async_socket.zig | 17 | ||||
-rw-r--r-- | src/javascript/jsc/webcore/response.zig | 7 |
2 files changed, 15 insertions, 9 deletions
diff --git a/src/http/async_socket.zig b/src/http/async_socket.zig index bdfee7412..3cf25944b 100644 --- a/src/http/async_socket.zig +++ b/src/http/async_socket.zig @@ -116,7 +116,7 @@ pub fn connect(this: *AsyncSocket, name: []const u8, port: u16) ConnectError!voi this.was_keepalive = false; return try this.doConnect(name, port); } - +const strings = @import("strings"); fn doConnect(this: *AsyncSocket, name: []const u8, port: u16) ConnectError!void { this.was_keepalive = false; @@ -129,7 +129,20 @@ fn doConnect(this: *AsyncSocket, name: []const u8, port: u16) ConnectError!void // on macOS, getaddrinfo() is very slow // If you send ~200 network requests, about 1.5s is spent on getaddrinfo() // So, we cache this. - var list = NetworkThread.getAddressList(allocator, name, port) catch |err| { + var list = NetworkThread.getAddressList( + allocator, + // There is a bug where getAddressList always fails on localhost + // I don't understand why + // but 127.0.0.1 works + // so we can just use that + // this is technically incorrect – one could remap localhost to something other than 127.0.0.1 + // but we will wait for someone to complain about it before addressing it + if (!strings.eqlComptime(name, "localhost")) + name + else + "127.0.0.1", + port, + ) catch |err| { return @errSetCast(ConnectError, err); }; diff --git a/src/javascript/jsc/webcore/response.zig b/src/javascript/jsc/webcore/response.zig index a72c1d134..7043769fa 100644 --- a/src/javascript/jsc/webcore/response.zig +++ b/src/javascript/jsc/webcore/response.zig @@ -667,8 +667,6 @@ pub const Fetch = struct { .{}, ); - const fetch_error_cant_fetch_same_origin = "fetch to same-origin on the server is not supported yet - sorry! (it would just hang forever)"; - pub const FetchTasklet = struct { promise: *JSInternalPromise = undefined, http: HTTPClient.AsyncHTTP = undefined, @@ -975,11 +973,6 @@ pub const Fetch = struct { return JSPromise.rejectedPromiseValue(globalThis, ZigString.init(fetch_error).toErrorInstance(globalThis)).asRef(); } - if (url.origin.len > 0 and strings.eql(url.origin, VirtualMachine.vm.bundler.options.origin.origin)) { - const fetch_error = fetch_error_cant_fetch_same_origin; - return JSPromise.rejectedPromiseValue(globalThis, ZigString.init(fetch_error).toErrorInstance(globalThis)).asRef(); - } - var header_entries: Headers.Entries = .{}; var header_buf: string = ""; |