curl / Mailing Lists / curl-library / Single Mail
Buy commercial curl support from WolfSSL. We help you work out your issues, debug your libcurl applications, use the API, port to new platforms, add new features and more. With a team lead by the curl founder himself.

HTTP3 regression in curl 7.84.0

From: Dmitry Karpov via curl-library <curl-library_at_lists.haxx.se>
Date: Tue, 28 Jun 2022 07:02:39 +0000

Hi All,

I am trying HTTP3 on the released 7.84.0 build with the latest ngtctp2/nghttp3 libraries and I can't make QUIC connection.
For test I just used url: https://curl.se/ which is hosted in nginx with quic support.

My setup (Win32 build) is
libcurl 7.84.0, openssl+quic 1.1.1m, ngtcp2 0.6.0, nghttp3 0.5.0

Everything was OK in 7.83.1 with ngtcp2 0.5.0, nghttp3 0.4.0

The sever returns
    CONNECTION_CLOSE (Transport) Error code: FRAME_ENCODING_ERROR
        Frame Type: CONNECTION_CLOSE (Transport) (0x000000000000001c)
        Error code: FRAME_ENCODING_ERROR (7)
        Frame Type: 9077
        Reason phrase Length: 0
        Reason phrase:

My client seems to send bad Tls data, which Wireshark marks as "Unknown" parts.
Some of that "Unknown" parts contain ALPN stuff:

Here is the Initial QUIC packet info:

Frame 31: 1242 bytes on wire (9936 bits), 1242 bytes captured (9936 bits) on interface \Device\NPF_{53C7C51F-BD6F-499E-BA50-9622EBC92A3E}, id 0
Ethernet II, Src: Dell_8d:c9:3b (34:48:ed:8d:c9:3b), Dst: Netgear_73:88:b4 (44:94:fc:73:88:b4)
Internet Protocol Version 4, Src: 192.168.0.24, Dst: 151.101.129.91
User Datagram Protocol, Src Port: 53368, Dst Port: 443
QUIC IETF
    QUIC Connection information
    [Packet Length: 1200]
    1... .... = Header Form: Long Header (1)
    .1.. .... = Fixed Bit: True
    ..00 .... = Packet Type: Initial (0)
    .... 00.. = Reserved: 0
    .... ..00 = Packet Number Length: 1 bytes (0)
    Version: 1 (0x00000001)
    Destination Connection ID Length: 20
    Destination Connection ID: 0def0c0c9f43ac40b3df8f30051d150c8b15f048
    Source Connection ID Length: 20
    Source Connection ID: 9f1b12f27b2ffd37b80b4236e6836adc1b0c9763
    Token Length: 0
    Length: 1148
    Packet Number: 0
    Payload: c36eb1c65459289d058c19e8d96a24d520f00d62e77cef0a4c887076c613d1b72829be3a...
    CRYPTO
        Frame Type: CRYPTO (0x0000000000000006)
        Offset: 0
        Length: 64
        Crypto Data
        TLSv1.3 Record Layer: Handshake Protocol: Client Hello (fragment)
            Handshake Protocol: Client Hello (fragment)
    <Unknown>
    <Unknown>
    <Unknown>
    <Unknown>
        Frame Type: Unknown (0x0000000000003365)
        [Expert Info (Note/Undecoded): Unknown Frame Type 0x3365]
    PADDING Length: 1
        Frame Type: PADDING (0x0000000000000000)
        [Padding Length: 1]
    STREAM id=0 fin=1 off=0 len=4 dir=Bidirectional origin=Client-initiated
        Frame Type: STREAM (0x000000000000000b)
        Stream ID: 0
        Length: 4
        Stream Data: 03000102
    PADDING Length: 1
        Frame Type: PADDING (0x0000000000000000)
        [Padding Length: 1]
    STREAM id=0 fin=0 off=0 len=10 dir=Bidirectional origin=Client-initiated
        Frame Type: STREAM (0x000000000000000a)
        Stream ID: 0
        Length: 10
        Stream Data: 00080017001d00180019
    PADDING Length: 1
        Frame Type: PADDING (0x0000000000000000)
        [Padding Length: 1]
    <Unknown>
    PADDING Length: 3
        Frame Type: PADDING (0x0000000000000000)
        [Padding Length: 3]
    MAX_DATA
        Frame Type: MAX_DATA (0x0000000000000010)
        Maximum Data: 0
    STREAM id=0 fin=1 off=0 len=9 dir=Bidirectional origin=Client-initiated
        Frame Type: STREAM (0x000000000000000b)
        Stream ID: 0
        Length: 9
        Stream Data: 0568332d3239026833
    PADDING Length: 1
        Frame Type: PADDING (0x0000000000000000)
        [Padding Length: 1]
    STREAMS_BLOCKED (BIDI)
        Frame Type: STREAMS_BLOCKED (BIDI) (0x0000000000000016)
        Stream Limit: 0
    PADDING Length: 2
        Frame Type: PADDING (0x0000000000000000)
        [Padding Length: 2]
    STREAMS_BLOCKED (UNI)
        Frame Type: STREAMS_BLOCKED (UNI) (0x0000000000000017)
        Stream Limit: 0
    PADDING Length: 2
        Frame Type: PADDING (0x0000000000000000)
        [Padding Length: 2]
    STREAM id=0 fin=1 off=30 len=1003 dir=Bidirectional origin=Client-initiated
        Frame Type: STREAM (0x000000000000000d)
        Stream ID: 0
        Offset: 30
        Stream Data: 001c040305030603080708080809080a080b080408050806040105010601002b00030203...

Has anybody stepped on this issue and if there is an easy way to fix it?

Thanks,
Dmitry Karpov


-- 
Unsubscribe: https://lists.haxx.se/listinfo/curl-library
Etiquette:   https://curl.se/mail/etiquette.html
Received on 2022-06-28