Bug #15491 Updated: Curl and PHP_CURL_RETURN wrong behavior
| From: | hans dot petrich at tronic-media dot com | Date: | Sun, 03 Mar 2002 20:18:23 +0000 |
| Subject: | Bug #15491 Updated: Curl and PHP_CURL_RETURN wrong behavior | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-1567@lists.php.net to get a copy of this message | ||
ID: 15491
Updated by: hans.petrich@tronic-media.com
Reported By: hans.petrich@tronic-media.com
Status: Bogus
Bug Type: cURL related
Operating System: Linux 2.4 (RedHat 7.2)
PHP Version: 4.1.1
New Comment:
mhhh...what i mean is:
If CURLOPT_RETURNTRANSFER set to 1 curl_exec() should return the
transfered content instead of printing it out directly (see
http://www.php.net/manual/en/function.curl-setopt.php)
In this case (when CURLOPT_RETURNTRANSFER=1) curl_exec() should return
exactly the transfered content and not the statuscode
Have a look at the example:
<?php
$url = 'http://127.0.0.1/empty_document.html';#Its
an empty html
document
$ch = curl_init($url);
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1);
$content= curl_exec ( $ch);#returns 1, should return nothink
echo "content of $url :$content";
echo "\n";
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 0);
echo "content of $url :";
curl_exec ( $ch);# print out nothink - right
?>
Previous Comments:
------------------------------------------------------------------------
[2002-03-03 11:30:26] sterling@php.net
This is the correct behaviour, it signifies that the request was
successfully made, whether or not the server returns data is not a cURL
thing...
------------------------------------------------------------------------
[2002-02-11 18:51:04] hans.petrich@tronic-media.com
Its not exactly the same bug described in #15307.
Bug #15307 was fixed in the cvs of curl.c (V 1.103)
... i get the last CVS curl.c (V 1.105) the Segfault was fixed but
php
returns 1 (RETURN_TRUE) in such situation.
Cheers
Hans-Jürgen Petrich
------------------------------------------------------------------------
[2002-02-11 18:25:38] jacob@siamesecode.com
This is the same bug I reported in report #15307, though I didn't
provide a fix like Hans did. Way to go!
------------------------------------------------------------------------
[2002-02-10 14:54:09] hans.petrich@tronic-media.com
Hi,
i still working with the PHP's curl functions (PHP 4.1.1) .
When call curl_exec() and CURLOPT_RETURNTRANSFER ist set (to 1) via
curl_opt() - php quit with a Segfault when curl_exec() receive nothink
from
the Server.
After i get the last CVS curl.c (V 1.105) the Segfault was fixed but
php
return 1 (RETURN_TRUE) in such situation.
I have write a small (and perhaps dirty) hack witch will fix this.
Perhaps
the author of curl.c can update curl.c in the CVS to avoid the wrong
return
value
Thank u, PHP is great.
Hans-Juergen Petrich
/* curl.c */
/* {{{ proto bool curl_exec(int ch)
Perform a CURL session */
PHP_FUNCTION(curl_exec)
{
zval **zid;
php_curl *ch;
CURLcode error;
if (ZEND_NUM_ARGS() != 1 ||
zend_get_parameters_ex(1, &zid) == FAILURE) {
WRONG_PARAM_COUNT;
}
ZEND_FETCH_RESOURCE(ch, php_curl *, zid, -1, le_curl_name, le_curl);
error = curl_easy_perform(ch->cp);
if (error != CURLE_OK) {
if (ch->handlers->write->buf.len > 0)
smart_str_free(&ch->handlers->write->buf);
SAVE_CURL_ERROR(ch, error);
RETURN_FALSE;
}
if (ch->handlers->write->method == PHP_CURL_RETURN) {
if (ch->handlers->write->buf.len <= 0)
RETURN_NULL();
if (ch->handlers->write->type != PHP_CURL_BINARY)
smart_str_0(&ch->handlers->write->buf);
RETURN_STRINGL(ch->handlers->write->buf.c,
ch->handlers->write->buf.len, 0);
}
RETURN_TRUE;
}
/* }}} */
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=15491&edit=1