* [pbs-devel] [PATCH proxmox] rest-server: Encode with zlib headers
@ 2024-07-16 9:22 Maximiliano Sandoval
2024-07-17 15:49 ` Max Carrara
2024-07-22 6:12 ` [pbs-devel] applied: " Thomas Lamprecht
0 siblings, 2 replies; 7+ messages in thread
From: Maximiliano Sandoval @ 2024-07-16 9:22 UTC (permalink / raw)
To: pbs-devel
As per [RFC9110] the Deflate encoding is a "zlib" data format. This
makes the rest-server compatible with the http-client.
[RFC9110] https://www.rfc-editor.org/rfc/rfc9110#field.content-encoding
Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
---
By default the builder will use the default compression level. Please let me
know if the Level::Default should be set explicitly.
proxmox-rest-server/src/rest.rs | 35 ++++++++++++++++++---------------
1 file changed, 19 insertions(+), 16 deletions(-)
diff --git a/proxmox-rest-server/src/rest.rs b/proxmox-rest-server/src/rest.rs
index 3a3c287c..4be36074 100644
--- a/proxmox-rest-server/src/rest.rs
+++ b/proxmox-rest-server/src/rest.rs
@@ -30,7 +30,7 @@ use proxmox_router::{http_bail, http_err};
use proxmox_schema::{ObjectSchemaType, ParameterSchema};
use proxmox_async::stream::AsyncReaderStream;
-use proxmox_compression::{DeflateEncoder, Level};
+use proxmox_compression::DeflateEncoder;
use proxmox_log::FileLogger;
use crate::{
@@ -557,12 +557,13 @@ pub(crate) async fn handle_api_request<Env: RpcEnvironment, S: 'static + BuildHa
CompressionMethod::Deflate.content_encoding(),
);
resp.map(|body| {
- Body::wrap_stream(DeflateEncoder::with_quality(
- TryStreamExt::map_err(body, |err| {
+ Body::wrap_stream(
+ DeflateEncoder::builder(TryStreamExt::map_err(body, |err| {
proxmox_lang::io_format_err!("error during compression: {}", err)
- }),
- Level::Default,
- ))
+ }))
+ .zlib(true)
+ .build(),
+ )
})
}
None => resp,
@@ -651,12 +652,13 @@ async fn handle_unformatted_api_request<Env: RpcEnvironment, S: 'static + BuildH
CompressionMethod::Deflate.content_encoding(),
);
resp.map(|body| {
- Body::wrap_stream(DeflateEncoder::with_quality(
- TryStreamExt::map_err(body, |err| {
+ Body::wrap_stream(
+ DeflateEncoder::builder(TryStreamExt::map_err(body, |err| {
proxmox_lang::io_format_err!("error during compression: {}", err)
- }),
- Level::Default,
- ))
+ }))
+ .zlib(true)
+ .build(),
+ )
})
}
None => resp,
@@ -711,7 +713,7 @@ async fn simple_static_file_download(
let mut response = match compression {
Some(CompressionMethod::Deflate) => {
- let mut enc = DeflateEncoder::with_quality(data, Level::Default);
+ let mut enc = DeflateEncoder::builder(data).zlib(true).build();
enc.compress_vec(&mut file, CHUNK_SIZE_LIMIT as usize)
.await?;
let mut response = Response::new(enc.into_inner().into());
@@ -752,10 +754,11 @@ async fn chunked_static_file_download(
header::CONTENT_ENCODING,
CompressionMethod::Deflate.content_encoding(),
);
- Body::wrap_stream(DeflateEncoder::with_quality(
- AsyncReaderStream::new(file),
- Level::Default,
- ))
+ Body::wrap_stream(
+ DeflateEncoder::builder(AsyncReaderStream::new(file))
+ .zlib(true)
+ .build(),
+ )
}
None => Body::wrap_stream(AsyncReaderStream::new(file)),
};
--
2.39.2
_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [pbs-devel] [PATCH proxmox] rest-server: Encode with zlib headers
2024-07-16 9:22 [pbs-devel] [PATCH proxmox] rest-server: Encode with zlib headers Maximiliano Sandoval
@ 2024-07-17 15:49 ` Max Carrara
2024-07-18 16:08 ` Thomas Lamprecht
2024-07-22 6:12 ` [pbs-devel] applied: " Thomas Lamprecht
1 sibling, 1 reply; 7+ messages in thread
From: Max Carrara @ 2024-07-17 15:49 UTC (permalink / raw)
To: Proxmox Backup Server development discussion
On Tue Jul 16, 2024 at 11:22 AM CEST, Maximiliano Sandoval wrote:
> As per [RFC9110] the Deflate encoding is a "zlib" data format. This
> makes the rest-server compatible with the http-client.
>
> [RFC9110] https://www.rfc-editor.org/rfc/rfc9110#field.content-encoding
>
> Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
> ---
>
> By default the builder will use the default compression level. Please let me
> know if the Level::Default should be set explicitly.
This patch looks simple enough to me and does what it says on the tin;
I can't really spot anything wrong here.
Regarding your comment: I think the default level is perfectly fine.
Of course, one could be pedantic and try to benchmark any differences
between the levels, but IMHO that's rather redundant - if there are any
potential gains here, they're most likely miniscule.
In other words: LGTM.
Reviewed-by: Max Carrara <m.carrara@proxmox.com>
>
> proxmox-rest-server/src/rest.rs | 35 ++++++++++++++++++---------------
> 1 file changed, 19 insertions(+), 16 deletions(-)
>
> diff --git a/proxmox-rest-server/src/rest.rs b/proxmox-rest-server/src/rest.rs
> index 3a3c287c..4be36074 100644
> --- a/proxmox-rest-server/src/rest.rs
> +++ b/proxmox-rest-server/src/rest.rs
> @@ -30,7 +30,7 @@ use proxmox_router::{http_bail, http_err};
> use proxmox_schema::{ObjectSchemaType, ParameterSchema};
>
> use proxmox_async::stream::AsyncReaderStream;
> -use proxmox_compression::{DeflateEncoder, Level};
> +use proxmox_compression::DeflateEncoder;
> use proxmox_log::FileLogger;
>
> use crate::{
> @@ -557,12 +557,13 @@ pub(crate) async fn handle_api_request<Env: RpcEnvironment, S: 'static + BuildHa
> CompressionMethod::Deflate.content_encoding(),
> );
> resp.map(|body| {
> - Body::wrap_stream(DeflateEncoder::with_quality(
> - TryStreamExt::map_err(body, |err| {
> + Body::wrap_stream(
> + DeflateEncoder::builder(TryStreamExt::map_err(body, |err| {
> proxmox_lang::io_format_err!("error during compression: {}", err)
> - }),
> - Level::Default,
> - ))
> + }))
> + .zlib(true)
> + .build(),
> + )
> })
> }
> None => resp,
> @@ -651,12 +652,13 @@ async fn handle_unformatted_api_request<Env: RpcEnvironment, S: 'static + BuildH
> CompressionMethod::Deflate.content_encoding(),
> );
> resp.map(|body| {
> - Body::wrap_stream(DeflateEncoder::with_quality(
> - TryStreamExt::map_err(body, |err| {
> + Body::wrap_stream(
> + DeflateEncoder::builder(TryStreamExt::map_err(body, |err| {
> proxmox_lang::io_format_err!("error during compression: {}", err)
> - }),
> - Level::Default,
> - ))
> + }))
> + .zlib(true)
> + .build(),
> + )
> })
> }
> None => resp,
> @@ -711,7 +713,7 @@ async fn simple_static_file_download(
>
> let mut response = match compression {
> Some(CompressionMethod::Deflate) => {
> - let mut enc = DeflateEncoder::with_quality(data, Level::Default);
> + let mut enc = DeflateEncoder::builder(data).zlib(true).build();
> enc.compress_vec(&mut file, CHUNK_SIZE_LIMIT as usize)
> .await?;
> let mut response = Response::new(enc.into_inner().into());
> @@ -752,10 +754,11 @@ async fn chunked_static_file_download(
> header::CONTENT_ENCODING,
> CompressionMethod::Deflate.content_encoding(),
> );
> - Body::wrap_stream(DeflateEncoder::with_quality(
> - AsyncReaderStream::new(file),
> - Level::Default,
> - ))
> + Body::wrap_stream(
> + DeflateEncoder::builder(AsyncReaderStream::new(file))
> + .zlib(true)
> + .build(),
> + )
> }
> None => Body::wrap_stream(AsyncReaderStream::new(file)),
> };
_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [pbs-devel] [PATCH proxmox] rest-server: Encode with zlib headers
2024-07-17 15:49 ` Max Carrara
@ 2024-07-18 16:08 ` Thomas Lamprecht
2024-07-22 5:56 ` Max Carrara
0 siblings, 1 reply; 7+ messages in thread
From: Thomas Lamprecht @ 2024-07-18 16:08 UTC (permalink / raw)
To: Proxmox Backup Server development discussion, Max Carrara
Am 17/07/2024 um 17:49 schrieb Max Carrara:
> On Tue Jul 16, 2024 at 11:22 AM CEST, Maximiliano Sandoval wrote:
>> As per [RFC9110] the Deflate encoding is a "zlib" data format. This
>> makes the rest-server compatible with the http-client.
>>
>> [RFC9110] https://www.rfc-editor.org/rfc/rfc9110#field.content-encoding
>>
>> Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
>> ---
>>
>> By default the builder will use the default compression level. Please let me
>> know if the Level::Default should be set explicitly.
>
> This patch looks simple enough to me and does what it says on the tin;
> I can't really spot anything wrong here.
Does the "does what it says on the tin" part also mean you tested this
explicitly? Just wondering why no T-b was given and how closely I need
to check this out ;-)
_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [pbs-devel] [PATCH proxmox] rest-server: Encode with zlib headers
2024-07-18 16:08 ` Thomas Lamprecht
@ 2024-07-22 5:56 ` Max Carrara
2024-07-22 6:20 ` Thomas Lamprecht
0 siblings, 1 reply; 7+ messages in thread
From: Max Carrara @ 2024-07-22 5:56 UTC (permalink / raw)
To: Thomas Lamprecht, Proxmox Backup Server development discussion
On Thu Jul 18, 2024 at 6:08 PM CEST, Thomas Lamprecht wrote:
> Am 17/07/2024 um 17:49 schrieb Max Carrara:
> > On Tue Jul 16, 2024 at 11:22 AM CEST, Maximiliano Sandoval wrote:
> >> As per [RFC9110] the Deflate encoding is a "zlib" data format. This
> >> makes the rest-server compatible with the http-client.
> >>
> >> [RFC9110] https://www.rfc-editor.org/rfc/rfc9110#field.content-encoding
> >>
> >> Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
> >> ---
> >>
> >> By default the builder will use the default compression level. Please let me
> >> know if the Level::Default should be set explicitly.
> >
> > This patch looks simple enough to me and does what it says on the tin;
> > I can't really spot anything wrong here.
>
> Does the "does what it says on the tin" part also mean you tested this
> explicitly? Just wondering why no T-b was given and how closely I need
> to check this out ;-)
Maybe I should use less colorful sayings next time, but no, I hadn't
tested this, hence the missing T-b tag ;)
Though, for good measure I tested it now - all responses use the
"Content-Encoding: deflate" header and compress the correctly in
Firefox. Furthermore, when making a request without the header, the
content is not encoded at all (tested with curl).
So, my trailers are now as follows:
Reviewed-by: Max Carrara <m.carrara@proxmox.com>
Tested-by: Max Carrara <m.carrara@proxmox.com>
_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel
^ permalink raw reply [flat|nested] 7+ messages in thread
* [pbs-devel] applied: [PATCH proxmox] rest-server: Encode with zlib headers
2024-07-16 9:22 [pbs-devel] [PATCH proxmox] rest-server: Encode with zlib headers Maximiliano Sandoval
2024-07-17 15:49 ` Max Carrara
@ 2024-07-22 6:12 ` Thomas Lamprecht
1 sibling, 0 replies; 7+ messages in thread
From: Thomas Lamprecht @ 2024-07-22 6:12 UTC (permalink / raw)
To: Proxmox Backup Server development discussion, Maximiliano Sandoval
Am 16/07/2024 um 11:22 schrieb Maximiliano Sandoval:
> As per [RFC9110] the Deflate encoding is a "zlib" data format. This
> makes the rest-server compatible with the http-client.
>
> [RFC9110] https://www.rfc-editor.org/rfc/rfc9110#field.content-encoding
>
> Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
> ---
>
> By default the builder will use the default compression level. Please let me
> know if the Level::Default should be set explicitly.
>
> proxmox-rest-server/src/rest.rs | 35 ++++++++++++++++++---------------
> 1 file changed, 19 insertions(+), 16 deletions(-)
>
>
applied, with Max's R-b and T-b, thanks!
_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [pbs-devel] [PATCH proxmox] rest-server: Encode with zlib headers
2024-07-22 5:56 ` Max Carrara
@ 2024-07-22 6:20 ` Thomas Lamprecht
2024-07-25 7:35 ` Maximiliano Sandoval
0 siblings, 1 reply; 7+ messages in thread
From: Thomas Lamprecht @ 2024-07-22 6:20 UTC (permalink / raw)
To: Proxmox Backup Server development discussion, Max Carrara
Am 22/07/2024 um 07:56 schrieb Max Carrara:
>> Does the "does what it says on the tin" part also mean you tested this
>> explicitly? Just wondering why no T-b was given and how closely I need
>> to check this out 😉
>
> Maybe I should use less colorful sayings next time, but no, I hadn't
> tested this, hence the missing T-b tag 😉
:-)
> Though, for good measure I tested it now - all responses use the
> "Content-Encoding: deflate" header and compress the correctly in
> Firefox. Furthermore, when making a request without the header, the
> content is not encoded at all (tested with curl).
>
> So, my trailers are now as follows:
>
> Reviewed-by: Max Carrara <m.carrara@proxmox.com>
> Tested-by: Max Carrara <m.carrara@proxmox.com>
Many thanks! While I appreciate the R-b, for such changes that change
semantics one some public interface/protocol/service I'd slightly prefer
the T-b over it, at least if one would have only time to do either
review or testing; doing both test and review is naturally always nicer.
_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [pbs-devel] [PATCH proxmox] rest-server: Encode with zlib headers
2024-07-22 6:20 ` Thomas Lamprecht
@ 2024-07-25 7:35 ` Maximiliano Sandoval
0 siblings, 0 replies; 7+ messages in thread
From: Maximiliano Sandoval @ 2024-07-25 7:35 UTC (permalink / raw)
To: Thomas Lamprecht; +Cc: Proxmox Backup Server development discussion
Thomas Lamprecht <t.lamprecht@proxmox.com> writes:
> Am 22/07/2024 um 07:56 schrieb Max Carrara:
>>> Does the "does what it says on the tin" part also mean you tested this
>>> explicitly? Just wondering why no T-b was given and how closely I need
>>> to check this out 😉
>>
>> Maybe I should use less colorful sayings next time, but no, I hadn't
>> tested this, hence the missing T-b tag 😉
>
> :-)
>
>> Though, for good measure I tested it now - all responses use the
>> "Content-Encoding: deflate" header and compress the correctly in
>> Firefox. Furthermore, when making a request without the header, the
>> content is not encoded at all (tested with curl).
>>
>> So, my trailers are now as follows:
>>
>> Reviewed-by: Max Carrara <m.carrara@proxmox.com>
>> Tested-by: Max Carrara <m.carrara@proxmox.com>
>
> Many thanks! While I appreciate the R-b, for such changes that change
> semantics one some public interface/protocol/service I'd slightly prefer
> the T-b over it, at least if one would have only time to do either
> review or testing; doing both test and review is naturally always nicer.
One thing that I forgot to mention is that as per the note in [RFC 9110,
8.4.1.2] it is relatively common to have non-conformant implementations.
Hence, some clients (notably browsers) might support decoding
non-conformant payloads without the zlib header set, explaining why this
was working up to this point.
[RFC 9110] https://www.rfc-editor.org/rfc/rfc9110#field.content-encoding
--
Maximiliano
_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2024-07-25 7:35 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-07-16 9:22 [pbs-devel] [PATCH proxmox] rest-server: Encode with zlib headers Maximiliano Sandoval
2024-07-17 15:49 ` Max Carrara
2024-07-18 16:08 ` Thomas Lamprecht
2024-07-22 5:56 ` Max Carrara
2024-07-22 6:20 ` Thomas Lamprecht
2024-07-25 7:35 ` Maximiliano Sandoval
2024-07-22 6:12 ` [pbs-devel] applied: " Thomas Lamprecht
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox