Divy Srivastava
5b26a4a30e
fix(ext/http): reading headers with ongoing body reader ( #15161 )
2022-07-12 13:31:37 -04:00
Divy Srivastava
93c03fffc4
perf(ext/http): remove accept_encoding interior mutability ( #15070 )
2022-07-04 21:48:09 +05:30
Divy Srivastava
20cf0770dd
perf(ext/http): simplify op_http_accept ( #15067 )
2022-07-04 18:41:31 +05:30
Divy Srivastava
a2643ae7bd
perf(ext/http): lazy load headers ( #15055 )
2022-07-04 07:41:52 +05:30
Aaron O'Mullan
f2410b4481
perf(ext/http): faster accept-encoding parsing ( #14654 )
2022-05-18 16:14:23 +02:00
Aaron O'Mullan
8879244f72
fix(ext/http): error on invalid headers ( #14642 )
...
Minor regression/change-in-behaviour from #14552 that filtered out invalid http headers in rust vs error-ing back to JS
2022-05-17 14:40:30 +02:00
Aaron O'Mullan
037e46bb51
fix(ext/http): skip auto-compression if content-encoding present ( #14641 )
...
Regression from #14552
2022-05-17 14:02:45 +02:00
Andy Kurnia
42fec5150e
fix(ext/http): make serveHttp compress for Accept-Encoding: deflate, gzip ( #14525 )
2022-05-13 14:10:05 +02:00
Aaron O'Mullan
67e5a850cc
feat(serde_v8): bytes::Bytes support ( #14412 )
2022-05-13 12:53:13 +02:00
Aaron O'Mullan
30841a1705
cleanup(ext/http): simpler http write ops ( #14552 )
...
Facilitates making `op_http_write_headers` sync and thus faster
2022-05-10 22:36:40 +02:00
Divy Srivastava
609c359dd4
fix(ext/http): truncate read bytes when streaming bodies ( #14389 )
...
stream shutdown wasn't happening correctly (moved it to call op_http_shutdown) & extra zeroed bytes were being sent for when body length not a multiple of 64*1024
2022-04-25 19:20:29 +02:00
Divy Srivastava
6dcf3a447c
perf(ext/http): fast path for uncompressed bodies ( #14366 )
2022-04-25 08:13:22 +05:30
Aaron O'Mullan
e2fba7b967
perf(ext/http): faster is_content_compressible ( #14383 )
...
Cleanup + benches
2022-04-24 21:45:56 +02:00
Aaron O'Mullan
4b7d306a19
perf(serde_v8): zero-copy StringOrBuffer ( #14381 )
2022-04-24 09:28:46 -03:00
Divy Srivastava
57f7e07c13
Reland "perf(http): optimize ReadableStreams backed by a resource" ( #14346 )
2022-04-22 16:19:08 +05:30
Divy Srivastava
2a86b8fb02
Reland "feat(ext/http): stream auto resp body compression" ( #14345 )
2022-04-21 12:37:49 +05:30
Bartek Iwańczuk
03019e7781
Revert various PRs related to "ext/http" ( #14339 )
...
* Revert "feat(ext/http): stream auto resp body compression (#14325 )"
* Revert "core: introduce `resource.read_return` (#14331 )"
* Revert "perf(http): optimize `ReadableStream`s backed by a resource (#14284 )"
2022-04-21 02:22:55 +02:00
Luca Casonato
8b25807054
feat(ext/http): stream auto resp body compression ( #14325 )
...
This commit adds support for auto response body compression for
streaming bodies.
2022-04-20 22:53:56 +02:00
Divy Srivastava
2612b6f20f
core: introduce resource.read_return
( #14331 )
2022-04-20 18:39:13 +02:00
Divy Srivastava
57a8fc37fc
perf(http): optimize ReadableStream
s backed by a resource ( #14284 )
2022-04-20 18:16:44 +05:30
Divy Srivastava
cc49b5e0d8
chore(ext/http): custom arity ( #14200 )
2022-04-04 15:19:35 +05:30
Aaron O'Mullan
94885bc293
experiment(serde_v8): derive_more enabled opaque wrappers ( #14096 )
2022-04-02 14:37:11 +02:00
Aaron O'Mullan
45ef3c91c2
perf(http): avoid per header alloc ( #14051 )
2022-03-21 12:56:30 +01:00
Bert Belder
c5270abad7
feat(unstable): Add Deno.upgradeHttp API ( #13618 )
...
This commit adds "Deno.upgradeHttp" API, which
allows to "hijack" connection and switch protocols, to eg.
implement WebSocket required for Node compat.
Co-authored-by: crowlkats <crowlkats@toaxl.com>
Co-authored-by: Ryan Dahl <ry@tinyclouds.org>
Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2022-03-16 14:54:18 +01:00
Aaron O'Mullan
bd481bf095
feat(ops): optional OpState ( #13954 )
2022-03-16 00:33:46 +01:00
Aaron O'Mullan
88d0f01948
feat(ops): custom arity ( #13949 )
...
Also cleanup & drop ignored wildcard op-args
2022-03-14 23:38:53 +01:00
Divy Srivastava
b4e42953e1
feat(core): codegen ops ( #13861 )
...
Co-authored-by: Aaron O'Mullan <aaron.omullan@gmail.com>
2022-03-14 18:44:15 +01:00
Satya Rohith
670aef5c1a
fix(ext/http): drop content-length header on compression ( #13866 )
2022-03-07 22:43:15 +05:30
Kitson Kelly
d1db500cda
feat(ext/http): auto-compression of fixed response bodies ( #13769 )
...
Co-authored-by: Ryan Dahl <ry@tinyclouds.org>
Co-authored-by: Satya Rohith <me@satyarohith.com>
Co-authored-by: Luca Casonato <lucacasonato@yahoo.com>
2022-03-04 16:04:39 +11:00
David Sherret
b98afb59ae
feat: deno vendor ( #13670 )
2022-02-16 13:14:19 -05:00
ylxdzsw
074f53234a
feat(ext/http): add support for unix domain sockets ( #13628 )
2022-02-16 00:16:12 +01:00
Ryan Dahl
1fb5858009
chore: update copyright to 2022 ( #13306 )
...
Co-authored-by: Erfan Safari <erfanshield@outlook.com>
2022-01-07 22:09:52 -05:00
Bert Belder
72a6231a61
refactor(ext/http): rewrite hyper integration and fix bug ( #12732 )
...
Fixes: #12193
Fixes: #12251
Closes: #12714
2021-11-10 14:51:43 -08:00
Luca Casonato
75793baae8
Revert "refactor(ext/http): rewrite hyper integration and fix bug ( #12332 )" ( #12704 )
...
This reverts commit 5b1e537446
.
2021-11-09 12:10:21 +01:00
Bert Belder
5b1e537446
refactor(ext/http): rewrite hyper integration and fix bug ( #12332 )
...
Fixes: #12193
2021-11-08 12:49:11 -08:00
Leo K
6268703487
fix(ext/http): allow multiple values in upgrade header for websocket ( #12551 )
...
Co-authored-by: Aaron O'Mullan <aaron.omullan@gmail.com>
2021-10-26 23:06:44 +02:00
Aaron O'Mullan
c27ef0ac7b
perf(http): encode string bodies in op-layer ( #12451 )
...
Using serde_v8's StringOrBuffer
2021-10-26 22:00:01 +02:00
Ikko Ashimine
a1d6b53acd
docs(ext/http): fix typo in http/lib.rs ( #12466 )
2021-10-17 20:04:44 +09:00
Luca Casonato
c40d5040cd
fix(http): don't expose body on GET/HEAD requests ( #12260 )
...
GET/HEAD requests can't have bodies according to `fetch` spec. This
commit changes the HTTP server to hide request bodies for requests with
GET or HEAD methods.
2021-10-11 18:39:55 +02:00
Leo K
77a00ce1fb
chore: various op cleanup ( #12329 )
2021-10-05 22:38:27 +02:00
Ben Noordhuis
2b6f8d0187
fix(ext/http): include port number in h2 urls ( #12181 )
2021-09-26 20:26:16 +02:00
Aaron O'Mullan
3c88dffd32
fix(http): panic when responding to a closed conn ( #12216 )
...
Our oneshot receiver in `HyperService::call` would unwrap and panic, the `.await` on the oneshot receiver happens when the sender is dropped.
The sender is dropped in `op_http_response` because:
1. We take `ResponseSenderResource`
2. Then get `ConnResource` and early exit on failure (conn already closed)
3. The taken sender then gets dropped in this early exit before any response is sent over the channel
Fallbacking to returning a dummy response to hyper seems to be a fine quickfix
2021-09-25 13:22:19 +02:00
Ben Noordhuis
16ea39ee48
fix(ext/http): fortify "is websocket?" check ( #12179 )
...
Check for expected headers more rigorously and check that it's a
HTTP/1.1 GET request. The logic mirrors what Deno Deploy and the
tungstenite crate do.
The presence of "Sec-Websocket-Version: 13" is now also enforced.
I don't expect that to break anything: conforming clients already
send it and tungstenite can't talk to older clients anyway.
The new code is more efficient due to heap-allocating less and aligns
more closely with the checks in ext/http/01_http.js now.
2021-09-25 10:02:26 +02:00
Luca Casonato
fcd0992dba
fix: move unstable declarations to deno.unstable ( #11876 )
2021-08-31 11:25:15 +02:00
Bartek Iwańczuk
d1d2388d7f
test(ext/http): add test for incomplete HTTP message and fix resource leak ( #11717 )
...
This commit adds a test case for "Http: connection closed before
message completed" error as well as fixing an edge with resource
leak when the error is raised.
2021-08-16 13:43:43 +02:00
Aaron O'Mullan
2ca454b402
refactor(ops): return BadResource errors in ResourceTable calls ( #11710 )
...
* refactor(ops): return BadResource errors in ResourceTable calls
Instead of relying on callers to map Options to Results via `.ok_or_else(bad_resource_id)` at over 176 different call sites ...
2021-08-15 13:29:19 +02:00
Aaron O'Mullan
18ff6bb053
perf(ext/http): faster req_url string assembly ( #11711 )
...
This stood out on a flamegraph, it took up ~1% of a profiled loadtest of `cli/bench/deno_http_native.js`
2021-08-15 12:25:16 +02:00
Aaron O'Mullan
c87b13e745
cleanup(ext/http): simplify cookie header handling ( #11704 )
...
cleanup(ext/http): simplify cookie header handling
Use `Vec::join` instead of essentially reimplementing it. There should be no meaningful performance delta
2021-08-14 14:35:58 +02:00
Aaron O'Mullan
8fa46a7b44
cleanup(ext/http): simplify op_http_request_next ( #11691 )
...
* cleanup(ext/http): simplify op_http_request_next
Keep op_http_request_next's high-level logic simple, factor out NextRequestResponse building to prepare_next_request() for improved readability & maintainability
* cleanup(ext/http): break prepare_next_request() into meaningful sub-funcs
2021-08-14 13:25:05 +02:00
Leo K
0c9d6cbb2a
fix(http/ws): support multiple options in connection header ( #11675 )
...
Co-authored-by: Luca Casonato <hello@lcas.dev>
2021-08-13 20:52:13 +02:00