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.
112 lines
1.9 KiB
Plaintext
112 lines
1.9 KiB
Plaintext
<testcase>
|
|
<info>
|
|
<keywords>
|
|
HTTP
|
|
HTTP PUT
|
|
followlocation
|
|
</keywords>
|
|
|
|
</info>
|
|
# Server-side
|
|
<reply>
|
|
<data>
|
|
HTTP/1.0 301 Redirect swsclose
|
|
Date: Thu, 29 Jul 2008 14:49:00 GMT
|
|
Server: test-server/fake
|
|
Location: data/10520002.txt?coolsite=yes
|
|
Content-Length: 0
|
|
Connection: close
|
|
|
|
</data>
|
|
<data2>
|
|
HTTP/1.0 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.0 301 Redirect swsclose
|
|
Date: Thu, 29 Jul 2008 14:49:00 GMT
|
|
Server: test-server/fake
|
|
Location: data/10520002.txt?coolsite=yes
|
|
Content-Length: 0
|
|
Connection: close
|
|
|
|
HTTP/1.0 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 1.0 PUT with Location: following
|
|
</name>
|
|
<command>
|
|
http://%HOSTIP:%HTTPPORT/want/1052 -0 -L -T log/test1052.txt
|
|
</command>
|
|
<file name="log/test1052.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 200 _after_ the entire PUT body has been sent.
|
|
<protocol>
|
|
PUT /want/1052 HTTP/1.0
|
|
Host: %HOSTIP:%HTTPPORT
|
|
Accept: */*
|
|
Content-Length: 78
|
|
|
|
Weird
|
|
file
|
|
to
|
|
upload
|
|
for
|
|
testing
|
|
the
|
|
PUT
|
|
feature
|
|
PUT /want/data/10520002.txt?coolsite=yes HTTP/1.0
|
|
Host: %HOSTIP:%HTTPPORT
|
|
Accept: */*
|
|
Content-Length: 78
|
|
|
|
Weird
|
|
file
|
|
to
|
|
upload
|
|
for
|
|
testing
|
|
the
|
|
PUT
|
|
feature
|
|
</protocol>
|
|
</verify>
|
|
</testcase>
|