Commit graph

74 commits

Author SHA1 Message Date
Wladimir Palant
05005e2a4d Fixes #234 - Clarify ServerConf documentation
Includes-commit: d9a37a1f38
Replicated-from: https://github.com/cloudflare/pingora/pull/273
2024-06-21 09:54:09 -07:00
Matthew Gumport
c943fc1c78 compression: allow setting level per algorithm
Fixes https://github.com/cloudflare/pingora/issues/228

This adds a function to set the compression level per supported algorithm. The
behavior of `adjust_level` is changed to set the level for all of the algorithms
such that it still behaves the same.
2024-06-21 09:54:09 -07:00
Edward Wang
9500e62855 Make ipv6_only flag an Option<bool>
Fixes #279. This allows falling back to the system default on None, or
explicitly setting false if the system default happens to be true.
2024-06-21 09:54:09 -07:00
Edward Wang
02111515c6 Expose TCP_INFO fields as pub 2024-06-21 09:54:09 -07:00
Andrew Hauck
a1f1ad8a43 h2c support 2024-06-21 09:54:09 -07:00
Wladimir Palant
2d30077683 Fixed typo in docs: connnection => connection
Includes-commit: bbef4bdd75
Replicated-from: https://github.com/cloudflare/pingora/pull/274
2024-06-21 09:54:09 -07:00
Yuchen Wu
4e251f663a Fxi clippy for Rust 1.79 2024-06-21 09:54:09 -07:00
Yuchen Wu
708e03211d Auto generate the size and verify it for setsockops calls
This avoids human error with stronger validation.
2024-06-21 09:54:09 -07:00
Ivan Babrou
bf07ed3f10 add get_socket_cookie helper
This cab be used for tracing to match the sockets in the kernel.
2024-06-21 09:54:09 -07:00
Andrew Hauck
d86c5855a0 Track write duration on Poll::Ready(Err) 2024-06-21 09:54:09 -07:00
Andrew Hauck
35b9f1db00 Remove Accept-Ranges header when response is compressed 2024-06-21 09:54:09 -07:00
Alex Severin
20cac2e673 expose new_uds err 2024-06-14 16:00:03 -07:00
Yuchen Wu
8a8302cf7b Respect the keepalive setting sent in HTTP client
Before this change, a HTTP client would only respect
the Connection header returned from the server.

Now, if the client sends "Connection: closed", it would not
keepalive regardless what the server returns.
2024-06-07 15:42:30 -04:00
Yuchen Wu
11863d27a2 Introduce HttpModules to pingora-proxy.
This feature allows to plug in 3rd party extensions with minimal code
required.

The downstream compression logic is now a module.

Add: a new early_request_filter API to fine tune the behavior of the modules.
Add: a few APIs to write the response with these modules enabled. This
should address issues like compression is not applied to custom
responses.
2024-06-07 15:42:30 -04:00
Wladimir Palant
b7ac8a50fc Fixes #231 - Remove Markdown code from the long CLI help
---
While at it, fix grammar in the description of the --daemon flag

Includes-commit: a8dee4e975
Includes-commit: f420f36c53
Replicated-from: https://github.com/cloudflare/pingora/pull/247
2024-05-31 11:04:36 -07:00
Alex Severin
d41231191c finish todo
---
reafactor

Includes-commit: 41ca473605
Includes-commit: f5870a985c
Replicated-from: https://github.com/cloudflare/pingora/pull/215
2024-05-31 11:04:36 -07:00
Andrew Hauck
4579a780c6 get_tcp_info and get_recv_buf should return None for UDS 2024-05-31 11:04:36 -07:00
Yuchen Wu
fa071eb506 Refactor Service API: Arc is no longer needed for apps.
This change makes a bit cleaner to use the API. It also allows to
modify the application logic before starting the service.
2024-05-31 11:04:36 -07:00
Yuchen Wu
4019aa0819 Simplify vectored write API
Provide a write_vec_all() API so that users don't have to loop
themselves.
2024-05-31 11:04:36 -07:00
Yuchen Wu
ea1db2fb9d Add read and write pending time info
These APIs show how much time a socket spends on waiting for data and
the time waiting for data to be sent. They are good indicators of
performance bottlenecks.
2024-05-31 11:04:36 -07:00
Andrew Hauck
47844a7ea4 Add ability to get TCP_INFO through SocketDigest, add get_recv_buf function 2024-05-31 11:04:36 -07:00
Yuchen Wu
2902dc5365 Redesign the API of HTTP module
Make it async and more natural.
2024-05-31 11:04:36 -07:00
Kevin Guthrie
479d9badbf Addressing github #231 - Cleaning up cli-help text 2024-05-24 10:00:06 -07:00
Kevin Guthrie
9dee8e6775 Dropping the clap version to the most recent compatible with our rust 1.72 2024-05-24 10:00:06 -07:00
Wladimir Palant
795594db83 Fixes #235 - Replace unmaintained structopt crate by clap
---
Fixed formatting

Includes-commit: 05f9754166
Includes-commit: 29286c7e71
Replicated-from: https://github.com/cloudflare/pingora/pull/239
2024-05-24 10:00:06 -07:00
Andrew Hauck
6db86b6929 Add ability to set server side tcp keepalive 2024-05-24 10:00:06 -07:00
Andrew Hauck
cd5134431c Ignore write_response_header on upgraded websockets 2024-05-24 10:00:06 -07:00
Yuchen Wu
a40175412c avoid a possible race condition when releasing h2 connections
It is possible that when two threads try to release streams of the same
h2 connection, one thread would register the connection in the in_use_pool
while the other register it in the idle_pool.

The solution is to put a lock so that the connection can only appear in
one pool at a time.
2024-05-24 10:00:06 -07:00
Yuchen Wu
840367359d Don't panic when h2 fails to allocate a stream
There is still a bug but change to this to help debug.
2024-05-24 10:00:06 -07:00
Yuchen Wu
34b2a35d7b TCP fast open server side support.
Provide default and non_exhaustive for TcpSocketOptions to future proof
its changes.

Also fix an issue that TcpScoketOptions can't be used for IPv4 sockets
at all.
2024-05-17 14:16:31 -07:00
Daniel Dao
2272112c56 set SO_RCVBUF before connect
SO_RCVBUF needs to be set before connect otherwise tcp settings will
not be finalized correctly. And since autotuning is not engaged in this
case, the throughput will suffer.
2024-05-17 14:16:31 -07:00
Yuchen Wu
98af739147 Client side TCP fast open support 2024-05-17 14:16:31 -07:00
Edward Wang
0a6dabdd50 Add BasicPeer::new_uds constructor 2024-05-17 14:16:31 -07:00
Yuchen Wu
3dbdcc6b09 Release 0.2.0 2024-05-10 15:22:37 -07:00
Andrew Hauck
6229cc555c Always return HttpTask::Body on body done instead of HttpTask::done 2024-05-10 15:22:37 -07:00
Yuchen Wu
1b7d43207b parse and send HTTP/1 reason phrase
This change allows customized HTTP1 reason phrase to be used and
proxied.
2024-05-10 15:22:37 -07:00
Alex Severin
4347ef4471 finish zip todo
Includes-commit: 68a9196642
Replicated-from: https://github.com/cloudflare/pingora/pull/214
2024-05-10 15:22:37 -07:00
Alex Severin
2a449ac305 unzip map items
Includes-commit: db64afd0a3
Replicated-from: https://github.com/cloudflare/pingora/pull/216
2024-05-10 15:22:37 -07:00
yaohuiming
42b0224129 Add async_cleanup() method to ServerApp trait
---
Refactor cleanup functions to use async/await

Includes-commit: 3cd52fee46
Includes-commit: 58946a8d58
Replicated-from: https://github.com/cloudflare/pingora/pull/193
2024-05-10 15:22:37 -07:00
Andrew Hauck
2501d4adb0 Fix non linux build 2024-04-26 12:31:57 -04:00
Kevin Guthrie
e19d8c817d Splitting out the daemon group_id type for MacOs and FreeBsd 2024-04-26 12:31:57 -04:00
Yonas
5fde29f6fc Fix build on FreeBSD.
Define `group_id` in the pingora-core's server daemon on FreeBSD.
---
Merge branch 'cloudflare:main' into yonas-~~~

Co-authored-by: Yonas Yanfa <yonas.y@gmail.com>
Includes-commit: 30ee1e8bd4
Includes-commit: df9f2da7bd
Replicated-from: https://github.com/cloudflare/pingora/pull/28
2024-04-26 12:31:57 -04:00
Andrew Hauck
a6bd816f16 Add support for downstream h2 trailers and add an upstream h2 response trailer filter 2024-04-26 12:31:57 -04:00
Yuchen Wu
93ad08ea3e Add the ability to set TCP recv buf size 2024-04-26 12:31:57 -04:00
ewang
7b838b8118 Add a convenience function to retrieve Session digest 2024-04-22 08:48:19 -07:00
ewang
cfb86c3f16 Add body_bytes_read() method to Session
Add an API to retrieve request body bytes read so far.
2024-04-22 08:48:19 -07:00
Matthew Gumport
a8b6bbe9f4 address string interpolation outside of proper context
https://github.com/cloudflare/pingora/issues/181

Ran:
```
rg --pcre2 '(?<!(trace\!\()|(println\!\()|(warn\!\()|(info\!\()|(debug\!\()|(format\!\()|(error\!\()|(write\!\()|(panic\!\())\".*\{.+\"'
```

and audited the 200+ results by hand. Only messed up in a few places!

Hat-tip to Kevin for helping me understand the compile error messages I was
seeing trying to fix this naively.
2024-04-22 08:48:19 -07:00
Yesterday17
6e6b4f6705 Replace splitn(2) with split_once
---
Do not trim value

Includes-commit: 7431d24402
Includes-commit: fdf61307a3
Replicated-from: https://github.com/cloudflare/pingora/pull/177
2024-04-22 08:48:19 -07:00
gengteng
a680ccee41 feat: Change Server::run_forever to take ownership and ensure exit semantics
Includes-commit: b83da0f03e
Replicated-from: https://github.com/cloudflare/pingora/pull/176
2024-04-22 08:48:19 -07:00
Andrew Hauck
fca0532950 Add tls upstream support for SSLKEYLOG to allow decryption of traffic for debugging purposes 2024-04-12 15:43:32 -07:00