IgnisDa / ryot

Roll your own tracker!
https://ryot.io
GNU General Public License v3.0
1.94k stars 52 forks source link

[BUG] Use `reqwest` in place of `surf` #871

Closed theggs closed 4 months ago

theggs commented 4 months ago

Seaching for a movie (in fact searching for everything) fails after a long time waiting.

step to reproduce:

  1. go to media/movie
  2. click search
  3. type in wind and press return key

full logs:

[backend] thread 'tokio-runtime-worker' panicked at apps/backend/src/providers/tmdb.rs:1291:57:
[backend] called `Result::unwrap()` on an `Err` value: An error occured while creating a new object: Cannot assign requested address (os error 99)
[backend]
[backend]   10: <core::pin::Pin<P> as core::future::future::Future>::poll
[backend]   11: <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll
[backend]   18: <async_graphql::extensions::tracing::TracingExtension as async_graphql::extensions::Extension>::execute::{{closure}}
[backend]   19: <core::pin::Pin<P> as core::future::future::Future>::poll
[backend]   20: <async_graphql::extensions::tracing::TracingExtension as async_graphql::extensions::Extension>::request::{{closure}}
[backend]   21: <F as axum::handler::Handler<(M,T1,T2,T3),S>>::call::{{closure}}
[backend]   22: <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll
[backend]   23: <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll
[backend]   24: <tower::util::map_response::MapResponseFuture<F,N> as core::future::future::Future>::poll
[backend]   25: <tower::util::oneshot::Oneshot<S,Req> as core::future::future::Future>::poll
[backend]   26: <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll
[backend]   27: <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll
[backend]   28: <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll
[backend]   29: <tower::util::map_response::MapResponseFuture<F,N> as core::future::future::Future>::poll
[backend]   30: <tower::util::oneshot::Oneshot<S,Req> as core::future::future::Future>::poll
[backend]   31: <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll
[backend]   32: <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll
[backend]   33: <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll
[backend]   34: <tower::util::map_response::MapResponseFuture<F,N> as core::future::future::Future>::poll
[backend]   35: <tower::util::oneshot::Oneshot<S,Req> as core::future::future::Future>::poll
[backend]   36: <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll
[backend]   37: <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll
[backend]   38: <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll
[backend]   39: <tower::util::map_response::MapResponseFuture<F,N> as core::future::future::Future>::poll
[backend]   40: <tower::util::oneshot::Oneshot<S,Req> as core::future::future::Future>::poll
[backend]   41: <tower_http::trace::future::ResponseFuture<Fut,C,OnResponseT,OnBodyChunkT,OnEosT,OnFailureT> as core::future::future::Future>::poll
[backend]   42: <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll
[backend]   43: <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll
[backend]   44: <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll
[backend]   45: <tower::util::map_response::MapResponseFuture<F,N> as core::future::future::Future>::poll
[backend]   46: <tower::util::oneshot::Oneshot<S,Req> as core::future::future::Future>::poll
[backend]   47: <axum::routing::route::RouteFuture<E> as core::future::future::Future>::poll
[backend]   48: <tower_http::catch_panic::ResponseFuture<F,T> as core::future::future::Future>::poll
[backend]   49: <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll
[backend]   50: <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll
[backend]   51: <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll
[backend]   52: <tower::util::map_response::MapResponseFuture<F,N> as core::future::future::Future>::poll
[backend]   53: <tower::util::oneshot::Oneshot<S,Req> as core::future::future::Future>::poll
[backend]   54: <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll
[backend]   55: <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll
[backend]   56: <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll
[backend]   57: <tower::util::map_response::MapResponseFuture<F,N> as core::future::future::Future>::poll
[backend]   58: <tower::util::oneshot::Oneshot<S,Req> as core::future::future::Future>::poll
[backend]   59: <tower_http::cors::ResponseFuture<F> as core::future::future::Future>::poll
[backend]   84: <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once
[backend]              at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/alloc/src/boxed.rs:2015:9
[backend]   85: std::sys::pal::unix::thread::Thread::new::thread_start
[backend]              at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/sys/pal/unix/thread.rs:108:17
[backend]   86: <unknown>
[backend]   87: clone
[backend] stack backtrace:
[backend]    0:     0x5600e31fde16 - std::backtrace_rs::backtrace::libunwind::trace::hd6ffdc229294c06f
[backend]                                at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/../../backtrace/src/backtrace/libunwind.rs:104:5
[backend]    1:     0x5600e31fde16 - std::backtrace_rs::backtrace::trace_unsynchronized::h991f79b6e9960513
[backend]    2:     0x5600e31fde16 - std::sys_common::backtrace::_print_fmt::hf4ebe716f7ccda10
[backend]                                at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/sys_common/backtrace.rs:68:5
[backend]    3:     0x5600e31fde16 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h410d4c66be4e37f9
[backend]                                at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/sys_common/backtrace.rs:44:22
[backend]    4:     0x5600e322bb10 - core::fmt::rt::Argument::fmt::he0ff0e0e188c0db5
[backend]                                at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/core/src/fmt/rt.rs:142:9
[backend]    6:     0x5600e31f9eef - std::io::Write::write_fmt::h5de5a4e7037c9b20
[backend]                                at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/io/mod.rs:1846:15
[backend]    7:     0x5600e31fdbf4 - std::sys_common::backtrace::_print::hd8e2e3f655086663
[backend]                                at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/sys_common/backtrace.rs:47:5
[backend]    8:     0x5600e31fdbf4 - std::sys_common::backtrace::print::h11c067a88e3bdb22
[backend]                                at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/sys_common/backtrace.rs:34:9
[backend]    9:     0x5600e31ff477 - std::panicking::default_hook::{{closure}}::h8c832ecb03fde8ea
  10:     0x5600e31ff1d9 - std::panicking::default_hook::h1633e272b4150cf3
[backend]                                at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/panicking.rs:292:9
[backend]   11:     0x5600e31ff908 - std::panicking::rust_panic_with_hook::hb164d19c0c1e71d4
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/panicking.rs:781:13
[backend]   12:     0x5600e31ff7e2 - std::panicking::begin_panic_handler::{{closure}}::h0369088c533c20e9
[backend]                                at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/panicking.rs:659:13
[backend]   13:     0x5600e31fe316 - std::sys_common::backtrace::__rust_end_short_backtrace::hc11d910daf35ac2e
[backend]                                at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/sys_common/backtrace.rs:171:18
[backend]   14:     0x5600e31ff534 - rust_begin_unwind
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/panicking.rs:647:5
[backend]   15:     0x5600e0c62105 - core::panicking::panic_fmt::ha6effc2775a0749c
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/core/src/panicking.rs:72:14
  17:     0x5600e11b0966 - ryot::providers::tmdb::get_client_config::{{closure}}::h59eb552ac654242b
[backend]   18:     0x5600e117cdbe - ryot::miscellaneous::resolver::MiscellaneousService::get_metadata_provider::{{closure}}::h8d10edca5fcf3430
  19:     0x5600e1215d5d - ryot::miscellaneous::resolver::_::<impl async_graphql::resolver_utils::container::ContainerType for ryot::miscellaneous::resolver::MiscellaneousQuery>::resolve_field::{{closure}}::hae229ae19d8b4533
[backend]   20:     0x5600e0ff4e37 - <async_graphql::types::query_root::QueryRoot<T> as async_graphql::resolver_utils::container::ContainerType>::resolve_field::{{closure}}::h0fe7916b2485da80
[backend]   21:     0x5600e10cc16c - <core::pin::Pin<P> as core::future::future::Future>::poll::h6757124405b97224
[backend]   22:     0x5600e2b79a4a - <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll::hdc24f42c8d38783f
[backend]   23:     0x5600e2b80730 - <async_graphql::extensions::tracing::TracingExtension as async_graphql::extensions::Extension>::resolve::{{closure}}::h5004574adc910b9e
[backend]   24:     0x5600e0c6aeb2 - async_graphql::extensions::Extensions::resolve::{{closure}}::hd6787b304a64845b
[backend]   25:     0x5600e0d02648 - async_graphql::resolver_utils::container::Fields::add_set::{{closure}}::h3603c5312c995391
  26:     0x5600e19bdcb4 - <futures_util::future::try_maybe_done::TryMaybeDone<Fut> as core::future::future::Future>::poll::hcbe7495f3887a9be
[backend]   27:     0x5600e1ceb1d8 - <futures_util::future::try_join_all::TryJoinAll<F> as core::future::future::Future>::poll::h7938091eab499530
[backend]   28:     0x5600e1687418 - async_graphql::schema::Schema<Query,Mutation,Subscription>::execute::{{closure}}::{{closure}}::{{closure}}::{{closure}}::h4afa95c97c525287
[backend]   29:     0x5600e2b7f9b0 - <async_graphql::extensions::tracing::TracingExtension as async_graphql::extensions::Extension>::execute::{{closure}}::h6d29695f1878184b
[backend]   48:     0x5600e14b5f86 - <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll::h9ec2442ca2c212ec
[backend]   49:     0x5600e14b40d6 - <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll::h537da32da1df380b
  52:     0x5600e1f6e032 - <tower_http::trace::future::ResponseFuture<Fut,C,OnResponseT,OnBodyChunkT,OnEosT,OnFailureT> as core::future::future::Future>::poll::h9c59ea189d9099f5
[backend]   53:     0x5600e14b7016 - <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll::hd96d101dc783e557
[backend]   55:     0x5600e14b6106 - <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll::ha2c154a53cf1d272
[backend]   56:     0x5600e1f5c299 - <tower::util::map_response::MapResponseFuture<F,N> as core::future::future::Future>::poll::h5ec02542abb3314f
[backend]   58:     0x5600e170795c - <axum::routing::route::RouteFuture<E> as core::future::future::Future>::poll::h2a2a9e44dac49b7c
  59:     0x5600e16ba49d - <tower_http::catch_panic::ResponseFuture<F,T> as core::future::future::Future>::poll::h3f6f2fb80f1e6f9c
[backend]   61:     0x5600e14b719a - <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll::hebbd9b97d6d88c35
[backend]   62:     0x5600e14b62aa - <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll::hb1420bf2512d93a6
[backend]   64:     0x5600e1707d62 - <tower::util::oneshot::Oneshot<S,Req> as core::future::future::Future>::poll::hb3c2c4cc5647008c
[backend]   65:     0x5600e14b651a - <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll::hb84a7c3e3d211f77
[backend]   67:     0x5600e14b40d6 - <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll::h537da32da1df380b
[backend]   68:     0x5600e1f5c149 - <tower::util::map_response::MapResponseFuture<F,N> as core::future::future::Future>::poll::h1524d25d2f967184
[backend]   70:     0x5600e1b35bbb - <tower_http::cors::ResponseFuture<F> as core::future::future::Future>::poll::h5a3e8d522f9ccb74
[backend]   71:     0x5600e14b3d86 - <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll::h36f26b1fc1edb448
[backend]   74:     0x5600e1f5c139 - <tower::util::map_response::MapResponseFuture<F,N> as core::future::future::Future>::poll::h09f75377b60f53cb
[backend]   75:     0x5600e1707d62 - <tower::util::oneshot::Oneshot<S,Req> as core::future::future::Future>::poll::hb3c2c4cc5647008c
[backend]   77:     0x5600e1708184 - <tower::util::oneshot::Oneshot<S,Req> as core::future::future::Future>::poll::he6f80753822dee30
[backend]   78:     0x5600e1e49a92 - hyper::proto::h1::dispatch::Dispatcher<D,Bs,I,T>::poll_catch::hf33d02e13903c952
  80:     0x5600e1e894a1 - <axum::serve::Serve<M,S> as core::future::into_future::IntoFuture>::into_future::{{closure}}::{{closure}}::habb36e81ec448afb
[backend]   81:     0x5600e1e5aea2 - tokio::runtime::task::core::Core<T,S>::poll::hc04e37799dcf7d61
[backend]   83:     0x5600e31af55d - tokio::runtime::scheduler::multi_thread::worker::Context::run_task::h0bb20374cba49911
[backend]   84:     0x5600e31ae824 - tokio::runtime::scheduler::multi_thread::worker::Context::run::h7bc0164ad0fe97d9
[backend]   85:     0x5600e31c2da2 - tokio::runtime::context::set_scheduler::h1bd128d65ed7ffd1
[backend]   86:     0x5600e31a9a5f - tokio::runtime::context::runtime::enter_runtime::hcb8197f10102ae33
[backend]   88:     0x5600e31c37b3 - <tokio::runtime::blocking::task::BlockingTask<T> as core::future::future::Future>::poll::h4b8d1de4392b701f
  89:     0x5600e31bff27 - tokio::runtime::task::core::Core<T,S>::poll::hc9bb46a982f2c059
[backend]   90:     0x5600e31a596a - tokio::runtime::task::harness::Harness<T,S>::poll::h97be9e774343fcee
[backend]   91:     0x5600e31b45c0 - tokio::runtime::blocking::pool::Inner::run::h278e167523af3ac3
[backend]   92:     0x5600e31c13d7 - std::sys_common::backtrace::__rust_begin_short_backtrace::h04ce36f276905cc6
[backend]   93:     0x5600e31c1bf9 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h1b73ef77adbb80e5
[backend]                                at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/alloc/src/boxed.rs:2015:9
[backend]   95:     0x5600e3203115 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h70462b441b6c0e1f
[backend]                                at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/alloc/src/boxed.rs:2015:9
[backend]   96:     0x5600e3203115 - std::sys::pal::unix::thread::Thread::new::thread_start::h3631815ad38387d6
                               at /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/sys/pal/unix/thread.rs:108:17
[backend]   97:     0x7fdb8d4a7044 - <unknown>
[backend]   99:                0x0 - <unknown>
[backend] thread 'tokio-runtime-worker' panicked at apps/backend/src/providers/tmdb.rs:1291:57:
[backend] called `Result::unwrap()` on an `Err` value: An error occured while creating a new object: Cannot assign requested address (os error 99)
[backend]
[backend] Stack backtrace:
[backend]    4: <surf::request_builder::RequestBuilder as core::future::future::Future>::poll::{{closure}}
[backend]    5: <surf::request_builder::RequestBuilder as core::future::future::Future>::poll
[backend]    6: ryot::providers::tmdb::get_client_config::{{closure}}
[backend]   43:     0x5600e14b5f86 - <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll::h9ec2442ca2c212ec
[backend]   44:     0x5600e14b40d6 - <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll::h537da32da1df380b
  45:     0x5600e1f5c149 - <tower::util::map_response::MapResponseFuture<F,N> as core::future::future::Future>::poll::h1524d25d2f967184
[backend]   46:     0x5600e1707d62 - <tower::util::oneshot::Oneshot<S,Req> as core::future::future::Future>::poll::hb3c2c4cc5647008c
[backend]   49:     0x5600e14b40d6 - <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll::h537da32da1df380b
[backend]   50:     0x5600e1f5c149 - <tower::util::map_response::MapResponseFuture<F,N> as core::future::future::Future>::poll::h1524d25d2f967184
[backend]   51:     0x5600e1707d62 - <tower::util::oneshot::Oneshot<S,Req> as core::future::future::Future>::poll::hb3c2c4cc5647008c
  52:     0x5600e1f6e032 - <tower_http::trace::future::ResponseFuture<Fut,C,OnResponseT,OnBodyChunkT,OnEosT,OnFailureT> as core::future::future::Future>::poll::h9c59ea189d9099f5
[frontend] ClientError: GraphQL Error (Code: 500): {"response":{"status":500,"headers":{}},"request":{"query":"query MetadataSearch($input: MetadataSearchInput!) {\n  metadataSearch(input: $input) {\n    details {\n      total\n      nextPage\n    }\n    items {\n      databaseId\n      hasInteracted\n      item {\n        identifier\n        title\n        image\n        publishYear\n      }\n    }\n  }\n}","variables":{"input":{"lot":"MOVIE","search":{"page":1,"query":"wind"},"source":"TMDB"}}}}
[frontend]     at runRequest (file:///home/ryot/node_modules/graphql-request/src/legacy/helpers/runRequest.ts:75:12)
[frontend]     at processTicksAndRejections (node:internal/process/task_queues:95:5)
[frontend]     at GraphQLClient.request (file:///home/ryot/node_modules/graphql-request/src/legacy/classes/GraphQLClient.ts:131:22)
[frontend]     at file:///home/ryot/build/server/index.js?t=1718469348000:10663:32
[frontend]       'content-length': '16',
[frontend]       'content-type': 'text/plain; charset=utf-8',
[frontend]       vary: 'origin, access-control-request-method, access-control-request-headers'
[frontend]     }
[frontend]   request: {
[frontend]     query: 'query MetadataSearch($input: MetadataSearchInput!) {\n' +
[frontend]       '      total\n' +
[frontend]       '      nextPage\n' +
[frontend]       '    items {\n' +
[frontend]       '      databaseId\n' +
[frontend]       '      item {\n' +
[frontend]       '        identifier\n' +
[frontend] GET /media/search/movie.data?query=wind&_routes=root%2Croutes%2F_dashboard.media.%24action.%24lot 200 - - 127606.817 ms
IgnisDa commented 4 months ago

Seems to be working fine on mine and the demo instance. Does this happen with other movies? What about shows/video games?

Please share your docker compose file.

theggs commented 4 months ago

here is the docker compose file

services:
  ryot-db:
    image: postgres:16-alpine # at-least version 15 is required
    restart: unless-stopped
    volumes:
      - /volume1/docker/ryot/data:/var/lib/postgresql/data
    environment:
      - POSTGRES_PASSWORD=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_DB=postgres
    container_name: ryot-db

  ryot:
    image: ignisda/ryot:v6.2.0 # or ignisda/ryot:latest for the community version
    environment:
      - DATABASE_URL=postgres://postgres:postgres@ryot-db:5432/postgres
      # - SERVER_PRO_KEY=<pro_key_issued_to_you> # if using the pro version
      - FRONTEND_INSECURE_COOKIES=true # if running on HTTP
      - RUST_BACKTRACE=full
      - TZ="Asia/Shanghai"
    ports:
      - "8000:8000"
    pull_policy: always
    container_name: ryot
IgnisDa commented 4 months ago

Are you running behind a firewall or have something that prevents Ryot to make requests to external APIs? Ryot uses external APIs (TMDb, Openlibrary, IGDb etc) to get data about media.

You can test this by docker exec -u root -it ryot bash and then doing curl https://api.themoviedb.org/3. You will get an API response like so:

image

theggs commented 4 months ago
# curl https://api.themoviedb.org/3 -vvv
*   Trying 128.121.243.77:443...
*   Trying [2a03:2880:f130:83:face:b00c:0:25de]:443...
* Immediate connect fail for 2a03:2880:f130:83:face:b00c:0:25de: Cannot assign requested address

It seems like a network issue of container in Synology NAS. Let me dig it farther.

theggs commented 4 months ago

I have disabled ipv6 now. -- though I think it is worth to test it because other softwares work fine with it.

The problem still exists. I think yes it is related to something like firewall. Searching for anim works fine.

I try to use a web proxy but it seems it doesn't work.

Here is the way I add proxy configuration: add environment variables, 192.168.3.205:7890 and 7891 is the proxy server:

      - HTTPS_PROXY=http://192.168.3.205:7890 
      - HTTP_PROXY=http://192.168.3.205:7890 
      - ALL_PROXY=socks5://192.168.3.205:7891

It works on every other software like Jellyfin, Plex etc. But seems doesn't effect anything in ryot.

curl in container env after adding proxy:

curl https://api.themoviedb.org/3 -vvv
* Uses proxy env variable HTTPS_PROXY == 'http://192.168.3.205:7890'
*   Trying 192.168.3.205:7890...
* Connected to 192.168.3.205 (192.168.3.205) port 7890 (#0)
* allocate connect buffer
* Establish HTTP proxy tunnel to api.themoviedb.org:443
> CONNECT api.themoviedb.org:443 HTTP/1.1
> Host: api.themoviedb.org:443
> User-Agent: curl/7.88.1
> Proxy-Connection: Keep-Alive
>
< HTTP/1.1 200 Connection established
<
* CONNECT phase completed
* CONNECT tunnel established, response 200
* ALPN: offers h2,http/1.1
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=*.themoviedb.org
*  start date: Aug 20 00:00:00 2023 GMT
*  expire date: Sep 17 23:59:59 2024 GMT
*  subjectAltName: host "api.themoviedb.org" matched cert's "*.themoviedb.org"
*  issuer: C=US; O=Amazon; CN=Amazon RSA 2048 M03
*  SSL certificate verify ok.
* using HTTP/2
* h2h3 [:method: GET]
* h2h3 [:path: /3]
* h2h3 [:scheme: https]
* h2h3 [:authority: api.themoviedb.org]
* h2h3 [user-agent: curl/7.88.1]
* h2h3 [accept: */*]
* Using Stream ID: 1 (easy handle 0x555fa1762c80)
> GET /3 HTTP/2
> Host: api.themoviedb.org
> user-agent: curl/7.88.1
> accept: */*
>
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
< HTTP/2 204
< date: Mon, 17 Jun 2024 06:01:56 GMT
< server: openresty
< x-cache: Miss from cloudfront
< via: 1.1 1a14b40ef6c4ba4b405703e2217e79c6.cloudfront.net (CloudFront)
< x-amz-cf-pop: NRT20-P1
< alt-svc: h3=":443"; ma=86400
< x-amz-cf-id: 3RRjMXlGHtaTgzlEl2zPRiZOnB6AAEym17Jx319kzwxIQYI2DNUDaQ==
< vary: Origin
<
* Connection #0 to host 192.168.3.205 left intact
IgnisDa commented 4 months ago

Honestly I have no idea how to fix this issue. I do not use proxies on my network.

Are you aware of any Rust softwares that work fine on your server?

theggs commented 4 months ago

No, I don't have other Rust softwares running in a container. Let me see if I can find out something when I have time.

theggs commented 4 months ago

It seems surf is used as the http client of providers. surf don't support to use *_proxy for http proxy https://github.com/http-rs/surf/issues/114 and it stopped activing 2 years ago..

IgnisDa commented 4 months ago

Hmm that's fair. I will swap out surf for reqwuest. Thanks for debugging.

IgnisDa commented 4 months ago

Blocked by https://github.com/seanmonstar/reqwest/pull/1620

IgnisDa commented 4 months ago

@theggs Released with v6.2.3. Please test and LMK if the issue is fixed.

theggs commented 4 months ago

@IgnisDa It works

IgnisDa commented 4 months ago

Awesome!