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
- Contemporary messages sorted: [ by date ] [ by thread ] [ by subject ] [ by author ] [ by messages with attachments ]
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
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.htmlReceived on 2022-06-28