ID:               47204
 User updated by:  a...@php.net
 Reported By:      a...@php.net
 Status:           Open
 Bug Type:         Feature/Change Request
 Operating System: Irrelevant
 PHP Version:      5.3
 Assigned To:      srinatar
 New Comment:

While adding PHP-side support for CURLOPT_IOCTLFUNCTION is indeed a
feature request, complete inability for curl extension to handle
redirects / digest authentication when using CURLOPT_INFILE
(CURLOPT_READDATA) looks like a genuine bug to me.

The problem lies with Curl extension registering a custom callback
curl_read() as CURLOPT_READFUNCTION (it handles both reading from a
stream provided as CURLOPT_INFILE and calling PHP callback provided as
CURLOPT_READFUNCTION) but failing to implement custom callback for
rewinding the data, at least for the case when stream is used.


Previous Comments:
------------------------------------------------------------------------

[2009-11-11 20:09:43] s...@php.net

Automatic comment from SVN on behalf of avb
Revision: http://svn.php.net/viewvc/?view=revision&revision=290520
Log: Enabled redirect support in Curl adapter.
Doesn't work *at all* with POST due to PHP bug #47204, workaround
needed.

------------------------------------------------------------------------

[2009-09-24 19:26:54] srina...@php.net

since, this is a feature, this will probably apply only for 5.3
onwards. 

------------------------------------------------------------------------

[2009-09-20 17:31:31] j...@php.net

Recategorized, this is not a bug.

------------------------------------------------------------------------

[2009-09-20 08:47:21] a...@php.net

Marking this as "cURL related" to increase visibility.

------------------------------------------------------------------------

[2009-06-22 16:04:07] felix-php at 7val dot com

This problem not only occurs when negotiating HTTP Auth. It's much 
easier to provoke by posting to a URL that answers with a redirect.

Any valid HTTP redirect (be it 302, 303 or 307) lets curl rewind its 
request body before following the Location header. Thus 
CURLOPT_READFUNCTION is pretty useless for accessing web servers in 
the wild. Therefore I think it's rather a bug than a feature.

Reproduce:
Both examples above with an extra
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
and a URL answering with a redirect.

(Tested with PHP 5.2.9 and curl 7.19.5)


Proposal:
Instead of adding CURLOPT_IOCTLFUNCTION to the PHP extension, this bug

could be fixed by adding the CURLTOP_SEEKFUNCTION functionality. If 
set, curl uses this to rewind the body, too (see Curl_readrewind() in 
transfer.c). But the seek_func callback is also used for resuming 
uploads which might be a nice side effect.

------------------------------------------------------------------------

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/47204

-- 
Edit this bug report at http://bugs.php.net/?id=47204&edit=1

Reply via email to