mirror of
https://github.com/fawney19/Aether.git
synced 2026-10-09 02:47:45 +08:00
Fix stream timeout semantics
This commit is contained in:
@@ -597,7 +597,6 @@ fn remaining_timeout(deadline: Instant) -> Option<Duration> {
|
||||
fn resolve_request_timeouts(meta: &RequestMeta) -> RequestTimeouts {
|
||||
let first_byte_timeout = if meta.stream {
|
||||
meta.stream_first_byte_timeout_ms
|
||||
.or(meta.request_timeout_ms)
|
||||
.map(timeout_duration_from_ms)
|
||||
.unwrap_or_else(|| timeout_duration_from_legacy_secs(meta.timeout))
|
||||
} else {
|
||||
@@ -1920,6 +1919,20 @@ mod tests {
|
||||
assert!(timeouts.response_body_timeout.is_none());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn stream_request_timeouts_ignore_request_timeout_when_first_byte_missing() {
|
||||
let mut meta = sample_request_meta();
|
||||
meta.stream = true;
|
||||
meta.request_timeout_ms = Some(90_000);
|
||||
meta.stream_first_byte_timeout_ms = None;
|
||||
meta.timeout = 7;
|
||||
|
||||
let timeouts = resolve_request_timeouts(&meta);
|
||||
|
||||
assert_eq!(timeouts.first_byte_timeout, Duration::from_secs(7));
|
||||
assert!(timeouts.response_body_timeout.is_none());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn non_stream_request_timeouts_use_total_for_response_body_deadline() {
|
||||
let mut meta = sample_request_meta();
|
||||
|
||||
Reference in New Issue
Block a user