-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Closed
Description
Use local_address to bind an ipv6 to send a request, and set connect_timeout at the same time, but if the requested domain name resolution address record is not ipv6, then a panic will occur: divide by zero error when dividing duration by scalar, I think it should return an error?
- Log
root@localhost:~/reqwest# RUST_BACKTRACE=full cargo run --example form
Finished dev [unoptimized + debuginfo] target(s) in 0.09s
Running `target/debug/examples/form`
thread 'main' panicked at library/core/src/time.rs:971:31:
divide by zero error when dividing duration by scalar
stack backtrace:
0: 0x556de1cd2e0c - std::backtrace_rs::backtrace::libunwind::trace::he43a6a3949163f8c
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
1: 0x556de1cd2e0c - std::backtrace_rs::backtrace::trace_unsynchronized::h50db52ca99f692e7
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
2: 0x556de1cd2e0c - std::sys_common::backtrace::_print_fmt::hd37d595f2ceb2d3c
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/sys_common/backtrace.rs:67:5
3: 0x556de1cd2e0c - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h678bbcf9da6d7d75
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/sys_common/backtrace.rs:44:22
4: 0x556de1cfa9cc - core::fmt::rt::Argument::fmt::h3a159adc080a6fc9
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/fmt/rt.rs:138:9
5: 0x556de1cfa9cc - core::fmt::write::hb8eaf5a8e45a738e
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/fmt/mod.rs:1094:21
6: 0x556de1ccfbfe - std::io::Write::write_fmt::h9663fe36b2ee08f9
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/io/mod.rs:1714:15
7: 0x556de1cd2bf4 - std::sys_common::backtrace::_print::hcd4834796ee88ad2
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/sys_common/backtrace.rs:47:5
8: 0x556de1cd2bf4 - std::sys_common::backtrace::print::h1360e9450e4f922a
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/sys_common/backtrace.rs:34:9
9: 0x556de1cd42a3 - std::panicking::default_hook::{{closure}}::h2609fa95cd5ab1f4
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/panicking.rs:270:22
10: 0x556de1cd3fbc - std::panicking::default_hook::h6d75f5747cab6e8d
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/panicking.rs:290:9
11: 0x556de1cd4829 - std::panicking::rust_panic_with_hook::h57e78470c47c84de
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/panicking.rs:707:13
12: 0x556de1cd4727 - std::panicking::begin_panic_handler::{{closure}}::h3dfd2453cf356ecb
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/panicking.rs:599:13
13: 0x556de1cd3336 - std::sys_common::backtrace::__rust_end_short_backtrace::hdb177d43678e4d7e
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/sys_common/backtrace.rs:170:18
14: 0x556de1cd4472 - rust_begin_unwind
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/panicking.rs:595:5
15: 0x556de18d8b13 - core::panicking::panic_fmt::hd1e971d8d7c78e0e
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/panicking.rs:67:14
16: 0x556de18d8ada - core::panicking::panic_display::h2aa80c691b3dbc4e
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/panicking.rs:150:5
17: 0x556de18d8ada - core::panicking::panic_str::hc1b9be73e6642674
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/panicking.rs:134:5
18: 0x556de18d8ada - core::option::expect_failed::h87892de25a0c3562
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/option.rs:1988:5
19: 0x556de1cfe31c - core::option::Option<T>::expect::h6d164004326b0d60
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/option.rs:898:21
20: 0x556de1cfe31c - <core::time::Duration as core::ops::arith::Div<u32>>::div::h59ba17ff7c9c3879
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/time.rs:971:31
21: 0x556de1ad7db7 - hyper::client::connect::http::ConnectingTcpRemote::new::{{closure}}::hb120cc9fb2bb9883
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hyper-0.14.27/src/client/connect/http.rs:524:55
22: 0x556de1adf760 - core::option::Option<T>::map::h02aec2cad3521084
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/option.rs:1075:29
23: 0x556de1ad7cba - hyper::client::connect::http::ConnectingTcpRemote::new::hed9e91506a69e6e7
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hyper-0.14.27/src/client/connect/http.rs:524:31
24: 0x556de1ad7a0f - hyper::client::connect::http::ConnectingTcp::new::hfbd7430a79b22ac0
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hyper-0.14.27/src/client/connect/http.rs:488:32
25: 0x556de19eef65 - hyper::client::connect::http::HttpConnector<R>::call_async::{{closure}}::hf0c5309c81091e90
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hyper-0.14.27/src/client/connect/http.rs:349:17
26: 0x556de19eb6f4 - <hyper::client::connect::http::HttpConnector<R> as tower_service::Service<http::uri::Uri>>::call::{{closure}}::h4483712b12f767d5
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hyper-0.14.27/src/client/connect/http.rs:271:62
27: 0x556de1958cbe - <core::pin::Pin<P> as core::future::future::Future>::poll::hd43d923a658691aa
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/future/future.rs:125:9
28: 0x556de19eb313 - <hyper::client::connect::http::HttpConnecting<R> as core::future::future::Future>::poll::h130eb01686001a3f
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hyper-0.14.27/src/client/connect/http.rs:406:9
29: 0x556de19afda2 - <hyper_tls::client::HttpsConnector<T> as tower_service::Service<http::uri::Uri>>::call::{{closure}}::h2151f15a66f3daf0
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hyper-tls-0.5.0/src/client.rs:136:34
30: 0x556de1958bfe - <core::pin::Pin<P> as core::future::future::Future>::poll::hbf6515274dd2fcbc
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/future/future.rs:125:9
31: 0x556de19b0675 - <hyper_tls::client::HttpsConnecting<T> as core::future::future::Future>::poll::h54253dfea1c81346
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hyper-tls-0.5.0/src/client.rs:162:9
32: 0x556de18ea46e - reqwest::connect::Connector::connect_with_maybe_proxy::{{closure}}::hb75c8bacf4c4d685
at /root/reqwest/src/connect.rs:258:41
33: 0x556de1978e49 - <tokio::time::timeout::Timeout<T> as core::future::future::Future>::poll::hdfd098ea1f6f5fdb
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.33.0/src/time/timeout.rs:202:33
34: 0x556de18eda58 - reqwest::connect::with_timeout::{{closure}}::h74adfee69e7b8000
at /root/reqwest/src/connect.rs:426:43
35: 0x556de1958a2e - <core::pin::Pin<P> as core::future::future::Future>::poll::h7e63db92adb35eb8
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/future/future.rs:125:9
36: 0x556de196e22d - <hyper::service::oneshot::Oneshot<S,Req> as core::future::future::Future>::poll::h175df17e8a17d46d
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hyper-0.14.27/src/service/oneshot.rs:60:28
37: 0x556de196dcab - <F as futures_core::future::TryFuture>::try_poll::h168b3a550fab3a9e
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-core-0.3.28/src/future.rs:82:9
38: 0x556de1a67743 - <futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll::hea4addc56047fd30
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.28/src/future/try_future/into_future.rs:34:9
39: 0x556de1a12893 - <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll::hc161ae26a2685eaa
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.28/src/future/future/map.rs:55:37
40: 0x556de18fa763 - <futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll::hcb3bc436f529610e
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.28/src/lib.rs:91:13
41: 0x556de1a192f3 - <futures_util::future::try_future::MapErr<Fut,F> as core::future::future::Future>::poll::h8ba2f7cdfbea1167
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.28/src/lib.rs:91:13
42: 0x556de1a19c8b - <F as futures_core::future::TryFuture>::try_poll::hb51962dbe84225a3
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-core-0.3.28/src/future.rs:82:9
43: 0x556de1a677e3 - <futures_util::future::try_future::into_future::IntoFuture<Fut> as core::future::future::Future>::poll::hf40025b84e8dc750
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.28/src/future/try_future/into_future.rs:34:9
44: 0x556de1a125f3 - <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll::hc0f48648c19ce80b
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.28/src/future/future/map.rs:55:37
45: 0x556de18fa543 - <futures_util::future::future::Map<Fut,F> as core::future::future::Future>::poll::h5c18808ae9ac9553
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.28/src/lib.rs:91:13
46: 0x556de1a191f3 - <futures_util::future::try_future::MapOk<Fut,F> as core::future::future::Future>::poll::h438d5077ce940288
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.28/src/lib.rs:91:13
47: 0x556de1a19cbb - <F as futures_core::future::TryFuture>::try_poll::hd9850f6e599c26e6
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-core-0.3.28/src/future.rs:82:9
48: 0x556de1a50f7b - <futures_util::future::try_future::try_flatten::TryFlatten<Fut,<Fut as futures_core::future::TryFuture>::Ok> as core::future::future::Future>::poll::he35617955935e3fd
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.28/src/future/try_future/try_flatten.rs:49:61
49: 0x556de1a19343 - <futures_util::future::try_future::TryFlatten<Fut1,Fut2> as core::future::future::Future>::poll::h7889b1ec8ee7c398
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.28/src/lib.rs:91:13
50: 0x556de1a19393 - <futures_util::future::try_future::AndThen<Fut1,Fut2,F> as core::future::future::Future>::poll::he2e772cb51e5e0a8
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.28/src/lib.rs:91:13
51: 0x556de1a0ea3f - <futures_util::future::either::Either<A,B> as core::future::future::Future>::poll::h28ae58a5d57ae3d7
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.28/src/future/either.rs:109:32
52: 0x556de197232b - <hyper::common::lazy::Lazy<F,R> as core::future::future::Future>::poll::h6a43e30cf70a17a5
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hyper-0.14.27/src/common/lazy.rs:62:20
53: 0x556de1971e3a - futures_util::future::future::FutureExt::poll_unpin::h68faac473f18a268
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.28/src/future/future/mod.rs:562:9
54: 0x556de1931c97 - <futures_util::future::select::Select<A,B> as core::future::future::Future>::poll::hfbf98fcc052da368
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.28/src/future/select.rs:118:35
55: 0x556de19a4196 - hyper::client::client::Client<C,B>::connection_for::{{closure}}::he40974495af7a97d
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hyper-0.14.27/src/client/client.rs:368:49
56: 0x556de19a1cfb - hyper::client::client::Client<C,B>::send_request::{{closure}}::h99feddac5ec26ba2
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hyper-0.14.27/src/client/client.rs:236:62
57: 0x556de19a5b1a - hyper::client::client::Client<C,B>::retryably_send_request::{{closure}}::hdd92624026ef3bf6
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hyper-0.14.27/src/client/client.rs:206:66
58: 0x556de1ab5ea5 - <hyper::client::client::ResponseFuture as core::future::future::Future>::poll::h0753c27619ffc886
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hyper-0.14.27/src/client/client.rs:623:9
59: 0x556de19e1bd8 - <reqwest::async_impl::client::PendingRequest as core::future::future::Future>::poll::he49c837272f8b74c
at /root/reqwest/src/async_impl/client.rs:2263:53
60: 0x556de19e191f - <reqwest::async_impl::client::Pending as core::future::future::Future>::poll::h97d0ae0541e6b058
at /root/reqwest/src/async_impl/client.rs:2241:51
61: 0x556de18db543 - form::main::{{closure}}::h96aee2f07989474e
at /root/reqwest/examples/form.rs:19:10
62: 0x556de18da2f4 - tokio::runtime::park::CachedParkThread::block_on::{{closure}}::h81c0522a5fecd651
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.33.0/src/runtime/park.rs:282:63
63: 0x556de18da12f - tokio::runtime::coop::with_budget::h7b6ddd71da92b445
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.33.0/src/runtime/coop.rs:107:5
64: 0x556de18da12f - tokio::runtime::coop::budget::h2e6a579a6adebee6
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.33.0/src/runtime/coop.rs:73:5
65: 0x556de18da12f - tokio::runtime::park::CachedParkThread::block_on::he5a691f715db48f3
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.33.0/src/runtime/park.rs:282:31
66: 0x556de18d96e3 - tokio::runtime::context::blocking::BlockingRegionGuard::block_on::hf0a5f53766528b66
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.33.0/src/runtime/context/blocking.rs:66:9
67: 0x556de18df7c6 - tokio::runtime::scheduler::multi_thread::MultiThread::block_on::{{closure}}::ha1684ae2d291880e
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.33.0/src/runtime/scheduler/multi_thread/mod.rs:87:13
68: 0x556de18db80c - tokio::runtime::context::runtime::enter_runtime::h577521a825ffb119
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.33.0/src/runtime/context/runtime.rs:65:16
69: 0x556de18df781 - tokio::runtime::scheduler::multi_thread::MultiThread::block_on::hd6c098900379ee79
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.33.0/src/runtime/scheduler/multi_thread/mod.rs:86:9
70: 0x556de18dd2eb - tokio::runtime::runtime::Runtime::block_on::h1e06fce5fc355f4e
at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.33.0/src/runtime/runtime.rs:350:45
71: 0x556de18d984d - form::main::h01822797222d5558
at /root/reqwest/examples/form.rs:21:5
72: 0x556de18da82b - core::ops::function::FnOnce::call_once::h2c338ff220bfd987
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/ops/function.rs:250:5
73: 0x556de18d990e - std::sys_common::backtrace::__rust_begin_short_backtrace::h207ce62c640784a3
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/sys_common/backtrace.rs:154:18
74: 0x556de18df711 - std::rt::lang_start::{{closure}}::h6d1311c794c3b6ab
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/rt.rs:166:18
75: 0x556de1ccc3ab - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::hbcc4f8a3f5ada78c
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/ops/function.rs:284:13
76: 0x556de1ccc3ab - std::panicking::try::do_call::he5f117a9e13dadde
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/panicking.rs:502:40
77: 0x556de1ccc3ab - std::panicking::try::h2f3af9afce3a0443
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/panicking.rs:466:19
78: 0x556de1ccc3ab - std::panic::catch_unwind::h6d6c387f38ef05ea
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/panic.rs:142:14
79: 0x556de1ccc3ab - std::rt::lang_start_internal::{{closure}}::h6ca09d5905711415
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/rt.rs:148:48
80: 0x556de1ccc3ab - std::panicking::try::do_call::ha9fd18ea06654a4b
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/panicking.rs:502:40
81: 0x556de1ccc3ab - std::panicking::try::hda5c2a4432362341
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/panicking.rs:466:19
82: 0x556de1ccc3ab - std::panic::catch_unwind::h440f731b142bc235
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/panic.rs:142:14
83: 0x556de1ccc3ab - std::rt::lang_start_internal::hc0b4e50f058f62ce
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/rt.rs:148:20
84: 0x556de18df6ea - std::rt::lang_start::he4f654295462db46
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/rt.rs:165:17
85: 0x556de18d98fe - main
86: 0x7fc77422dd0a - __libc_start_main
87: 0x556de18d92ca - _start
88: 0x0 - <unknown>- Example Code
#[tokio::main]
async fn main() {
use std::net::IpAddr;
let client = reqwest::ClientBuilder::new()
.local_address("2605:6400:20:1466:10ca:e729:8ebd:247d".parse::<IpAddr>().unwrap())
.connect_timeout(std::time::Duration::from_secs(5))
.build()
.unwrap();
let response = client
.get("https://ai.fakeopen.com/auth/preauth")
.send()
.await
.expect("send");
println!("Response status {}", response.status());
}If I cancel connect_timeout, an error will be returned normally
root@localhost:~/reqwest# cargo run --example form
Finished dev [unoptimized + debuginfo] target(s) in 0.25s
Running `target/debug/examples/form`
thread 'main' panicked at examples/form.rs:19:10:
send: reqwest::Error { kind: Request, url: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("ai.fakeopen.com")), port: None, path: "/auth/preauth", query: None, fragment: None }, source: hyper::Error(Connect, ConnectError("tcp connect error", Custom { kind: NotConnected, error: "Network unreachable" })) }
note: run with `RUST_BACKTRACE=1` environment variable to display a backtraceMetadata
Metadata
Assignees
Labels
No labels