Thanks to visit codestin.com
Credit goes to github.com

Skip to content

HTTP/3 / QUIC connection migration doesn't appear to work #7695

@sarthak

Description

@sarthak

I did this

I built and installed curl with QUIC support (ngtcp2 + nghttp3) and openssl following the instructions here.

The experiment I conducted was to disconnect my network connection, and re-connect to a different network while the curl was downloading a file. I forced curl to use http3 via --http3 flag. Precisely these are the flags that I used --insecure --http3 --limit-rate 1M. As QUIC supports connection migration, my expectation was that the curl would be able to automatically re-open the UDP socket on re-connection and resume the download. But, the curl crashes with the error message send() returned -1.

For the QUIC server I am using Nginx with HTTP/3 support, owing to cloudflare/quiche, and I made sure to disable connection timeouts on the server side, I tested it with suspending and resuming curl download for a few seconds (on the same network connection).

I expected the following

Curl resuming download as if nothing happened.

curl/libcurl version

curl 7.70.0-DEV (x86_64-pc-linux-gnu) libcurl/7.70.0-DEV OpenSSL/1.1.1d ngtcp2/0.1.0-DEV nghttp3/0.1.0-DEV
Release-Date: [unreleased]
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: alt-svc AsynchDNS HTTP3 HTTPS-proxy IPv6 Largefile NTLM NTLM_WB SSL TLS-SRP UnixSockets

operating system

Linux 8237d33e6a79 5.4.72-microsoft-standard-WSL2 #1 SMP Wed Oct 28 23:40:43 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions