mirror of
https://github.com/curl/curl.git
synced 2024-12-09 06:30:06 +08:00
3a499099af
proved how PUT and POST with a redirect could lead to a "hang" due to the data stream not being rewound properly when it had to in order to get sent properly (again) to the subsequent URL. This is now fixed and these test cases are no longer disabled.
119 lines
2.0 KiB
Plaintext
119 lines
2.0 KiB
Plaintext
<testcase>
|
|
<info>
|
|
<keywords>
|
|
HTTP
|
|
HTTP PUT
|
|
followlocation
|
|
</keywords>
|
|
|
|
</info>
|
|
# Server-side
|
|
<reply>
|
|
<data>
|
|
HTTP/1.1 301 Redirect swsclose
|
|
Date: Thu, 29 Jul 2008 14:49:00 GMT
|
|
Server: test-server/fake
|
|
Location: data/10510002.txt?coolsite=yes
|
|
Content-Length: 0
|
|
Connection: close
|
|
|
|
</data>
|
|
<data2>
|
|
HTTP/1.1 100 Continue
|
|
|
|
HTTP/1.1 200 Followed here fine swsclose
|
|
Date: Thu, 29 Jul 2008 14:49:00 GMT
|
|
Server: test-server/fake
|
|
Content-Length: 51
|
|
|
|
If this is received, the location following worked
|
|
</data2>
|
|
<datacheck>
|
|
HTTP/1.1 301 Redirect swsclose
|
|
Date: Thu, 29 Jul 2008 14:49:00 GMT
|
|
Server: test-server/fake
|
|
Location: data/10510002.txt?coolsite=yes
|
|
Content-Length: 0
|
|
Connection: close
|
|
|
|
HTTP/1.1 100 Continue
|
|
|
|
HTTP/1.1 200 Followed here fine swsclose
|
|
Date: Thu, 29 Jul 2008 14:49:00 GMT
|
|
Server: test-server/fake
|
|
Content-Length: 51
|
|
|
|
If this is received, the location following worked
|
|
</datacheck>
|
|
</reply>
|
|
|
|
# Client-side
|
|
<client>
|
|
<server>
|
|
http
|
|
</server>
|
|
<name>
|
|
HTTP PUT with Location: following
|
|
</name>
|
|
<command>
|
|
http://%HOSTIP:%HTTPPORT/want/1051 -L -T log/test1051.txt
|
|
</command>
|
|
<file name="log/test1051.txt">
|
|
Weird
|
|
file
|
|
to
|
|
upload
|
|
for
|
|
testing
|
|
the
|
|
PUT
|
|
feature
|
|
</file>
|
|
</client>
|
|
|
|
# Verify data after the test has been "shot"
|
|
<verify>
|
|
<strip>
|
|
^User-Agent:.*
|
|
</strip>
|
|
|
|
# The primary reason libcurl sends the data part twice in this test is that
|
|
# the test HTTP server is blocking until it has read the entire request,
|
|
# including the full request-body before it responds. So in this test the
|
|
# server says 301 and 100 _after_ the entire PUT body has been sent.
|
|
|
|
<protocol>
|
|
PUT /want/1051 HTTP/1.1
|
|
Host: %HOSTIP:%HTTPPORT
|
|
Accept: */*
|
|
Content-Length: 78
|
|
Expect: 100-continue
|
|
|
|
Weird
|
|
file
|
|
to
|
|
upload
|
|
for
|
|
testing
|
|
the
|
|
PUT
|
|
feature
|
|
PUT /want/data/10510002.txt?coolsite=yes HTTP/1.1
|
|
Host: %HOSTIP:%HTTPPORT
|
|
Accept: */*
|
|
Content-Length: 78
|
|
Expect: 100-continue
|
|
|
|
Weird
|
|
file
|
|
to
|
|
upload
|
|
for
|
|
testing
|
|
the
|
|
PUT
|
|
feature
|
|
</protocol>
|
|
</verify>
|
|
</testcase>
|