hyper: drop support

lib : remove all hyper code
configure: stop detecting hyper
docs: no more mention of hyper
tests: mo more special-handling of hyper builds
CI: no jobs using hyper

Closes #15120
This commit is contained in:
Daniel Stenberg 2024-12-21 11:33:05 +01:00
parent 46093d9e0e
commit fc3e1cbc50
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2
93 changed files with 118 additions and 2546 deletions

View file

@ -208,9 +208,6 @@ together as a single identifier. Most keywords are only there to provide a way
for users to skip certain classes of tests, if desired, but a few are treated
specially by the test harness or build system.
When using curl built with Hyper, the keywords must include `HTTP` or `HTTPS`
for 'hyper mode' to kick in and make line ending checks work for tests.
When running a unit test and the keywords include `unittest`, the `<tool>`
section can be left empty to use the standard unit test tool name `unitN` where
`N` is the test number.
@ -447,7 +444,6 @@ Features testable here are:
- `http/2`
- `http/3`
- `HTTPS-proxy`
- `hyper`
- `IDN`
- `IPv6`
- `Kerberos`

View file

@ -54,38 +54,6 @@
# https://github.com/curl/curl/issues/380
1801
#
#
# Tests that are disabled here for Hyper are SUPPOSED to work but
# still need adjustments in tests or code. Tests that cannot be
# fixed for hyper should be adjusted for it in the test file.
#
# hyper support remains EXPERIMENTAL as long as there's a test number
# listed below
#
# Several tests fail due to hyper's lack of trailers support: 266, 1417, 1540,
# 1591, 1943. See https://github.com/hyperium/hyper/issues/2699 for details.
%if hyper
266
477
500
579
587
# 1021 re-added here due to flakiness
1021
1060
1417
1460
1533
1540
1591
1598
1943
2301
2302
2305
# response body seem not to be handled by hyper
2307
%endif
2043
# The CRL test doesn't work with wolfSSL
%if wolfssl

View file

@ -63,11 +63,7 @@ Accept: */*
Transfer-Encoding: chunked
Expect: 100-continue
%if hyper
7A
%else
7a
%endif
This is data we upload with PUT
it comes from stdin so MUST be sent
with chunked encoding

View file

@ -57,11 +57,7 @@ Accept: */*
Transfer-Encoding: chunked
Expect: 100-continue
%if hyper
7A
%else
7a
%endif
This is data we upload with PUT
it comes from stdin so MUST be sent
with chunked encoding

View file

@ -24,10 +24,8 @@ bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
cccccccccccccccccccccccccccccccc
0
%if !hyper
chunky-trailer: header data
another-header: yes
%endif
</data>
<datacheck>
@ -37,10 +35,8 @@ Transfer-Encoding: chunked
Connection: mooo
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccccccccc
%if !hyper
chunky-trailer: header data
another-header: yes
%endif
</datacheck>
<servercmd>
writedelay: 10
@ -77,10 +73,8 @@ Server: fakeit/0.9 fakeitbad/1.0
Transfer-Encoding: chunked
Connection: mooo
%if !hyper
chunky-trailer: header data
another-header: yes
%endif
</file>
</verify>

View file

@ -40,10 +40,6 @@ verify
#
# Client-side
<client>
# hyper doesn't support HTTP/0.9
<features>
!hyper
</features>
<server>
http
</server>

View file

@ -40,9 +40,7 @@ One: 1
Two: 2
no-colon
%if !hyper
And A Funny One : wohoo
%endif
User-Agent:
</file>
<command>
@ -59,9 +57,7 @@ Host: %HOSTIP:%HTTPPORT
Accept: */*
One: 1
Two: 2
%if !hyper
And A Funny One : wohoo
%endif
</protocol>
</verify>

View file

@ -22,10 +22,6 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
#
# Client-side
<client>
# hyper doesn't support HTTP/0.9
<features>
!hyper
</features>
<server>
http
</server>

View file

@ -19,10 +19,6 @@ swsclose
#
# Client-side
<client>
# hyper doesn't grok HTTP/0.9
<features>
!hyper
</features>
<server>
http
</server>

View file

@ -19,10 +19,6 @@ swsclose
#
# Client-side
<client>
# hyper doesn't grok HTTP/0.9
<features>
!hyper
</features>
<server>
http
</server>

View file

@ -53,22 +53,14 @@ Accept: */*
<file name="%LOGDIR/out%TESTNUMBER">
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
%if hyper
Server: test-server/ fake folded
%else
Server: test-server/
fake
folded
%endif
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Content-Length: 6
%if hyper
Connection: close
%else
Connection:
close
%endif
</file>
</verify>

View file

@ -83,10 +83,8 @@ Accept: */*
</protocol>
<file name="%LOGDIR/stderr%TESTNUMBER" mode="text">
%if !hyper
* Ignoring Content-Length in CONNECT 200 response
* Ignoring Transfer-Encoding in CONNECT 200 response
%endif
</file>
<stripfile>
s/^.*(?=\* Ignoring (?:Content-Length|Transfer-Encoding) )// or $_ = ''

View file

@ -28,10 +28,8 @@ Funny-head: yesyes
#
# Client-side
<client>
# hyper doesn't support the added crazy header
<features>
Debug
!hyper
</features>
<server>
http

View file

@ -46,11 +46,5 @@ User-Agent: curl/%VERSION
Accept: */*
</protocol>
%if hyper
# curl: (1) Hyper: [6] invalid HTTP header parsed
<errorcode>
1
</errorcode>
%endif
</verify>
</testcase>

View file

@ -53,15 +53,9 @@ User-Agent: curl/%VERSION
Accept: */*
</protocol>
# Hyper curl returns unsupported protocol
# built-in curl returns weird_server_reply
# weird_server_reply
<errorcode>
%if hyper
1
%else
8
%endif
</errorcode>
</verify>
</testcase>

View file

@ -45,14 +45,9 @@ Accept: */*
</protocol>
# Hyper curl returns unsupported protocol
# built-in curl returns weird_server_reply
# weird_server_reply
<errorcode>
%if hyper
1
%else
8
%endif
</errorcode>
</verify>
</testcase>

View file

@ -24,10 +24,8 @@ bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
cccccccccccccccccccccccccccccccc
0
%if !hyper
chunky-trailer: header data
another-header: yes
%endif
</data>
<datacheck>
@ -37,10 +35,8 @@ Transfer-Encoding: chunked, chunked
Connection: mooo
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccccccccc
%if !hyper
chunky-trailer: header data
another-header: yes
%endif
</datacheck>
<servercmd>
writedelay: 10
@ -77,10 +73,8 @@ Server: fakeit/0.9 fakeitbad/1.0
Transfer-Encoding: chunked, chunked
Connection: mooo
%if !hyper
chunky-trailer: header data
another-header: yes
%endif
</file>
</verify>

View file

@ -25,10 +25,8 @@ bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
cccccccccccccccccccccccccccccccc
0
%if !hyper
chunky-trailer: header data
another-header: yes
%endif
</data>
<datacheck>
@ -39,10 +37,8 @@ Transfer-Encoding: chunked
Connection: mooo
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccccccccc
%if !hyper
chunky-trailer: header data
another-header: yes
%endif
</datacheck>
<servercmd>
writedelay: 10
@ -80,10 +76,8 @@ Transfer-Encoding: chunked
Transfer-Encoding: chunked
Connection: mooo
%if !hyper
chunky-trailer: header data
another-header: yes
%endif
</file>
</verify>

View file

@ -48,11 +48,7 @@ Transfer-Encoding: chunked
Trailer: my-super-awesome-trailer, my-other-awesome-trailer
Expect: 100-continue
%if hyper
E
%else
e
%endif
Hello Cloud!
0

View file

@ -19,11 +19,8 @@ Funny-head: yesyes
moooooooooooo
</data>
<datacheck>
%if hyper
%else
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
%endif
</datacheck>
</reply>
@ -51,15 +48,9 @@ User-Agent: curl/%VERSION
Accept: */*
</protocol>
# Hyper curl returns unsupported protocol
# built-in curl returns weird_server_reply
# weird_server_reply
<errorcode>
%if hyper
1
%else
8
%endif
</errorcode>
</verify>
</testcase>

View file

@ -58,13 +58,8 @@ Accept: */*
# curl: (18) transfer closed with outstanding read data remaining
# 18 == CURLE_PARTIAL_FILE
# 56 == CURLE_RECV_ERROR
<errorcode>
%if hyper
56
%else
18
%endif
</errorcode>
</verify>
</testcase>

View file

@ -46,11 +46,7 @@ User-Agent: curl/%VERSION
Accept: */*
Transfer-Encoding: chunked
%if hyper
1E
%else
1e
%endif
just some tiny teeny contents
0

View file

@ -54,14 +54,6 @@ http://%HOSTIP:%HTTPPORT/%TESTNUMBER http://%HOSTIP:%HTTPPORT/%TESTNUMBER0002
#
# Verify data after the test has been "shot"
<verify>
# hyper doesn't like the bad header in the second request
<errorcode>
%if hyper
1
%else
0
%endif
</errorcode>
<protocol>
GET /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT

View file

@ -31,7 +31,6 @@ upgrade
<features>
Debug
ws
!hyper
</features>
<server>
http

Binary file not shown.

View file

@ -26,9 +26,6 @@ muahahaha
#
# Client-side
<client>
<features>
!hyper
</features>
<server>
http
</server>

View file

@ -30,11 +30,7 @@ If this is received, the location following worked
HTTP/1.1 301 This is a weirdo text message swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
%if hyper
Location: /online/1,1795,Welcome,00.html/%TESTNUMBER0002.txt?logout=TRUE
%else
Location: /online/1,1795,Welcome,00.html/%TESTNUMBER0002.txt?logout=TRUE
%endif
Connection: close
HTTP/1.1 200 Followed here fine swsclose

View file

@ -23,9 +23,6 @@ MooMoo
<server>
http
</server>
<features>
!hyper
</features>
<name>
CURLOPT_HTTP200ALIASES
</name>

View file

@ -37,7 +37,6 @@ verify
<client>
<features>
SSL
!hyper
</features>
<server>
https

View file

@ -9,10 +9,6 @@ cookiejar
</info>
# Server-side
#
# The cookies set come in two versions. This is because when curl is built
# with Hyper, the API provides the headers already "sanitized" so we cannot
# compare with the exact server contents unless it too sends the data
# "clean".
<reply>
<data>
@ -23,7 +19,6 @@ Content-Length: 4
Content-Type: text/html
Funny-head: yesyes
Set-Cookie: blankdomain=sure; domain=; path=/
%if !hyper
Set-Cookie: foobar=name; domain=anything.com; path=/ ; secure
Set-Cookie:ismatch=this ; domain=test31.curl; path=/silly/
Set-Cookie:ISMATCH=this ; domain=test31.curl; path=/silly/
@ -73,57 +68,6 @@ Set-Cookie: withspaces= yes within and around ;
Set-Cookie: withspaces2 =before equals;
Set-Cookie: prespace= yes before;
Set-Cookie: securewithspace=after ; secure =
%else
Set-Cookie: foobar=name; domain=anything.com; path=/ ; secure
Set-Cookie: ismatch=this ; domain=test31.curl; path=/silly/
Set-Cookie:ISMATCH=this ; domain=test31.curl; path=/silly/
Set-Cookie: overwrite=this ; domain=test31.curl; path=/overwrite/
Set-Cookie: overwrite=this2 ; domain=test31.curl; path=/overwrite
Set-Cookie: sec1value=secure1 ; domain=test31.curl; path=/secure1/ ; secure
Set-Cookie: sec2value=secure2 ; domain=test31.curl; path=/secure2/ ; secure=
Set-Cookie: sec3value=secure3 ; domain=test31.curl; path=/secure3/ ; secure=
Set-Cookie: sec4value=secure4 ; secure=; domain=test31.curl; path=/secure4/ ;
Set-Cookie: sec5value=secure5 ; secure; domain=test31.curl; path=/secure5/ ;
Set-Cookie: sec6value=secure6 ; secure ; domain=test31.curl; path=/secure6/ ;
Set-Cookie: sec7value=secure7 ; secure ; domain=test31.curl; path=/secure7/ ;
Set-Cookie: sec8value=secure8 ; secure= ; domain=test31.curl; path=/secure8/ ;
Set-Cookie: secure=very1 ; secure=; domain=test31.curl; path=/secure9/;
Set-Cookie: httpo1=value1 ; domain=test31.curl; path=/p1/; httponly
Set-Cookie: httpo2=value2 ; domain=test31.curl; path=/p2/; httponly=
Set-Cookie: httpo3=value3 ; httponly; domain=test31.curl; path=/p3/;
Set-Cookie: httpo4=value4 ; httponly=; domain=test31.curl; path=/p4/;
Set-Cookie: httponly=myvalue1 ; domain=test31.curl; path=/p4/; httponly
Set-Cookie: httpandsec=myvalue2 ; domain=test31.curl; path=/p4/; httponly; secure
Set-Cookie: httpandsec2=myvalue3; domain=test31.curl; path=/p4/; httponly=; secure
Set-Cookie: httpandsec3=myvalue4 ; domain=test31.curl; path=/p4/; httponly; secure=
Set-Cookie: httpandsec4=myvalue5 ; domain=test31.curl; path=/p4/; httponly=; secure=
Set-Cookie: httpandsec5=myvalue6 ; domain=test31.curl; path=/p4/; secure; httponly=
Set-Cookie: httpandsec6=myvalue7 ; domain=test31.curl; path=/p4/; secure=; httponly=
Set-Cookie: httpandsec7=myvalue8 ; domain=test31.curl; path=/p4/; secure; httponly
Set-Cookie: httpandsec8=myvalue9; domain=test31.curl; path=/p4/; secure=; httponly
Set-Cookie: partmatch=present; domain=test31.curl ; path=/;
Set-Cookie: eat=this; domain=moo.foo.moo;
Set-Cookie: eat=this-too; domain=.foo.moo;
Set-Cookie: nodomainnovalue
%if large-time
Set-Cookie: nodomain=value; expires=Fri Feb 13 11:56:27 GMT 2525
Set-Cookie: novalue; domain=reallysilly
Set-Cookie: test=yes; domain=foo.com; expires=Sat Feb 2 11:56:27 GMT 2525
Set-Cookie: test2=yes; domain=se; expires=Sat Feb 2 11:56:27 GMT 2525
%else
Set-Cookie: nodomain=value; expires=Fri Feb 13 11:56:27 GMT 2037
Set-Cookie: novalue; domain=reallysilly
Set-Cookie: test=yes; domain=foo.com; expires=Sat Feb 2 11:56:27 GMT 2030
Set-Cookie: test2=yes; domain=se; expires=Sat Feb 2 11:56:27 GMT 2030
%endif
Set-Cookie: magic=yessir; path=/silly/; HttpOnly
Set-Cookie: blexp=yesyes; domain=test31.curl; domain=test31.curl; expiry=totally bad;
Set-Cookie: partialip=nono; domain=.0.0.1;
Set-Cookie: withspaces= yes within and around ;
Set-Cookie: withspaces2 =before equals;
Set-Cookie: prespace= yes before;
Set-Cookie: securewithspace=after ; secure =
%endif
boo
</data>

View file

@ -39,9 +39,6 @@ line 1
#
# Client-side
<client>
<features>
!hyper
</features>
<server>
http
</server>

View file

@ -40,14 +40,10 @@ http://%HOSTIP:%HTTPPORT/%TESTNUMBER -o %LOGDIR/save-%TESTNUMBER --remove-on-err
</client>
#
# Verify data after the test has been "shot". hyper doesn't do error 18
# Verify data after the test has been "shot"
<verify>
<errorcode>
%if hyper
56
%else
18
%endif
</errorcode>
<protocol>
GET /%TESTNUMBER HTTP/1.1

View file

@ -43,14 +43,10 @@ http://%HOSTIP:%HTTPPORT/%TESTNUMBER -o %LOGDIR/save --remove-on-error --no-clob
</client>
#
# Verify data after the test has been "shot". hyper doesn't do error 18
# Verify data after the test has been "shot".
<verify>
<errorcode>
%if hyper
56
%else
18
%endif
</errorcode>
<protocol>
GET /%TESTNUMBER HTTP/1.1

View file

@ -18,11 +18,7 @@ Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
%if hyper
Content-Length: 3689348814741910323
%else
Content-Length: 36893488147419103232
%endif
Connection: close
Content-Type: text/html
Funny-head: yesyes

View file

@ -44,11 +44,7 @@ http://%HOSTIP:%HTTPPORT/%TESTNUMBER
# Verify data after the test has been "shot"
<verify>
<errorcode>
%if hyper
1
%else
8
%endif
</errorcode>
<protocol>
GET /%TESTNUMBER HTTP/1.1

View file

@ -49,12 +49,5 @@ User-Agent: curl/%VERSION
Accept: */*
</protocol>
# hyper cannot work with too-large content-length
%if hyper
<errorcode>
1
</errorcode>
%endif
</verify>
</testcase>

View file

@ -54,11 +54,7 @@ Accept: */*
</protocol>
<errorcode>
%if hyper
1
%else
8
%endif
</errorcode>
</verify>
</testcase>

View file

@ -26,11 +26,7 @@ body
</data2>
<datacheck>
HTTP/1.1 302 OK swsclose
%if !hyper
Location: ../moo.html/?name=d a niel&testcase=/%TESTNUMBER0002
%else
Location: ../moo.html/?name=d a niel&testcase=/%TESTNUMBER0002
%endif
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

View file

@ -19,11 +19,8 @@ Funny-head: yesyes
moooooooooooo
</data>
<datacheck>
%if hyper
%else
HTTP/1.1 200 OK swsclose
Date: Tue, 09 Nov 2010 14:49:00 GMT
%endif
</datacheck>
</reply>
@ -52,14 +49,9 @@ Accept: */*
</protocol>
# Hyper curl returns unsupported protocol
# built-in curl returns weird_server_reply
<errorcode>
%if hyper
1
%else
8
%endif
</errorcode>
</verify>
</testcase>

View file

@ -26,11 +26,7 @@ body
</data2>
<datacheck>
HTTP/1.1 302 OK swsclose
%if !hyper
Location: ../m o o.html/%TESTNUMBER0002
%else
Location: ../m o o.html/%TESTNUMBER0002
%endif
Date: Tue, 09 Nov 2010 14:49:00 GMT
Connection: close

View file

@ -28,9 +28,6 @@ Funny-head: yesyes
#
# Client-side
<client>
<features>
!hyper
</features>
<server>
http
</server>

View file

@ -49,14 +49,8 @@ Accept: */*
</protocol>
# curl: (56) Too large response headers: 307215 > 307200
# hyper returns a generic error that libcurl converts to an even more
# generic error
<errorcode>
%if hyper
1
%else
56
%endif
</errorcode>
</verify>
</testcase>

View file

@ -43,14 +43,8 @@ http://%HOSTIP:%HTTPPORT/%TESTNUMBER --max-redirs 400 --location
# Verify data after the test has been "shot"
<verify>
# curl: (56) Too large response headers: 6144086 > 6144000
# hyper returns a generic error that libcurl converts to an even more
# generic error
<errorcode>
%if hyper
1
%else
56
%endif
</errorcode>
</verify>
</testcase>

View file

@ -56,11 +56,7 @@ one
two
5
three
%if hyper
1D
%else
1d
%endif
and a final longer crap: four
0

View file

@ -52,11 +52,7 @@ Accept: */*
Transfer-Encoding: chunked
Content-Type: application/x-www-form-urlencoded
%if hyper
C
%else
c
%endif
we post this
0

View file

@ -100,11 +100,7 @@ one
two
5
three
%if hyper
1D
%else
1d
%endif
and a final longer crap: four
0

View file

@ -43,9 +43,7 @@ Host: %HOSTIP:%HTTPPORT
User-Agent: curl/%VERSION
Accept: */*
Transfer-Encoding: chunked
%if !hyper
Content-Length: 1
%endif
Expect: 100-continue
13

View file

@ -76,11 +76,7 @@ Transfer-Encoding: chunked
Content-Type: multipart/form-data; boundary=----------------------------
Expect: 100-continue
%if hyper
7C
%else
7c
%endif
------------------------------
Content-Disposition: form-data; name="sendfile"; filename="postit2.c"
@ -96,11 +92,7 @@ y
1
%if hyper
6B
%else
6b
%endif
------------------------------
Content-Disposition: form-data; name="callbackdata"
@ -119,11 +111,7 @@ y
1
%if hyper
1B2
%else
1b2
%endif
------------------------------
Content-Disposition: form-data; name="filename"
@ -149,11 +137,7 @@ Transfer-Encoding: chunked
Content-Type: multipart/form-data; boundary=----------------------------
Expect: 100-continue
%if hyper
8A
%else
8a
%endif
------------------------------
Content-Disposition: form-data; name="sendfile alternative"; filename="file name 2"
@ -169,11 +153,7 @@ y
1
%if hyper
6B
%else
6b
%endif
------------------------------
Content-Disposition: form-data; name="callbackdata"
@ -192,11 +172,7 @@ y
1
%if hyper
1B2
%else
1b2
%endif
------------------------------
Content-Disposition: form-data; name="filename"

View file

@ -104,11 +104,7 @@ Content-Disposition: attachment; filename="test%TESTNUMBER.filedata"
Content-Type: text/whatever
%if hyper
AB
%else
ab
%endif
This is data from a file.
------------------------------
@ -116,11 +112,7 @@ Content-Disposition: attachment; filename="test%TESTNUMBER.filedata"
Content-Type: text/whatever
%if hyper
BB
%else
bb
%endif
This is data from a file.
--------------------------------
@ -129,11 +121,7 @@ This is data from a file.
Content-Disposition: form-data; name="filecontents"
%if hyper
11B
%else
11b
%endif
This is data from a file.
------------------------------
@ -188,11 +176,7 @@ Content-Disposition: attachment; filename="test%TESTNUMBER.filedata"
Content-Type: text/whatever
%if hyper
AB
%else
ab
%endif
This is data from a file.
------------------------------
@ -200,11 +184,7 @@ Content-Disposition: attachment; filename="test%TESTNUMBER.filedata"
Content-Type: text/whatever
%if hyper
BB
%else
bb
%endif
This is data from a file.
--------------------------------
@ -213,11 +193,7 @@ This is data from a file.
Content-Disposition: form-data; name="filecontents"
%if hyper
11B
%else
11b
%endif
This is data from a file.
------------------------------

View file

@ -84,11 +84,7 @@ Transfer-Encoding: chunked
Content-Type: multipart/form-data; boundary=----------------------------
Expect: 100-continue
%if hyper
1C1
%else
1c1
%endif
------------------------------
Content-Disposition: form-data; name="greeting"
Content-Type: application/X-Greeting

View file

@ -15,9 +15,6 @@ no headers swsclose
# Client-side
<client>
<features>
!hyper
</features>
<server>
http
</server>

View file

@ -77,11 +77,7 @@ Content-Transfer-Encoding: base64
4
ZHVt
%if hyper
3A
%else
3a
%endif
bXk=
--------------------------------

View file

@ -72,11 +72,7 @@ Transfer-Encoding: chunked
Content-Type: multipart/form-data; boundary=----------------------------
Expect: 100-continue
%if hyper
CD
%else
cd
%endif
------------------------------
Content-Disposition: form-data; name="field1"
@ -94,11 +90,7 @@ Content-Disposition: form-data; name="field3"; filename="file%TESTNUMBER.txt"
Content-Type: text/plain
%if hyper
4F
%else
4f
%endif
This is data from a file
--------------------------------

View file

@ -450,15 +450,14 @@ class ScoreCard:
p['name'] = 'h2'
if not self.env.have_h2_curl():
raise ScoreCardError('curl does not support HTTP/2')
for lib in ['nghttp2', 'hyper']:
for lib in ['nghttp2']:
if self.env.curl_uses_lib(lib):
p['implementation'] = lib
break
elif self.protocol == 'h1' or self.protocol == 'http/1.1':
proto = 'http/1.1'
p['name'] = proto
p['implementation'] = 'hyper' if self.env.curl_uses_lib('hyper')\
else 'native'
p['implementation'] = 'native'
else:
raise ScoreCardError(f"unknown protocol: {self.protocol}")

View file

@ -356,8 +356,7 @@ sub prepro {
# The processor does CRLF replacements in the <data*> sections if
# necessary since those parts might be read by separate servers.
if($s =~ /^ *<data(.*)\>/) {
if($1 =~ /crlf="yes"/ ||
($feature{"hyper"} && ($keywords{"HTTP"} || $keywords{"HTTPS"}))) {
if($1 =~ /crlf="yes"/) {
$data_crlf = 1;
}
}

View file

@ -591,11 +591,8 @@ sub checksystemfeatures {
$feature{"c-ares"} = 1;
$resolver="c-ares";
}
if ($libcurl =~ /Hyper/i) {
$feature{"hyper"} = 1;
}
if ($libcurl =~ /nghttp2/i) {
# nghttp2 supports h2c, hyper does not
# nghttp2 supports h2c
$feature{"h2c"} = 1;
}
if ($libcurl =~ /AppleIDN/) {
@ -1286,9 +1283,7 @@ sub singletest_check {
chomp($validstdout[-1]);
}
if($hash{'crlf'} ||
($feature{"hyper"} && ($keywords{"HTTP"}
|| $keywords{"HTTPS"}))) {
if($hash{'crlf'}) {
subnewlines(0, \$_) for @validstdout;
}
@ -1326,12 +1321,6 @@ sub singletest_check {
# get the mode attribute
my $filemode=$hash{'mode'};
if($filemode && ($filemode eq "text") && $feature{"hyper"}) {
# text mode check in hyper-mode. Sometimes necessary if the stderr
# data *looks* like HTTP and thus has gotten CRLF newlines
# mistakenly
normalize_text(\@validstderr);
}
if($filemode && ($filemode eq "text")) {
normalize_text(\@validstderr);
normalize_text(\@actual);
@ -1434,9 +1423,7 @@ sub singletest_check {
# of the datacheck
chomp($replycheckpart[-1]);
}
if($replycheckpartattr{'crlf'} ||
($feature{"hyper"} && ($keywords{"HTTP"}
|| $keywords{"HTTPS"}))) {
if($replycheckpartattr{'crlf'}) {
subnewlines(0, \$_) for @replycheckpart;
}
push(@reply, @replycheckpart);
@ -1457,9 +1444,7 @@ sub singletest_check {
if($filemode && ($filemode eq "text")) {
normalize_text(\@reply);
}
if($replyattr{'crlf'} ||
($feature{"hyper"} && ($keywords{"HTTP"}
|| $keywords{"HTTPS"}))) {
if($replyattr{'crlf'}) {
subnewlines(0, \$_) for @reply;
}
}
@ -1552,8 +1537,7 @@ sub singletest_check {
}
}
if($hash{'crlf'} ||
($feature{"hyper"} && ($keywords{"HTTP"} || $keywords{"HTTPS"}))) {
if($hash{'crlf'}) {
subnewlines(0, \$_) for @proxyprot;
}
@ -1611,9 +1595,7 @@ sub singletest_check {
normalize_text(\@outfile);
normalize_text(\@generated);
}
if($hash{'crlf'} ||
($feature{"hyper"} && ($keywords{"HTTP"}
|| $keywords{"HTTPS"}))) {
if($hash{'crlf'}) {
subnewlines(0, \$_) for @outfile;
}

View file

@ -150,13 +150,6 @@ sub subnewlines {
return;
}
# When curl is built with Hyper, it gets all response headers delivered as
# name/value pairs and curl "invents" the newlines when it saves the
# headers. Therefore, curl will always save headers with CRLF newlines
# when built to use Hyper. By making sure we deliver all tests using CRLF
# as well, all test comparisons will survive without knowing about this
# little quirk.
if(($$thing =~ /^HTTP\/(1.1|1.0|2|3) [1-5][^\x0d]*\z/) ||
($$thing =~ /^(GET|POST|PUT|DELETE) \S+ HTTP\/\d+(\.\d+)?/) ||
(($$thing =~ /^[a-z0-9_-]+: [^\x0d]*\z/i) &&

View file

@ -1,12 +1,3 @@
{
zstd_decompression-1.3.3-on-Ubuntu-18.04_with_hyper
Memcheck:Cond
fun:ZSTD_decompressStream
fun:zstd_unencode_write
fun:Curl_unencode_write
fun:hyper_body_chunk
}
{
zstd_decompression-1.3.3-on-Ubuntu-18.04
Memcheck:Cond