hyperium / hyper

An HTTP library for Rust
https://hyper.rs
MIT License
14.42k stars 1.59k forks source link

Documentation for Service::Error behavior should say it is protocol dependent #3659

Closed gituser-rs closed 4 weeks ago

gituser-rs commented 4 months ago

Version 1.3.1

Platform Ubuntu 23.10

Description I am using hyper-util auto server. I return an error from service. Instead of sending GOAWAY and closing connection hyper sends RST_STREAM. I looked into documentation and it looks like the connection should closed, but it sends RST.

image

let mut builder = Builder::new(TokioExecutor::new());;

.............

let service = service_fn(move |request| {
 async move {
   println!("request");

   Err::<Response<String>, &str>("error")
 }
}

if let Err(err) = builder.serve_connection(stream, service).await {
    println!("{err}")
}
seanmonstar commented 4 months ago

Ah ok, yea, that's a problem with the docs. They should be updated to say that the behavior depends on the protocol version. It will abort the request however the protocol allows, either with some sort of RST_STREAM, or killing the connection if that doesn't exist.

seanmonstar commented 4 weeks ago

Closed by #3712