Sozu Versions Save

Sōzu HTTP reverse proxy, configurable at runtime, fast and safe, built in Rust. It is awesome!

1.0.0

1 month ago

This is the first release of Sōzu which is a huge steps since the beginning of the project. We would like to thanks every people involved in the development of Sōzu. The next steps is to implements h2(c) on top of kawa with a rework of session to be able to use http 1.x clients with h2 backends and h2 clients with h2 backends, h2 clients with http 1.x backends.

🌟 Features

  • This release is the first one that use protobuf-everywhere. It means that we are moving out from the old exchange model for sockets (which are data exchanges between main process and workers processes and also main process and control plane process) that use Rust structures that we serialize into json to structures described in protobuf that generate Rust source code and then communicate with binary format. Besides, this work also have some nice side-effects on fork when creating new workers (due to a self-healing or at start) which allow to reduce the time to configure a worker by around 50%. It also introduces a new way to emit access logs in a binary way, see [ dfacdb7 ], [ a6ffebe ], [ fb11245 ], [ 6daf43c ], [ 8e81a02 ], [ 24a941b ], [ 6d160b4 ], [ e382a1c ], [ 4f2d760 ], [ 6d43eb1 ] and [ 5852c6b ].
  • We have reworked emitted logs and access logs format, if you are tools that parse them, you have to take a look at the new one. Besides, it will be easier to parse. Furthermore, we have added color on logs to improve readability, see [ 0885863 ], [ d3eeddc ], [ 3bb3997 ] and [ 5f55561 ].
  • We have bump the minimum Rust supported version to v1.74.0, see [ 2c4363d ], [ 96f5329 ] and [ e6bcfe0 ].
  • We have introduce a way to define custom http response for a wide range of status code, see 3f0bfa1, 4923153, b9df0c1, ee2430f, 3030944, 6023216, 55242ba, 55242ba, 8faa16c, a5058c2, fb6aad9 and a2236d1.
  • We also fix a bug that could occur on some streaming https requests with tcp-keepalive when going through multiple Sōzu which does not flush correctly the ending chunk of data when calling rustls::write_vectored, see d83f399.
  • We also change how works timeout on frontends as it is now closed by the backend, once we have received a first chunk of data, see 6114e17.

🚀 Performance

  • Thanks to the work achieved on Rustls (v0.23.0) with the help of maintainers (a huge thanks to them ❤️), we have gain between 10% and 20% performance on https requests depending of the workload, see [ 7fa680d ].

⛑️ Fixed

  • We have fixed a bug that occurs during http request when doing streaming and tcp keep-alive which prevent to send the close-delimiter on response, see [ 59c0615 ].
  • We have fix a few bugs on certificate replacement and improve the resolution of certificates, see [ 6aa45b9 ].
  • We have fix a bug that involved timeout on frontend sockets which did not take the given value, see [ d20e759 ].

✍️ Changed

  • We have work on errors to have a better context when something happens, see [ ba8b51a ], [ 629551f ] and [ 1c90c04 ].

📚 Documentation

  • We have added some documentation about logs and access logs, see [ d44b227 ] and [ 7241c0e ].
  • We have reworked or improved examples, see [ 31bc55e ] and [ 95624e6 ].
  • We have added some documentation of using Sōzu with firewalld (thanks @obreidenich), see [ 4cba552 ].
  • We have setup a github continuous integration to provides and document a way to benchmark Sōzu (values on the ci are not reliable), see [ 8df9ba5 ].

Changelog

🚀 Performance

  • 7fa680d ] update dependencies, notably rustls [Emmanuel Bosquet] (2024-03-11)

🌟 Features

  • 3f0bfa1 ] Dynamic automatic answers system [Eloi DEMOLIS] (2024-04-05)
  • 4923153 ] Unify template creation [Eloi DEMOLIS] (2024-04-05)
  • b9df0c1 ] add example 404 and 508 errors [Emmanuel Bosquet] (2024-04-05)
  • ee2430f ] make Http[s]ListenerConfig::http_answers optional [Emmanuel Bosquet] (2024-04-05)
  • 3030944 ] Minor changes [Eloi DEMOLIS] (2024-04-05)
  • 6023216 ] create protobuf type CustomHttpAnswers [Emmanuel Bosquet] (2024-04-05)
  • 55242ba ] rename types [Emmanuel Bosquet] (2024-04-05)
  • 8faa16c ] Restore context in logs by moving the fields in HttpContext [Eloi DEMOLIS] (2024-04-05)
  • a5058c2 ] remove 404 and 503 files [Emmanuel Bosquet] (2024-04-05)
  • fb6aad9 ] Move test_https_redirect to e2e, use immutable automatic answers for e2e [Eloi DEMOLIS] (2024-04-05)
  • a2236d1 ] More template variables [Eloi DEMOLIS] (2024-04-05)

➕ Added

  • 90ee05c ] benchmark info logs in the CI [Emmanuel Bosquet] (2024-03-15)
  • a6fde1e ] distinct PEM and X509 variants for CertificateError [Emmanuel Bosquet] (2024-03-15)
  • e793ec6 ] Edit access logs ASCII format, put logs-cache under feature [Eloi DEMOLIS] (2024-03-11)
  • 85e2653 ] implement From<Uint128> for Ulid [Emmanuel Bosquet] (2024-03-11)
  • 756b78b ] create type WebSocketContext [Emmanuel Bosquet] (2024-03-11)
  • 0885863 ] Logger refactor: better structured logs and colored logs [Eloi DEMOLIS] (2024-03-11)
  • dfacdb7 ] protobuf access logs [Emmanuel Bosquet] (2024-03-11)
  • 7c25133 ] create helper function server::worker_response_error [Emmanuel Bosquet] (2024-02-23)
  • a6ffebe ] binary and delimited serialization of prost messages in channels [Emmanuel Bosquet] (2024-02-02)
  • 62f3db3 ] add fields and defaults to ServerConfig [Emmanuel Bosquet] (2024-02-02)
  • fb11245 ] create protobuf type SocketAddress, use everywhere [Emmanuel Bosquet] (2024-02-02)
  • f9ac920 ] add size to ChannelError::BufferFull [Emmanuel Bosquet] (2024-02-02)

➖ Removed

  • c677b10 ] remove duplicate code of HttpsProxy creation [Emmanuel Bosquet] (2024-02-26)
  • 39af839 ] remove useless Serde error in channel module [Emmanuel Bosquet] (2024-02-02)

✍️ Changed

  • 6114e17 ] Move timeout responsibility from front to back only when first bytes are received from the back [Eloi DEMOLIS] (2024-03-20)
  • 0d7f7d6 ] Release v1.0.0-rc.1 [Florentin Dubois] (2024-03-19)
  • bcef3b8 ] chore: update dependencies [Florentin Dubois] (2024-03-14)
  • a806fb6 ] sort cluster information alphabetically when displaying [Emmanuel Bosquet] (2024-03-12)
  • 6daf43c ] write two empty bytes after each protobuf access log [Emmanuel Bosquet] (2024-03-11)
  • 8e81a02 ] rename ProtobufAccessLog::error to 'message' [Emmanuel Bosquet] (2024-03-11)
  • b6ca85b ] apply clippy suggestions for nightly [Emmanuel Bosquet] (2024-03-11)
  • 618bed0 ] apply review: cosmetic changes [Emmanuel Bosquet] (2024-03-11)
  • 182b291 ] Use error_access in lib, add log_access to make it easier [Eloi DEMOLIS] (2024-03-11)
  • 5f55561 ] rename log_acce.0.0 - 2024-04-16ss_* variables to access_logs_* [Emmanuel Bosquet] (2024-03-11)
  • d3eeddc ] Small changes mainly relative to logging [Eloi DEMOLIS] (2024-03-11)
  • 3bb3997 ] Move all logging primitives in their own module [Eloi DEMOLIS] (2024-03-11)
  • e6bcfe0 ] set dependency resolver to 2 [Emmanuel Bosquet] (2024-03-11)
  • 96f5329 ] set rust-version to 1.74.0, update Cargo.lock [Emmanuel Bosquet] (2024-03-11)
  • 2c4363d ] bump rust-toolchain to 1.74.0 [Emmanuel Bosquet] (2024-03-11)
  • c6ee01b ] move TCP pool from TcpListener to TcpProxy [Emmanuel Bosquet] (2024-02-26)
  • 1c90c04 ] propagate errors in HttpProxy and HttpsProxy [Emmanuel Bosquet] (2024-02-23)
  • 629551f ] propagate errors in TcpProxy [Emmanuel Bosquet] (2024-02-23)
  • ba8b51a ] HttpsProxy::add_listener returns Result [Emmanuel Bosquet] (2024-02-23)
  • 630b1a7 ] define buffer sizes in u64 [Emmanuel Bosquet] (2024-02-02)
  • 24a941b ] pass ServerConfig to new worker [Emmanuel Bosquet] (2024-02-02)
  • 6d160b4 ] move ServerConfig to sozu_command_lib::config [Emmanuel Bosquet] (2024-02-02)
  • f0ecc54 ] rewrite CommandServer with MIO [Eloi DEMOLIS] (2024-01-30)
  • e382a1c ] translate WorkerRequest and WorkerResponse to protobuf [Emmanuel Bosquet] (2024-02-02)
  • 4f2d760 ] translate ServerConfig in protobuf [Emmanuel Bosquet] (2024-02-02)
  • 6d43eb1 ] SCM sockets transmit listeners in binary format [Emmanuel Bosquet] (2024-02-02)
  • 5852c6b ] pass initial state to workers in protobuf [Emmanuel Bosquet] (2024-02-02)
  • cc0a221 ] apply clippy suggestions, remove unwraps [Emmanuel Bosquet] (2024-02-02)
  • a3fe0d3 ] chore: update dependencies [Florentin Dubois] (2024-04-16)
  • 8d89733 ] chore: update configuration file [Florentin Dubois] (2024-04-16)

⛑️ Fixed

  • d20e759 ] Fix some timeout edge cases [Eloi DEMOLIS] (2024-03-18)
  • 284068d ] fix: fix RUSTSEC-2024-0019 [Dimitris Apostolou] (2024-03-09)
  • 59c0615 ] Fix close propagation on close-delimited responses with front keep-alive [Eloi DEMOLIS] (2024-02-20)
  • 6aa45b9 ] fix and rewrite CertificateResolver [Emmanuel Bosquet] (2024-02-14)
  • e793ec6 ] Edit access logs ASCII format, put logs-cache under feature [Eloi DEMOLIS] (2024-03-11)
  • 85e2653 ] implement From<Uint128> for Ulid [Emmanuel Bosquet] (2024-03-11)
  • 756b78b ] create type WebSocketContext [Emmanuel Bosquet] (2024-03-11)
  • 0885863 ] Logger refactor: better structured logs and colored logs [Eloi DEMOLIS] (2024-03-11)
  • dfacdb7 ] protobuf access logs [Emmanuel Bosquet] (2024-03-11)
  • 7c25133 ] create helper function server::worker_response_error [Emmanuel Bosquet] (2024-02-23)
  • a6ffebe ] binary and delimited serialization of prost messages in channels [Emmanuel Bosquet] (2024-02-02)
  • 62f3db3 ] add fields and defaults to ServerConfig [Emmanuel Bosquet] (2024-02-02)
  • fb11245 ] create protobuf type SocketAddress, use everywhere [Emmanuel Bosquet] (2024-02-02)
  • f9ac920 ] add size to ChannelError::BufferFull [Emmanuel Bosquet] (2024-02-02)
  • d44b227 ] document the logs-cache feature flag [Emmanuel Bosquet] (2024-03-11)
  • 7241c0e ] document the DuplicateOwnership trait [Emmanuel Bosquet] (2024-03-11)
  • 31bc55e ] Add example in command lib to benchmark the logger [Emmanuel Bosquet] (2024-03-11)
  • 4cba552 ] A small, descriptive extension to include firewalld. Avoiding a search for those not using iptables. [obreidenich] (2024-02-21)
  • 8df9ba5 ] CI: Adding a benchmark framework [Guillaume Assier] (2024-02-07)
  • 95624e6 ] Refactor HTTP, HTTPS and TCP example code [Eloi DEMOLIS] (2024-02-02)

🥹 Contributors

Full Changelog: https://github.com/sozu-proxy/sozu/compare/0.15.19..1.0.0

1.0.0-rc.2

1 month ago

This changelog is the second release candidate before the version 1.0.0, it includes a breaking change on the protocol buffer and configuration around definition of custom response when Sōzu answers instead of backends defined in cluster.

🌟 Features

  • We have introduce a way to define custom http response for a wide range of status code, see 3f0bfa1, 4923153, b9df0c1, ee2430f, 3030944, 6023216, 55242ba, 55242ba, 8faa16c, a5058c2, fb6aad9 and a2236d1.
  • We also fix a bug that could occur on some streaming https requests with tcp-keepalive when going through multiple Sōzu which does not flush correctly the ending chunk of data when calling rustls::write_vectored, see d83f399.
  • We also change how works timeout on frontends as it is now closed by the backend, once we have received a first chunk of data, see 6114e17.

Changelog

🌟 Features

  • 3f0bfa1 ] Dynamic automatic answers system [Eloi DEMOLIS] (2024-04-05)
  • 4923153 ] Unify template creation [Eloi DEMOLIS] (2024-04-05)
  • b9df0c1 ] add example 404 and 508 errors [Emmanuel Bosquet] (2024-04-05)
  • ee2430f ] make Http[s]ListenerConfig::http_answers optional [Emmanuel Bosquet] (2024-04-05)
  • 3030944 ] Minor changes [Eloi DEMOLIS] (2024-04-05)
  • 6023216 ] create protobuf type CustomHttpAnswers [Emmanuel Bosquet] (2024-04-05)
  • 55242ba ] rename types [Emmanuel Bosquet] (2024-04-05)
  • 8faa16c ] Restore context in logs by moving the fields in HttpContext [Eloi DEMOLIS] (2024-04-05)
  • a5058c2 ] remove 404 and 503 files [Emmanuel Bosquet] (2024-04-05)
  • fb6aad9 ] Move test_https_redirect to e2e, use immutable automatic answers for e2e [Eloi DEMOLIS] (2024-04-05)
  • a2236d1 ] More template variables [Eloi DEMOLIS] (2024-04-05)

➕ Added

  • 90ee05c ] benchmark info logs in the CI [Emmanuel Bosquet] (2024-03-15)

✍️ Changed

  • 6114e17 ] Move timeout responsibility from front to back only when first bytes are received from the back [Eloi DEMOLIS] (2024-03-20)

⛑️ Fixed

  • d83f399 ] Expose internal rustls buffers to ensure they are flushed [Eloi DEMOLIS] (2024-04-03)

🥹 Contributors

  • @keksoj
  • @Wonshtrum

Full Changelog: https://github.com/sozu-proxy/sozu/compare/1.0.0.-rc.1..1.0.0-rc.2

1.0.0-rc.1

1 month ago

1.0.0-rc.1 - 2024-03-19

This changelog is the first release candidate before the version 1.0.0, its goal is to allow to migrate smoothly other crates as the sozu-client to be compatible with the protobuf-everywhere part and to be able to make tests on production at Clever-Cloud by doing some A/B testing.

🌟 Features

  • This version is the first one that use protobuf-everywhere. It means that we are moving out from the old exchange model for sockets (which are data exchanges between main process and workers processes and also main process and control plane process) that use Rust structures that we serialize into json to structures described in protobuf that generate Rust source code and then communicate with binary format. Besides, this work also have some nice side-effects on fork when creating new workers (due to a self-healing or at start) which allow to reduce the time to configure a worker by around 50%. It also introduces a new way to emit access logs in a binary way, see [ dfacdb7 ], [ a6ffebe ], [ fb11245 ], [ 6daf43c ], [ 8e81a02 ], [ 24a941b ], [ 6d160b4 ], [ e382a1c ], [ 4f2d760 ], [ 6d43eb1 ] and [ 5852c6b ].
  • We have reworked emitted logs and access logs format, if you are tools that parse them, you have to take a look at the new one. Besides, it will be easier to parse. Furthermore, we have added color on logs to improve readability, see [ 0885863 ], [ d3eeddc ], [ 3bb3997 ] and [ 5f55561 ].
  • We have bump the minimum Rust supported version to v1.74.0, see [ 2c4363d ], [ 96f5329 ] and [ e6bcfe0 ].

⛑️ Fixed

  • We have fixed a bug that occurs during http request when doing streaming and tcp keep-alive which prevent to send the close-delimiter on response, see [ 59c0615 ].
  • We have fix a few bugs on certificate replacement and improve the resolution of certificates, see [ 6aa45b9 ].
  • We have fix a bug that involved timeout on frontend sockets which did not take the given value, see [ d20e759 ].

🚀 Performance

  • Thanks to the work achieved on Rustls (v0.23.0) with the help of maintainers (a huge thanks to them ❤️), we have gain between 10% and 20% performance on https requests depending of the workload, see [ 7fa680d ].

✍️ Changed

  • We have work on errors to have a better context when something happens, see [ ba8b51a ], [ 629551f ] and [ 1c90c04 ].

📚 Documentation

  • We have added some documentation about logs and access logs, see [ d44b227 ] and [ 7241c0e ].
  • We have reworked or improved examples, see [ 31bc55e ] and [ 95624e6 ].
  • We have added some documentation of using Sōzu with firewalld (thanks @obreidenich), see [ 4cba552 ].
  • We have setup a github continuous integration to provides and document a way to benchmark Sōzu (values on the ci are not reliable), see [ 8df9ba5 ].

Changelog

🚀 Performance

  • 7fa680d ] update dependencies, notably rustls [Emmanuel Bosquet] (2024-03-11)

⛑️ Fixed

  • d20e759 ] Fix some timeout edge cases [Eloi DEMOLIS] (2024-03-18)
  • 284068d ] fix: fix RUSTSEC-2024-0019 [Dimitris Apostolou] (2024-03-09)
  • 59c0615 ] Fix close propagation on close-delimited responses with front keep-alive [Eloi DEMOLIS] (2024-02-20)
  • 6aa45b9 ] fix and rewrite CertificateResolver [Emmanuel Bosquet] (2024-02-14)

📚 Documentation

  • d44b227 ] document the logs-cache feature flag [Emmanuel Bosquet] (2024-03-11)
  • 7241c0e ] document the DuplicateOwnership trait [Emmanuel Bosquet] (2024-03-11)
  • 31bc55e ] Add example in command lib to benchmark the logger [Emmanuel Bosquet] (2024-03-11)
  • 4cba552 ] A small, descriptive extension to include firewalld. Avoiding a search for those not using iptables. [obreidenich] (2024-02-21)
  • 8df9ba5 ] CI: Adding a benchmark framework [Guillaume Assier] (2024-02-07)
  • 95624e6 ] Refactor HTTP, HTTPS and TCP example code [Eloi DEMOLIS] (2024-02-02)

➕ Added

  • a6fde1e ] distinct PEM and X509 variants for CertificateError [Emmanuel Bosquet] (2024-03-15)
  • e793ec6 ] Edit access logs ASCII format, put logs-cache under feature [Eloi DEMOLIS] (2024-03-11)
  • 85e2653 ] implement From<Uint128> for Ulid [Emmanuel Bosquet] (2024-03-11)
  • 756b78b ] create type WebSocketContext [Emmanuel Bosquet] (2024-03-11)
  • 0885863 ] Logger refactor: better structured logs and colored logs [Eloi DEMOLIS] (2024-03-11)
  • dfacdb7 ] protobuf access logs [Emmanuel Bosquet] (2024-03-11)
  • 7c25133 ] create helper function server::worker_response_error [Emmanuel Bosquet] (2024-02-23)
  • a6ffebe ] binary and delimited serialization of prost messages in channels [Emmanuel Bosquet] (2024-02-02)
  • 62f3db3 ] add fields and defaults to ServerConfig [Emmanuel Bosquet] (2024-02-02)
  • fb11245 ] create protobuf type SocketAddress, use everywhere [Emmanuel Bosquet] (2024-02-02)
  • f9ac920 ] add size to ChannelError::BufferFull [Emmanuel Bosquet] (2024-02-02)

✍️ Changed

  • 0d7f7d6 ] Release v1.0.0-rc.1 [Florentin Dubois] (2024-03-19)
  • bcef3b8 ] chore: update dependencies [Florentin Dubois] (2024-03-14)
  • a806fb6 ] sort cluster information alphabetically when displaying [Emmanuel Bosquet] (2024-03-12)
  • 6daf43c ] write two empty bytes after each protobuf access log [Emmanuel Bosquet] (2024-03-11)
  • 8e81a02 ] rename ProtobufAccessLog::error to 'message' [Emmanuel Bosquet] (2024-03-11)
  • b6ca85b ] apply clippy suggestions for nightly [Emmanuel Bosquet] (2024-03-11)
  • 618bed0 ] apply review: cosmetic changes [Emmanuel Bosquet] (2024-03-11)
  • 182b291 ] Use error_access in lib, add log_access to make it easier [Eloi DEMOLIS] (2024-03-11)
  • 5f55561 ] rename log_access_* variables to access_logs_* [Emmanuel Bosquet] (2024-03-11)
  • d3eeddc ] Small changes mainly relative to logging [Eloi DEMOLIS] (2024-03-11)
  • 3bb3997 ] Move all logging primitives in their own module [Eloi DEMOLIS] (2024-03-11)
  • e6bcfe0 ] set dependency resolver to 2 [Emmanuel Bosquet] (2024-03-11)
  • 96f5329 ] set rust-version to 1.74.0, update Cargo.lock [Emmanuel Bosquet] (2024-03-11)
  • 2c4363d ] bump rust-toolchain to 1.74.0 [Emmanuel Bosquet] (2024-03-11)
  • c6ee01b ] move TCP pool from TcpListener to TcpProxy [Emmanuel Bosquet] (2024-02-26)
  • 1c90c04 ] propagate errors in HttpProxy and HttpsProxy [Emmanuel Bosquet] (2024-02-23)
  • 629551f ] propagate errors in TcpProxy [Emmanuel Bosquet] (2024-02-23)
  • ba8b51a ] HttpsProxy::add_listener returns Result [Emmanuel Bosquet] (2024-02-23)
  • 630b1a7 ] define buffer sizes in u64 [Emmanuel Bosquet] (2024-02-02)
  • 24a941b ] pass ServerConfig to new worker [Emmanuel Bosquet] (2024-02-02)
  • 6d160b4 ] move ServerConfig to sozu_command_lib::config [Emmanuel Bosquet] (2024-02-02)
  • f0ecc54 ] rewrite CommandServer with MIO [Eloi DEMOLIS] (2024-01-30)
  • e382a1c ] translate WorkerRequest and WorkerResponse to protobuf [Emmanuel Bosquet] (2024-02-02)
  • 4f2d760 ] translate ServerConfig in protobuf [Emmanuel Bosquet] (2024-02-02)
  • 6d43eb1 ] SCM sockets transmit listeners in binary format [Emmanuel Bosquet] (2024-02-02)
  • 5852c6b ] pass initial state to workers in protobuf [Emmanuel Bosquet] (2024-02-02)
  • cc0a221 ] apply clippy suggestions, remove unwraps [Emmanuel Bosquet] (2024-02-02)

➖ Removed

  • c677b10 ] remove duplicate code of HttpsProxy creation [Emmanuel Bosquet] (2024-02-26)
  • 39af839 ] remove useless Serde error in channel module [Emmanuel Bosquet] (2024-02-02)

🥹 Contributors

Full Changelog: https://github.com/sozu-proxy/sozu/compare/0.15.19..1.0.0-rc.1

0.15.19

3 months ago

0.15.19 - 2024-01-25

This changelog merges modifications between 0.15.15 to 0.15.19

Changelog

➕ Added

  • [ 72bfab9 ] setup logging in accept_clients() [Emmanuel Bosquet] (2023-12-13)
  • [ 18ddee3 ] add missing access logs [Emmanuel Bosquet] (2024-01-08)
  • [ 822dcb9 ] CLI: all responses are displayable in JSON [Emmanuel Bosquet] (2023-12-06)
  • [ 1788fac ] add remove_backend test in state module [Emmanuel Bosquet] (2023-12-06)
  • [ 161ca05 ] introduce optional worker_timeout [Emmanuel Bosquet] (2023-11-23)
  • [ b754391 ] create ConfigState::write_requests_to_file [Emmanuel Bosquet] (2023-11-27)

⛑️ Fixed

  • [ 1cb4d53 ] handle backend hangup when responses is still transferring [Emmanuel Bosquet] (2024-01-08)
  • [ 1710f8a ] Fix TCP connection hanging on backend connection error [Eloi DEMOLIS] (2024-01-23)
  • [ 707fbf3 ] Update TCP states to use SessionResult when possible [Eloi DEMOLIS] (2024-01-24)
  • [ 6bd2d85 ] fix(sozu): reset storage buffers on keep-alive requests [Florentin Dubois] (2023-12-07)
  • [ bb1aa11 ] fix(https): panic on failed https upgrade into wss [Florentin Dubois] (2023-12-13)
  • [ ae8c66d ] fix(http): panic on http upgrade into websocket [Florentin Dubois] (2023-12-13)
  • [ 58a7f03 ] Fix: WouldBlock in SocketHandler::socket_write breaks properly [Eloi DEMOLIS] (2023-11-23)
  • [ 17020fb ] Fix panic in view [Eloi DEMOLIS] (2023-11-23)
  • [ 0d82323 ] fix worker status command [Emmanuel Bosquet] (2023-11-23)
  • [ 582ab5b ] Do not set RUST_LOG on logger setup [Eloi DEMOLIS] (2023-12-07)
  • [ 04d3105 ] Sanitize user-agent in access logs [Eloi DEMOLIS] (2024-01-24)
  • [ 10f5433 ] fix timeout issue in the CLI [Emmanuel Bosquet] (2024-01-24)

✍️ Changed

  • [ 23d8171 ] update rustls to 0.22.1 [Emmanuel Bosquet] (2023-12-14)
  • [ b7ef38f ] add no-clusters option on metrics query [Emmanuel Bosquet] (2024-01-24)
  • [ 98b5783 ] chore: update dependencies [Florentin Dubois] (2024-01-25)
  • [ 3a4e4fd ] pass Vec<WorkerRequests> instead of ConfigState to new worker [Emmanuel Bosquet] (2023-11-27)
  • [ b455bbf ] Add SNI and peer address on handshake error logs [Eloi DEMOLIS] (2023-11-28)
  • [ d864012 ] remove main logger [Emmanuel Bosquet] (2023-12-01)
  • [ 505d134 ] remove unused dependencies [Emmanuel Bosquet] (2023-12-04)
  • [ 0e62ff3 ] refactor cli display by creating Response::display [Emmanuel Bosquet] (2023-12-06)
  • [ 95de156 ] display no other lines than JSON [Emmanuel Bosquet] (2023-12-06)
  • [ 86303a2 ] ConfigState::cluster_state return Option<ClusterInformation> [Emmanuel Bosquet] (2023-12-06)
  • [ 4d1500a ] chore: reduce verbosity of a few logs [Florentin Dubois] (2023-12-07)
  • [ 3c6ef35 ] Better logging for parsing errors [Eloi DEMOLIS] (2023-12-07)
  • [ 63e76c7 ] chore: reduce logging level [Florentin Dubois] (2023-12-08)
  • [ 0f0ed1f ] workers return only one response when dispatching a request [Emmanuel Bosquet] (2023-12-12)
  • [ ef6e99a ] chore(http,https): update warning message with frontend token [Florentin Dubois] (2023-12-13)
  • [ 32d8e3a ] chore: update rustls to 0.21.10 [Florentin Dubois] (2023-12-13)
  • [ c887666 ] better logging of back error [Emmanuel Bosquet] (2023-11-22)
  • [ 4a444b1 ] Mutualize MAX_LOOP_ITERATIONS in config [Eloi DEMOLIS] (2023-11-23)
  • [ 730f0c3 ] Adjust logging level [Eloi DEMOLIS] (2023-11-23)

🥹 Contributors

  • @keksoj
  • @FlorentinDUBOIS
  • @Wonshtrum

Full Changelog: https://github.com/sozu-proxy/sozu/compare/0.15.15...0.15.19

0.15.15

6 months ago

0.15.15 - 2023-11-15

This changelog merge all modifications between versions 0.15.13 and 0.15.15

  • Since the deployment of the version 0.15.x at Clever Cloud, we have seen some performance issues around tls handshake and we made several efforts to dig in and fix them, see 8364454 and 92a277c.
  • We have fix a bug when we replace a tls certificate that resolve the old one, once replaced, see 50afe7a
  • We also allow to choose the number of ticket tls given to a new tls handshake, see 0c3c129.
  • Update the systemd service to set start interval and burst, see af5ea00.
  • We also document a way to benchmark sozu, see e754a15.

Changelog

🚀 Performance

  • 8364454 ] Use rustls::Writer::write_vectored to reduce writev syscalls [Eloi DEMOLIS] (2023-11-08)
  • 92a277c ] store certificates in parsed form in CertificateResolver [Eloi DEMOLIS] (2023-11-14)

⛑️ Fixed

  • 50afe7a ] fix(tls): certificate replacement and remove is still-in-use security [Florentin Dubois] (2023-11-14)

✍️ Changed

  • 0c3c129 ] make send_tls13_tickets configurable [Emmanuel Bosquet] (2023-11-09)
  • 1406954 ] Remove rustls backpressuring flag [Eloi DEMOLIS] (2023-11-08)
  • 9b29dcf ] proper logging of RouterError::RouteNotFound [Emmanuel Bosquet] (2023-11-13)
  • af5ea00 ] distribution(systemd): set start limit interval and burst [Florentin Dubois] (2023-11-14)
  • cc12789 ] comments and renaming in lib::tls [Emmanuel Bosquet] (2023-11-14)

📚 Documentation

  • e754a15 ] document benchmarking technique [Emmanuel Bosquet] (2023-11-10)

🥹 Contributors

  • @keksoj
  • @FlorentinDUBOIS
  • @Wonshtrum

Full Changelog: https://github.com/sozu-proxy/sozu/compare/0.15.13...0.15.15

0.15.13

6 months ago

0.15.13 - 2023-10-27

This changelog merge all modifications between versions 0.15.6 and 0.15.13

Changelog

➕ Added

  • be2cfe6 ] Add 507 default answer [Eloi DEMOLIS] (2023-10-24)

⛑️ Fixed

  • 5d2f3b9 ] fix misleading CLI line on state saving [Emmanuel Bosquet] (2023-10-27)
  • 7b61c04 ] build: add missing assets [Florentin Dubois] (2023-10-27)
  • 72e9d44 ] Don't override X-Forwarded-Proto and X-Forwarded-Port [Eloi DEMOLIS] (2023-10-26)
  • bf026ee ] Add a default certificate when none are found for a host [Eloi DEMOLIS] (2023-10-27)
  • 76e0e7d ] Fix early connect trials [Eloi DEMOLIS] (2023-10-24)
  • 0bdf61d ] fix cluster metrics [Emmanuel Bosquet] (2023-10-24)
  • 89bf73a ] fix(timeout): implements cancel on drop [Florentin Dubois] (2023-10-23)
  • 1196a90 ] include TCP clusters in command 'cluster list' [Emmanuel Bosquet] (2023-09-19)
  • e562299 ] Fix TrieNode wildcard and regexp management [Eloi DEMOLIS] (2023-10-17)
  • 4c47cfc ] fix the display of non-existing cluster information in cluster list [Emmanuel Bosquet] (2023-10-13)
  • cda2f01 ] Fix X-Forwarded-Port when not present [Eloi DEMOLIS] (2023-10-20)
  • ea0b8af ] fix(rustls): read buffer if we received a bufffer full error instead of processing new packets [Florentin Dubois] (2023-10-21)
  • 437eb12 ] fix: allow to read [Florentin Dubois] (2023-10-21)

✍️ Changed

  • 8854576 ] Add log on suspicious X-Forwarded-Proto and Port [Eloi DEMOLIS] (2023-10-27)
  • ea6bacd ] Get Subject Alternative Names from extensions [Eloi DEMOLIS] (2023-10-25)
  • 8595cf9 ] Remove early read on TLS upgrade [Eloi DEMOLIS] (2023-10-24)
  • 9648cf0 ] enable cluster metrics by default [Emmanuel Bosquet] (2023-10-23)
  • 6b53071 ] save 4xx and 5xx status codes in cluster metrics [Emmanuel Bosquet] (2023-10-23)
  • a1d60b2 ] more sensible CLI defaults params in config.toml [Emmanuel Bosquet] (2023-09-21)
  • 641daa3 ] send logging level change requests to workers [Emmanuel Bosquet] (2023-10-18)
  • 887babe ] chore: increase logs on access error [Florentin Dubois] (2023-10-21)

📚 Documentation

  • 9301048 ] doc(changelog): add 0.15.6 entry [Florentin Dubois] (2023-10-11)

🥹 Contributors

  • @keksoj
  • @FlorentinDUBOIS
  • @Wonshtrum

Full Changelog: https://github.com/sozu-proxy/sozu/compare/0.15.6...0.15.13

0.15.6

7 months ago

⛑️ Fixed

  • Fix behaviour on missing X-Forwarded-Proto and X-Forwarded-Port, we add them in that case, see c09e17a.
  • Fix behaviour on kawa parser when we detect a header Content-Length on HEAD requests, see 7d89372.

Changelog

⛑️ Fixed

  • c09e17a ] Fix X-Forwarded-Proto and X-Forwarded-Port (add them when not present) [Eloi DEMOLIS] (2023-10-11)
  • 7d89372 ] Fix responses to head requests (ignore body length) [Eloi DEMOLIS] (2023-10-11)

✍️ Changed

  • a52e750 ] doc(changelog): add 0.15.5 entry [Florentin Dubois] (2023-09-21)
  • 4ffaf2b ] chore: update dependencies [Florentin Dubois] (2023-10-11)
  • 6de9cf5 ] chore: update dependencies [Florentin Dubois] (2023-09-21)

🥹 Contributors

  • @FlorentinDUBOIS
  • @Wonshtrum

0.15.5

7 months ago

⛑️ Fixed

We fix a bug that can occurs with pki using T.61 charset, see a5412b9.

Changelog

⛑️ Fixed

  • [a5412b9 ] fix(command): retrieve name and san from slice [Florentin Dubois] (2023-09-21)

✍️ Changed

  • [ 24c4407 ] chore: update changelog to add 0.15.4 [Florentin Dubois] (2023-09-13)
  • [ 6de9cf5 ] chore: update dependencies [Florentin Dubois] (2023-09-21)

🥹 Contributors

  • @FlorentinDUBOIS

Full Changelog: https://github.com/sozu-proxy/sozu/compare/0.15.4...0.15.5

0.15.4

8 months ago

Changelog

🌟 Features

⛑️ Fixed

🌟 Features

  • [ 9df3f1d ] introduce SIMD as default feature [Emmanuel Bosquet] (2023-09-13)

➕ Added

  • [ 2b84a4b ] create PortProvider in e2e tests [Emmanuel Bosquet] (2023-09-12)

✍️ Changed

  • [ 31c26b4 ] remove buffer_queue, useless since introduction of kawa [Emmanuel Bosquet] (2023-09-13)
  • [ c25d483 ] remove unused dependencies [Emmanuel Bosquet] (2023-09-13)
  • [ f9c4ddb ] update dependencies [Emmanuel Bosquet] (2023-09-13)
  • [ 90e3bc7 ] cargo fmt [Emmanuel Bosquet] (2023-09-13)
  • [ 4aceb86 ] remove serial aspect of e2e tests [Emmanuel Bosquet] (2023-09-12)
  • [ f0661a5 ] update dependencies [Emmanuel Bosquet] (2023-09-11)
  • [ 02892b8 ] set rust-toolchain and rust-version to 1.70.0 [Emmanuel Bosquet] (2023-09-11)

🚀 Refactored

  • [ 5b14713 ] merge use statements in kawa_h1::answers [Emmanuel Bosquet] (2023-09-13)
  • [ 001aa89 ] remove useless test crate import [Emmanuel Bosquet] (2023-09-13)
  • [ 8c164f9 ] use TryFrom in prost::Decode [Emmanuel Bosquet] (2023-09-13)

⛑️ Fixed

  • [ 818bc48 ] fix test for 101 HTTP behavior [Emmanuel Bosquet] (2023-09-13)
  • [ daaeb19 ] remove skipping of certificate update in GenericCertificateResolver [Emmanuel Bosquet] (2023-09-12)
  • [ 56dce47 ] fix 103 early hint e2e test [Emmanuel Bosquet] (2023-09-12)

📚 Documentation

  • [ d2f1621 ] fix(readme): Define covered work interpretation #764 [Steven LE ROUX] (2023-08-30)
  • [ e9c185e ] remove doc lines about a removed systemd script [Emmanuel Bosquet] (2023-08-24)
  • [ bd5703a ] fix doc link to systemd unit file [Emmanuel Bosquet] (2023-08-24)

🥹 Contributors

  • @keksoj
  • @Wonshtrum
  • @FlorentinDUBOIS

Full Changelog: https://github.com/sozu-proxy/sozu/compare/0.15.3...0.15.4

0.15.3

9 months ago

🌟 Features

⛑️ Fixed

  • Fix the loading of configuration from a file that was limited to the buffer size, see df69ba6.
  • Fix the display of domain names in the command line, see 14868dd and c738545.

Changelog

➕ Added

  • [ b8e1017 ] fix metrics macros import scopes [hcaumeil] (2023-08-02)
  • [ 471c46f ] renaming metrics for consistancy [hcaumeil] (2023-08-02)
  • [ 9aee4da ] make http status metrics and access logs metrics cluster related [hcaumeil] (2023-08-02)
  • [ 11ff5bd ] add user-agent in access logs [hcaumeil] (2023-08-02)
  • [ 8334bc7 ] add path matching time metrics [hcaumeil] (2023-08-02)
  • [ 6df1802 ] rename metric connections.error to backend.connections.error [hcaumeil] (2023-08-02)
  • [ e8caac8 ] make http.301.redirection metric cluster related [hcaumeil] (2023-08-02)
  • [ 295c2b6 ] cleaner error handling [hcaumeil] (2023-08-03)
  • [ 0acf06d ] better formating [hcaumeil] (2023-08-03)
  • [ 3feeca8 ] variable rename for clarity [hcaumeil] (2023-08-03)
  • [ 182b579 ] rename up and down metrics for clarity [hcaumeil] (2023-08-08)
  • [ c2b4c9c ] make some http 4.x.x status metrics clustered (401,408,413) [hcaumeil] (2023-08-08)
  • [ 0ecf4cc ] chore: print user-agent as a tag value in access logs [Florentin Dubois] (2023-08-08)

🚀 Refactored

  • [ e7b530d ] create CertificateError for the certificate module [Emmanuel Bosquet] (2023-07-31)
  • [ d2e1dcc ] remove anyhow from sozu_command_lib dependencies [Emmanuel Bosquet] (2023-07-31)
  • [ d0389d8 ] add thiserror to ConfigState::dispatch [Emmanuel Bosquet] (2023-07-31)
  • [ 447bed5 ] create ScmSocketError for module scm_socket [Emmanuel Bosquet] (2023-07-31)
  • [ aa55b97 ] create RequestError for the request module [Emmanuel Bosquet] (2023-07-31)
  • [ 0a92877 ] create FrontendFromRequestError [Emmanuel Bosquet] (2023-07-31)
  • [ a04fe34 ] create ServerBindError in socket module [Emmanuel Bosquet] (2023-07-31)
  • [ e1e7ce2 ] create RouterError, ProxyError, extend ListenerError [Emmanuel Bosquet] (2023-07-31)
  • [ bdde240 ] create BackendConnectionError and RetrieveClusterError [Emmanuel Bosquet] (2023-07-31)
  • [ d109ccc ] create MetricError in metrics module [Emmanuel Bosquet] (2023-07-31)
  • [ bda6913 ] put struct Backend in backends module, create BackendError [Emmanuel Bosquet] (2023-07-31)
  • [ cc341e3 ] follow review to the error management [Emmanuel Bosquet] (2023-07-31)
  • [ 5c7a8ef ] create ChannelError [Emmanuel Bosquet] (2023-07-31)
  • [ b919515 ] create ConfigError for the config module [Emmanuel Bosquet] (2023-07-31)
  • [ f9353d2 ] refactor: use CertificateError instead of ParseTlsVersionError [Florentin Dubois] (2023-08-04)

⛑️ Fixed

  • [ df69ba6 ] fix parsing in LoadState [Emmanuel Bosquet] (2023-07-28)
  • [ 14868dd ] fix(tls): use right method to get cn and san attributes [Florentin Dubois] (2023-08-04)
  • [ c738545 ] fix: retrieve cn and san attributes to display them in command line [Florentin Dubois] (2023-08-04)

✍️ Changed

  • [ 21d3609 ] chore: update changelog [Florentin Dubois] (2023-07-17)
  • [ e060e2b ] chore: update year of changelog entries [Florentin DUBOIS] (2023-07-18)
  • [ 06a214f ] comment out proxy protocol v1 tests since v1 is not used in sozu [Emmanuel Bosquet] (2023-07-20)
  • [ 6b89eca ] rename CustomError to ParseError [Emmanuel Bosquet] (2023-07-27)
  • [ c60f5ee ] build: increase minimum supported rust version to 1.67.0 [Florentin Dubois] (2023-08-04)
  • [ 7aab06d ] chore: update dependencies [Florentin Dubois] (2023-08-04)
  • [ df5904e ] chore: update dependencies [Florentin Dubois] (2023-08-07)
  • [ 2539cfb ] styles(command): remove unused imports [Florentin Dubois] (2023-08-07)
  • [ 9c2cbcc ] Remove most clippy warnings, remove front_readiness and back_readiness getters [Eloi DEMOLIS] (2023-08-08)
  • [ b80c7e8 ] chore: update clap to 4.3.21 [Florentin Dubois] (2023-08-09)
  • [ 8a5fb9a ] release: v0.15.3 [Florentin Dubois] (2023-08-09)

📚 Documentation

  • [ 0b0fbcb ] doc: add documentation on tls-related functions [Florentin Dubois] (2023-08-04)

🥹 Contributors

  • @keksoj
  • @hcaumeil
  • @Wonshtrum
  • @FlorentinDUBOIS

Full Changelog: https://github.com/sozu-proxy/sozu/compare/0.15.2...0.15.3