Meghan Denny
f4404a55db
misc tidyings from another branch ( #24406 )
...
pulled out of https://github.com/oven-sh/bun/pull/21809
- brings the ASAN behavior on linux closer in sync with macos
- fixes some tests to also pass in node
---------
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-11-05 15:28:28 -08:00
Jarred Sumner
b02d46498e
Don't set isIdle when it is not in fact idle ( #24274 )
...
### What does this PR do?
### How did you verify your code works?
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Bug Fixes**
* Improved HTTP connection handling during write failures to ensure more
reliable timeout behavior and connection state management.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-11-01 19:39:51 -07:00
Ciro Spaciari
3395774c8c
improve(node:http): uncork after flushing headers to ensure data is sent immediately ( #23413 )
...
### What does this PR do?
Calls `uncork()` after flushing response headers to ensure data is sent
as soon as possible, improving responsiveness.
This behavior still works correctly even without the explicit `uncork()`
call, due to the deferred uncork logic implemented here:
6e3359dd16/packages/bun-uws/src/Loop.h (L57-L64)
A test already covers this scenario in
`test/js/node/test/parallel/test-http-flush-response-headers.js`.
### How did you verify your code works?
CI
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-10-09 22:56:49 -07:00
Ciro Spaciari
625e537f5d
fix(NodeHTTP) remove unneeded code add more safety measures agains raw_response after upgrade/close ( #23348 )
...
### What does this PR do?
BeforeOpen code is not necessary since we have `setOnSocketUpgraded`
callback now,and we should NOT convert websocket to a response, make
sure that no closed socket is passed to `JSNodeHTTPServerSocket`, change
isIdle to be inside AsyncSocketData to be more reliable (works for
websocket and normal sockets)
### How did you verify your code works?
CI
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-10-07 22:35:08 -07:00
Ciro Spaciari
76545140af
fix(node:http) fix closing socket after upgraded to websocket ( #23150 )
...
### What does this PR do?
handle socket upgrade in NodeHTTP.cpp
### How did you verify your code works?
Run the test added with asan it should catch the bug
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-10-02 14:55:28 -07:00
Ciro Spaciari
85271f9dd9
fix(node:http) allow CONNECT in node http/https servers ( #22756 )
...
### What does this PR do?
Fixes https://github.com/oven-sh/bun/issues/22755
Fixes https://github.com/oven-sh/bun/issues/19790
Fixes https://github.com/oven-sh/bun/issues/16372
### How did you verify your code works?
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-09-23 16:46:59 -07:00
Meghan Denny
5b7fd9ed0e
node:_http_server: implement Server.prototype.closeIdleConnections ( #22234 )
2025-09-04 15:18:31 -07:00
Jarred Sumner
7b31393d44
Don't run the "Date" header timer every second all the time ( #21850 )
...
### What does this PR do?
Only reschedule the Date header while there are in-flight incoming HTTP
requests.
Update the Date header if, at the time we reschedule it, it is now
stale.
Goal: don't wake up Bun's process on every second when we're idly doing
nothing.
| Metric | this branch | main |
|--------|--------------------------|-------------------|
| **task-clock** | **35.24 msec** 🟢 | **102.79 msec** |
| **context-switches** | 619 🟢 | 1,699 |
| **cpu-migrations** | 11 🟢 | 35 |
| **page-faults** | 2,173 | 2,174 |
| **cpu_atom/instructions** | **109,904,685 (1.76 insn/cycle)** 🟢 |
**67,880,002 (0.55 insn/cycle)** |
| **cpu_core/instructions** | **87,183,124 (1.07 insn/cycle)** 🟢 |
**32,939,500 (0.44 insn/cycle)** |
| **cpu_atom/cycles** | 62,527,125 (1.774 GHz) 🔻 | 122,448,620 (1.191
GHz) |
| **cpu_core/cycles** | 81,651,366 (2.317 GHz) 🟢 | 75,584,111 (0.735
GHz) |
| **cpu_atom/branches** | 9,632,460 (273.338 M/sec) 🔻 | 12,119,616
(117.909 M/sec) |
| **cpu_core/branches** | 17,417,756 (494.259 M/sec) 🟢 | 6,901,859
(67.147 M/sec) |
| **cpu_atom/branch-misses** | 192,013 (1.99%) 🟢 | 1,735,446 (14.32%) |
| **cpu_core/branch-misses** | 473,567 (2.72%) 🟢 | 499,907 (7.24%) |
| **TopdownL1 (cpu_core)** | 31.4% backend_bound<br>11.7%
bad_speculation<br>36.0% frontend_bound 🔻 <br>20.9% retiring<br>34.1%
bad_speculation<br>41.9% retiring<br>0.0% backend_bound<br>24.0%
frontend_bound 🔻 | 21.3% backend_bound<br>9.6% bad_speculation<br>56.2%
frontend_bound<br>12.9% retiring<br>-20.0% bad_speculation<br>55.2%
retiring<br>26.2% backend_bound<br>38.6% frontend_bound |
| **time elapsed** | 1000.0219 s | 1000.0107 s |
| **user time** | — | 0.042667 s |
| **sys time** | — | 0.060309 s |
### How did you verify your code works?
Added a test
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-08-14 15:39:09 -07:00
Jarred Sumner
b0799da968
Harden Transfer-Encoding ( #21737 )
...
### What does this PR do?
### How did you verify your code works?
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-08-10 03:52:40 -07:00
Ciro Spaciari
964f2a8941
fix(fetch/s3) Handle backpressure when upload large bodies ( #20481 )
...
Co-authored-by: cirospaciari <6379399+cirospaciari@users.noreply.github.com >
2025-06-27 20:52:46 -07:00
Meghan Denny
139f2b23a2
chore: trim trailing space in uws ( #20388 )
2025-06-15 08:59:12 -07:00
Jarred Sumner
8750f0b884
Add FileRoute for serving files ( #20198 )
...
Co-authored-by: Jarred-Sumner <709451+Jarred-Sumner@users.noreply.github.com >
Co-authored-by: Dylan Conway <dylan.conway567@gmail.com >
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
Co-authored-by: Ciro Spaciari <ciro.spaciari@gmail.com >
2025-06-10 19:41:21 -07:00
Jarred Sumner
c9761d4aa6
Fixes flaky test-http-pipeline-requests-connection-leak.js ( #20248 )
2025-06-07 05:19:11 -07:00
Jarred Sumner
9bee7a64a2
Support method-specific routes for html & static routes ( #19710 )
2025-05-17 00:28:01 -07:00
Jarred Sumner
3f360b0682
chore: format packages/scripts folder ( #19611 )
...
Co-authored-by: Jarred-Sumner <709451+Jarred-Sumner@users.noreply.github.com >
2025-05-12 17:12:17 -07:00
Ciro Spaciari
0a0205be6e
compat(node:http) more ( #19527 )
...
Co-authored-by: cirospaciari <6379399+cirospaciari@users.noreply.github.com >
Co-authored-by: 190n <ben@bun.sh >
2025-05-10 21:28:31 -07:00
Ciro Spaciari
de487713ed
refactor(HttpParser.h) make it more readable ( #19489 )
2025-05-08 23:52:17 -07:00
pfg
00a3cbd977
more child-process ( #18688 )
...
Co-authored-by: pfgithub <6010774+pfgithub@users.noreply.github.com >
2025-05-06 22:12:24 -07:00
Ashcon Partovi
e2ed4f33a9
Remove unused files in bun-uws and bun-usockets ( #19435 )
2025-05-02 10:50:39 -07:00
Ciro Spaciari
cb6abd2116
fix(node:http) proper send chunked encoding, dont send \r\b twice after headers are flushed ( #19344 )
2025-04-28 16:48:36 -07:00
Ciro Spaciari
59b2a60790
compat(node:http) more passing ( #19236 )
...
Co-authored-by: Dylan Conway <35280289+dylan-conway@users.noreply.github.com >
Co-authored-by: 190n <ben@bun.sh >
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com >
2025-04-24 19:26:55 -07:00
Ciro Spaciari
218ee99155
compat(node:http) more compatibility improvements ( #19063 )
2025-04-18 19:57:02 -07:00
Ciro Spaciari
a548c2ec54
fix(node:http) properly signal server drain after draining the socket buffer ( #18479 )
2025-03-26 16:41:17 -07:00
Jarred Sumner
57cda4a445
Clean-up after #18485 ( #18489 )
2025-03-26 04:46:35 -07:00
Kai Tamkun
ee8a839500
Fix node:http UAF ( #18485 )
...
Co-authored-by: Dylan Conway <dylan.conway567@gmail.com >
Co-authored-by: Dylan Conway <35280289+dylan-conway@users.noreply.github.com >
2025-03-25 23:31:04 -07:00
Meghan Denny
f2c8e63ae1
update to llvm 19 and c++ 23 ( #18317 )
...
Co-authored-by: nektro <5464072+nektro@users.noreply.github.com >
2025-03-20 21:44:19 -07:00
Kai Tamkun
f30ca39242
More node:http compatibility ( #18339 )
...
Co-authored-by: Ciro Spaciari <ciro.spaciari@gmail.com >
2025-03-20 19:16:35 -07:00
Kai Tamkun
4a0e982bb2
node:http improvements ( #17093 )
...
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com >
Co-authored-by: Pham Minh Triet <92496972+Nanome203@users.noreply.github.com >
Co-authored-by: snwy <snwy@snwy.me >
Co-authored-by: Ciro Spaciari <ciro.spaciari@gmail.com >
Co-authored-by: cirospaciari <cirospaciari@users.noreply.github.com >
Co-authored-by: Ben Grant <ben@bun.sh >
2025-03-10 20:19:29 -07:00
Kai Tamkun
1803f73b15
Improve uWS route performance ( #17884 )
2025-03-03 18:24:35 -08:00
Jarred Sumner
522f2b91a0
Introduce experimental support for on-demand bundling via HTML imports and Bun.serve() ( #16395 )
2025-01-15 01:00:23 -08:00
Jarred Sumner
cfa4998d24
Pull some upstream changes from uWS ( #16275 )
2025-01-10 03:05:24 -08:00
Jarred Sumner
aada6f930f
Fix heap snapshots memory usage stats. Introduce estimateDirectMemoryUsageOf function in "bun:jsc" ( #15790 )
2024-12-16 20:16:23 -08:00
Ciro Spaciari
1911fa1e75
fix(HttpParser) always check if content length is valid before calling requestHandler ( #15179 )
2024-11-16 19:41:59 -08:00
Ciro Spaciari
183c661c40
net compatibility improvements ( #14933 )
...
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com >
2024-11-07 22:03:53 -08:00
Jarred Sumner
b9e5420571
Add https://github.com/uNetworking/uWebSockets/pull/1792 ( #14864 )
2024-10-29 12:56:25 -07:00
Jarred Sumner
f005e8c057
Fix HTTP spec issues by upgrading uWS version ( #14853 )
2024-10-27 12:34:45 -07:00
Jarred Sumner
67b4478137
Fixes #14333 ( #14679 )
2024-10-19 01:14:13 -07:00
Dylan Conway
5fd0a61ae2
CA support for bun install ( #14416 )
2024-10-11 13:16:26 -07:00
Ashcon Partovi
30dc72c17b
bun run clang-format (#14148 )
...
Co-authored-by: Electroid <Electroid@users.noreply.github.com >
2024-09-24 20:39:29 -07:00
Ciro Spaciari
1011b44d78
fix(node:http) implement request.setTimeout and server.setTimeout ( #13772 )
...
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com >
2024-09-06 17:52:38 -07:00
Jarred Sumner
03de99afcf
Add tests for static routes + support server.reload for static routes ( #13643 )
2024-08-31 03:32:08 -07:00
Jarred Sumner
6faf657e32
Implement --max-http-header-size ( #13577 )
2024-08-29 00:38:47 -07:00
Ciro Spaciari
6fd06dd023
fix(Bun.serve) ensure timeout reset when we write data ( #13525 )
2024-08-25 20:27:49 -07:00
Ciro Spaciari
384988f26c
feat(Bun.serve idleTimeout) allow custom timeouts ( #13453 )
2024-08-21 18:13:03 -07:00
Ciro Spaciari
63596c3f8c
fix(sockets) always uncork when closing ( #13358 )
...
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com >
2024-08-17 02:53:10 -07:00
Jarred Sumner
36fc324523
Fixes #13311 ( #13319 )
2024-08-14 22:46:45 -07:00
Jarred Sumner
2fa60f2d12
Appease clang-tidy ( #13312 )
2024-08-14 19:00:20 -07:00
Ciro Spaciari
b9ead441c1
fix(sockets) add socket wrapper and refactor context ownership handling in socket.zig ( #13176 )
2024-08-09 18:34:17 -07:00
Ciro Spaciari
24dbef7713
fix(server) fix flushing ( #13207 )
2024-08-09 18:20:04 -07:00
Ciro Spaciari
c552cb40d1
fix(server/tls/streams) fix onReadFile, streams, avoid shutdown on fatal errors, ensure ssl loop data and server ref count refactor ( #12979 )
2024-08-03 01:41:18 -07:00