mirror of
https://github.com/curl/curl.git
synced 2024-12-27 06:59:43 +08:00
fc9e0d2249
when using CURL_AUTH_ANY" (http://curl.haxx.se/bug/view.cgi?id=1945240). The problem was that when libcurl rewound a stream meant for upload when it would prepare for a second request, it could accidentally continue the sending of the rewound data on the first request instead of on the second. Ben also provided test case 1030 that verifies this fix.
110 lines
2.4 KiB
Plaintext
110 lines
2.4 KiB
Plaintext
<testcase>
|
|
<info>
|
|
<keywords>
|
|
HTTP
|
|
HTTP PUT
|
|
HTTP Digest auth
|
|
--anyauth
|
|
</keywords>
|
|
</info>
|
|
|
|
# Server-side
|
|
<reply>
|
|
<data>
|
|
HTTP/1.1 401 Authorization Required
|
|
Server: Apache/1.3.27 (Darwin) PHP/4.1.2
|
|
WWW-Authenticate: Blackmagic realm="gimme all yer s3cr3ts"
|
|
WWW-Authenticate: Basic realm="gimme all yer s3cr3ts"
|
|
WWW-Authenticate: Digest realm="gimme all yer s3cr3ts", nonce="11223344"
|
|
Content-Length: 26
|
|
Content-Type: text/html; charset=iso-8859-1
|
|
|
|
This is not the real page
|
|
</data>
|
|
|
|
# This is supposed to be returned when the server gets a
|
|
# Authorization: Digest line passed-in from the client
|
|
<data1000>
|
|
HTTP/1.1 200 OK
|
|
Server: Apache/1.3.27 (Darwin) PHP/4.1.2
|
|
Content-Type: text/html; charset=iso-8859-1
|
|
Content-Length: 23
|
|
Connection: close
|
|
|
|
This IS the real page!
|
|
</data1000>
|
|
|
|
<datacheck>
|
|
HTTP/1.1 401 Authorization Required
|
|
Server: Apache/1.3.27 (Darwin) PHP/4.1.2
|
|
WWW-Authenticate: Blackmagic realm="gimme all yer s3cr3ts"
|
|
WWW-Authenticate: Basic realm="gimme all yer s3cr3ts"
|
|
WWW-Authenticate: Digest realm="gimme all yer s3cr3ts", nonce="11223344"
|
|
Content-Length: 26
|
|
Content-Type: text/html; charset=iso-8859-1
|
|
|
|
HTTP/1.1 200 OK
|
|
Server: Apache/1.3.27 (Darwin) PHP/4.1.2
|
|
Content-Type: text/html; charset=iso-8859-1
|
|
Content-Length: 23
|
|
Connection: close
|
|
|
|
This IS the real page!
|
|
</datacheck>
|
|
|
|
</reply>
|
|
|
|
# Client-side
|
|
<client>
|
|
<server>
|
|
http
|
|
</server>
|
|
<features>
|
|
crypto
|
|
</features>
|
|
<name>
|
|
HTTP PUT with --anyauth authorization (picking Digest)
|
|
</name>
|
|
<command>
|
|
http://%HOSTIP:%HTTPPORT/1030 -T log/put1030 -u testuser:testpass --anyauth
|
|
</command>
|
|
<file name="log/put1030">
|
|
This is data we upload with PUT
|
|
a second line
|
|
line three
|
|
four is the number of lines
|
|
</file>
|
|
</client>
|
|
|
|
# Verify data after the test has been "shot"
|
|
<verify>
|
|
<strip>
|
|
^User-Agent:.*
|
|
</strip>
|
|
<protocol>
|
|
PUT /1030 HTTP/1.1
|
|
Host: %HOSTIP:%HTTPPORT
|
|
Accept: */*
|
|
Content-Length: 85
|
|
Expect: 100-continue
|
|
|
|
This is data we upload with PUT
|
|
a second line
|
|
line three
|
|
four is the number of lines
|
|
PUT /1030 HTTP/1.1
|
|
Authorization: Digest username="testuser", realm="gimme all yer s3cr3ts", nonce="11223344", uri="/1030", response="01cb59db1ddaac246b072d5f5f0716d9"
|
|
User-Agent: curl/7.10.5 (i686-pc-linux-gnu) libcurl/7.10.5 OpenSSL/0.9.7a ipv6 zlib/1.1.3
|
|
Host: %HOSTIP:%HTTPPORT
|
|
Accept: */*
|
|
Content-Length: 85
|
|
Expect: 100-continue
|
|
|
|
This is data we upload with PUT
|
|
a second line
|
|
line three
|
|
four is the number of lines
|
|
</protocol>
|
|
</verify>
|
|
</testcase>
|