http-rs / http-rs/surf

How to read response as a continuous stream?

Open
#53 3 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
Rust
Stars
1.5k
Forks
128
PR merge metrics
No merged PRs in 30d

Description

I'm trying to make a GET request where the response is a (slow) continuous stream. However, the response reading results to a core dump.

```
async fn connect_to_server(&mut self) -> Result<()> {
let mut reader = surf::get("http://...[server-address]").await?;

println!("{:?}", reader.status());

let mut buf = [0_u8; 1024];

loop {
let n = reader.read(&mut buf).await?;
println!("Read data {:?} {}", &buf[..16], n);
}

Ok(())
}
```

stdout says:

```
200
Read data [13, 13, 23, ...] 12
Read data [15, 99, 121, ...] 887
Read data [15, 99, 121, ...] 0
thread 'async-task-driver' panicked at 'Receiver::next_message called after `None`', src/libcore/option.rs:1166:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
Aborted (core dumped)
```

Any ideas how to solve this? Here's the relevant part of the backtrace:

```
11: core::option::Option::expect
at /rustc/4cf7673076e6975532213e494dd3f7f9d8c2328e/src/libcore/option.rs:345
12: futures_channel::mpsc::Receiver::next_message
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-channel-preview-0.3.0-alpha.17/src/mpsc/mod.rs:842
13: as futures_core::stream::Stream>::poll_next
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-channel-preview-0.3.0-alpha.17/src/mpsc/mod.rs:912
14: ::poll_read
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/sluice-0.4.1/src/pipe/chunked.rs:83
15: ::poll_read
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/sluice-0.4.1/src/pipe/mod.rs:43
16: ::poll_read
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/chttp-0.5.5/src/body.rs:157
17: as futures_io::if_std::AsyncRead>::poll_read
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-io-preview-0.3.0-alpha.17/src/lib.rs:352
18: ::poll_read
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/surf-1.0.1/src/http_client/mod.rs:83
19: <&mut T as futures_io::if_std::AsyncRead>::poll_read
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-io-preview-0.3.0-alpha.17/src/lib.rs:352
20: ::poll_read
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/surf-1.0.1/src/response.rs:246
21: <&mut T as futures_io::if_std::AsyncRead>::poll_read
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-io-preview-0.3.0-alpha.17/src/lib.rs:352
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.